OVH Cloud OVH Cloud

Object excel

2 réponses
Avatar
BoisSeb
J'ai une feuille graphique dans mon classeur. j'alimente=20
mon tableu =E0 partir de vb je souhaite afficher mon=20
graphique avec les donn=E9es de mon tableau. comment puis je=20
faire.

voici le code :
Private Sub BtnExport_Click()
Dim Ep As Variant
Dim rec As Recordset
Dim xlCharts As Chart

Set xlApp =3D New Excel.Application
Set xlBook =3D xlApp.Workbooks.Add
Set xlSheet =3D xlApp.Workbooks(1).Sheets(1)
Set xlCharts =3D xlApp.Workbooks(1).Charts.Add

Dim iRow As Integer ' variable index de la=20
ligne courante
Dim iCol As Integer ' variable index de la=20
colonne courante
=20
Dim strTmpRange As String ' variable temporaire

OuvreExcel =3D 1
=20
Call ExcelSettings 'Definit une feuille par classeur

Set NameSelect =3D CmbNom
Call RecupChaineNomComp
NameSelect =3D Reslec
=20
Set Ep =3D Cmbep

Set rec =3D db.OpenRecordset("SELECT * FROM [RQTNOM]=20
where [Nom] =3D '" & NameSelect & "' and [Epreuves]=3D'" & Ep=20
& "' order by [Date]")
=20
xlSheet.Cells.ClearContents
=20
While rec.EOF =3D False
=20
xcount =3D rec.AbsolutePosition + 1
xlSheet.Activate
DateExport =3D rec("Date")
PerfExport =3D rec("Perf")
=20
MsgCelA =3D NameSelect & " " & Bar
MsgCelB =3D Ep
MsgCelC =3D DateExport
MsgCelD =3D PerfExport
=20
xlSheet.Cells(xcount, 1) =3D Trim(MsgCelA)
xlSheet.Cells(xcount, 2) =3D MsgCelB
xlSheet.Cells(xcount, 3) =3D MsgCelC
xlSheet.Cells(xcount, 4) =3D MsgCelD

rec.MoveNext
=20
Wend
' Ins=E8re deux plages nomm=E9es :
For iRow =3D 1 To xcount
'D=E9finition de la plage de cellules :
'Par la notation RiCi
'(Entrez les 2 lignes suivantes sur une=20
seule ligne)
strTmpRange =3D "Feuil1!R" & iRow & "C" &=20
Format$(1) & ":R" & iRow & "C" & Format$(4)
=20
'Autre m=E9thode : par l'objet objXLsheet et=20
la m=E9thode Range
'(Retirer le caract=E8res de commentaire et=20
entrer les 2 lignes
'suivantes sur une seule ligne)
'strTmpRange =3D objXLsheet.Range
(objXLsheet.Cells(iRow, 1),objXLsheet.Cells
(iRow,'cNumCols)).Address
=20
'D=E9finition du nom de plage
'(Entrez les 2 lignes suivantes sur une=20
seule ligne)
'xlSheet.Parent.Names.Add "range" &=20
Format$(iRow), "=3D" & strTmpRange
=20
Next iRow
=20
'Assigne les plages cr=E9=E9es ci-dessus en=20
tant que s=E9ries individuelles
'du graphique :
For iRow =3D 1 To xcount
=20
xlCharts.Chart.SeriesCollection.Add "Range" & Format$(iRow)
Next iRow


xlApp.Application.Visible =3D True
xlSheet.Visible =3D xlSheetVisible
xlCharts.Visible =3D xlSheetVisible
xlCharts.Name =3D Trim(MsgCelA)
=20
Set xlSheet =3D Nothing
Set xlBook =3D Nothing
Set xlApp =3D Nothing


End Sub

2 réponses

Avatar
www.eztree-msdn.com \(Laurent Jordi\)
SAlut

Tu devrais essayer d'utiliser le controle OLE2 pour ouvrir le fichier excel
depuis ton pg vb

@+

LJ

www.eztree-msdn.com
"BoisSeb" a écrit dans le message de
news:5efd01c42df7$24641f90$
J'ai une feuille graphique dans mon classeur. j'alimente
mon tableu à partir de vb je souhaite afficher mon
graphique avec les données de mon tableau. comment puis je
faire.

voici le code :
Private Sub BtnExport_Click()
Dim Ep As Variant
Dim rec As Recordset
Dim xlCharts As Chart

Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlApp.Workbooks(1).Sheets(1)
Set xlCharts = xlApp.Workbooks(1).Charts.Add

Dim iRow As Integer ' variable index de la
ligne courante
Dim iCol As Integer ' variable index de la
colonne courante

Dim strTmpRange As String ' variable temporaire

OuvreExcel = 1

Call ExcelSettings 'Definit une feuille par classeur

Set NameSelect = CmbNom
Call RecupChaineNomComp
NameSelect = Reslec

Set Ep = Cmbep

Set rec = db.OpenRecordset("SELECT * FROM [RQTNOM]
where [Nom] = '" & NameSelect & "' and [Epreuves]='" & Ep
& "' order by [Date]")

xlSheet.Cells.ClearContents

While rec.EOF = False

xcount = rec.AbsolutePosition + 1
xlSheet.Activate
DateExport = rec("Date")
PerfExport = rec("Perf")

MsgCelA = NameSelect & " " & Bar
MsgCelB = Ep
MsgCelC = DateExport
MsgCelD = PerfExport

xlSheet.Cells(xcount, 1) = Trim(MsgCelA)
xlSheet.Cells(xcount, 2) = MsgCelB
xlSheet.Cells(xcount, 3) = MsgCelC
xlSheet.Cells(xcount, 4) = MsgCelD

rec.MoveNext

Wend
' Insère deux plages nommées :
For iRow = 1 To xcount
'Définition de la plage de cellules :
'Par la notation RiCi
'(Entrez les 2 lignes suivantes sur une
seule ligne)
strTmpRange = "Feuil1!R" & iRow & "C" &
Format$(1) & ":R" & iRow & "C" & Format$(4)

'Autre méthode : par l'objet objXLsheet et
la méthode Range
'(Retirer le caractères de commentaire et
entrer les 2 lignes
'suivantes sur une seule ligne)
'strTmpRange = objXLsheet.Range
(objXLsheet.Cells(iRow, 1),objXLsheet.Cells
(iRow,'cNumCols)).Address

'Définition du nom de plage
'(Entrez les 2 lignes suivantes sur une
seule ligne)
'xlSheet.Parent.Names.Add "range" &
Format$(iRow), "=" & strTmpRange

Next iRow

'Assigne les plages créées ci-dessus en
tant que séries individuelles
'du graphique :
For iRow = 1 To xcount

xlCharts.Chart.SeriesCollection.Add "Range" & Format$(iRow)
Next iRow


xlApp.Application.Visible = True
xlSheet.Visible = xlSheetVisible
xlCharts.Visible = xlSheetVisible
xlCharts.Name = Trim(MsgCelA)

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing


End Sub
Avatar
SEBBOIS
Non je souhaite en clickant sur un bouton affiche une
feuille excel et non pas l'integre dans mon prog VB.
-----Message d'origine-----
SAlut

Tu devrais essayer d'utiliser le controle OLE2 pour


ouvrir le fichier excel
depuis ton pg vb

@+

LJ

www.eztree-msdn.com
"BoisSeb" a écrit dans le


message de
news:5efd01c42df7$24641f90$
J'ai une feuille graphique dans mon classeur. j'alimente
mon tableu à partir de vb je souhaite afficher mon
graphique avec les données de mon tableau. comment puis je
faire.

voici le code :
Private Sub BtnExport_Click()
Dim Ep As Variant
Dim rec As Recordset
Dim xlCharts As Chart

Set xlApp = New Excel.Application
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlApp.Workbooks(1).Sheets(1)
Set xlCharts = xlApp.Workbooks(1).Charts.Add

Dim iRow As Integer ' variable index de la
ligne courante
Dim iCol As Integer ' variable index de la
colonne courante

Dim strTmpRange As String ' variable


temporaire

OuvreExcel = 1

Call ExcelSettings 'Definit une feuille par classeur

Set NameSelect = CmbNom
Call RecupChaineNomComp
NameSelect = Reslec

Set Ep = Cmbep

Set rec = db.OpenRecordset("SELECT * FROM [RQTNOM]
where [Nom] = '" & NameSelect & "' and [Epreuves]='" & Ep
& "' order by [Date]")

xlSheet.Cells.ClearContents

While rec.EOF = False

xcount = rec.AbsolutePosition + 1
xlSheet.Activate
DateExport = rec("Date")
PerfExport = rec("Perf")

MsgCelA = NameSelect & " " & Bar
MsgCelB = Ep
MsgCelC = DateExport
MsgCelD = PerfExport

xlSheet.Cells(xcount, 1) = Trim(MsgCelA)
xlSheet.Cells(xcount, 2) = MsgCelB
xlSheet.Cells(xcount, 3) = MsgCelC
xlSheet.Cells(xcount, 4) = MsgCelD

rec.MoveNext

Wend
' Insère deux plages nommées :
For iRow = 1 To xcount
'Définition de la plage de cellules :
'Par la notation RiCi
'(Entrez les 2 lignes suivantes sur une
seule ligne)
strTmpRange = "Feuil1!R" & iRow & "C" &
Format$(1) & ":R" & iRow & "C" & Format$(4)

'Autre méthode : par l'objet objXLsheet et
la méthode Range
'(Retirer le caractères de commentaire et
entrer les 2 lignes
'suivantes sur une seule ligne)
'strTmpRange = objXLsheet.Range
(objXLsheet.Cells(iRow, 1),objXLsheet.Cells
(iRow,'cNumCols)).Address

'Définition du nom de plage
'(Entrez les 2 lignes suivantes sur une
seule ligne)
'xlSheet.Parent.Names.Add "range" &
Format$(iRow), "=" & strTmpRange

Next iRow

'Assigne les plages créées ci-dessus en
tant que séries individuelles
'du graphique :
For iRow = 1 To xcount

xlCharts.Chart.SeriesCollection.Add "Range" &


Format$(iRow)
Next iRow


xlApp.Application.Visible = True
xlSheet.Visible = xlSheetVisible
xlCharts.Visible = xlSheetVisible
xlCharts.Name = Trim(MsgCelA)

Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing


End Sub


.