Faire un Graph Excel par VB6

coolboy2008 Messages postés 15 Date d'inscription dimanche 18 janvier 2009 Statut Membre Dernière intervention 1 décembre 2011 - 16 févr. 2011 à 12:54
JSilvere Messages postés 161 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 11 février 2013 - 17 mars 2011 à 15:52
bonjour,

dans mon projet en Vb6, j'ai commencer a crée des rapport excel, je lance un code dans vb et ceci m'ouvre une page excel avec mon graphe, tout fonctionne le problème est que quand j'ouvre deux fois d'affiler le rapport j'ai cette erreur :
"run time error 1004 method sheets of object_global failed"
après avoir cherche ceci est une erreur connue mais pas trouver de reponse voici mon code:

le bouton :
------------------------------------------------------
Private Sub cmdGo_Click()
Dim xlSheet As Object
CreationClasseur ' cr?e un classeur excell et y met des donn'es pour construire le graphe
ConstruireGraph 'construit le graphe
End Sub
-------------------------------------------------
les fonctions:
---------------------------------------------------
Public Sub CreationClasseur()
On Error Resume Next
Set xlSheet = GetObject(, "Excel.Application")
Set xlSheet = Nothing
On Error GoTo 0
If xlSheet Is Nothing Then
Set xlSheet = New Excel.Application
xlSheet.EnableEvents = False
End If

Dim strsql, strBODY, monthname1 As String
Dim sumorder, SumMoneyMonthorder, i As Integer
Dim sumyear, sum As Integer
strBODY = ""
sumyear = 0

sumorder = 0
SumMoneyMonthorder = 0
index = 1
strsql = " Select * from Tbl_Orders Order by Or_Date"
Set rs = con.Execute(strsql)



Do While Not rs.EOF
If Year(Date) = Year(rs("Or_Date")) Then
montharray(Month(rs("Or_Date"))) = montharray(Month(rs("Or_Date"))) + rs("Or_totalprice")
orderarray(Month(rs("Or_Date"))) = orderarray(Month(rs("Or_Date"))) + 1
sumyear = sumyear + rs("Or_totalprice")
End If
rs.MoveNext
Loop



Set xlSheet = CreateObject("Excel.Application") ' cr?e une application Excell
xlSheet.Application.DisplayAlerts = False 'annule les messages
xlSheet.Application.Visible = True 'rend la fen?tre Excell visible
xlSheet.Workbooks.Add 'ajoute un classeur
'remplit la pr?mi?re feuille de donn'es utilis'es pour construire le graphe

'cellule de d?but = A1 tr?s important pour dire ou commence les donn'es ? mettre dans le graphe
xlSheet.Worksheets(1).Cells(1, 1).value = "janvier"
xlSheet.Worksheets(1).Cells(1, 2).value = montharray(1)
xlSheet.Worksheets(1).Cells(2, 1).value = "février"
xlSheet.Worksheets(1).Cells(2, 2).value = montharray(2)
xlSheet.Worksheets(1).Cells(3, 1).value = "mars"
xlSheet.Worksheets(1).Cells(3, 2).value = montharray(3)
xlSheet.Worksheets(1).Cells(4, 1).value = "avril"
xlSheet.Worksheets(1).Cells(4, 2).value = montharray(4)
xlSheet.Worksheets(1).Cells(5, 1).value = "mai"
xlSheet.Worksheets(1).Cells(5, 2).value = montharray(5)
xlSheet.Worksheets(1).Cells(6, 1).value = "juin"
xlSheet.Worksheets(1).Cells(6, 2).value = montharray(6)
xlSheet.Worksheets(1).Cells(7, 1).value = "juillet"
xlSheet.Worksheets(1).Cells(7, 2).value = montharray(7)
xlSheet.Worksheets(1).Cells(8, 1).value = "août"
xlSheet.Worksheets(1).Cells(8, 2).value = montharray(8)
xlSheet.Worksheets(1).Cells(9, 1).value = "septembre"
xlSheet.Worksheets(1).Cells(9, 2).value = montharray(9)
xlSheet.Worksheets(1).Cells(10, 1).value = "octobre"
xlSheet.Worksheets(1).Cells(10, 2).value = montharray(10)
xlSheet.Worksheets(1).Cells(11, 1).value = "novembre"
xlSheet.Worksheets(1).Cells(11, 2).value = montharray(11)
xlSheet.Worksheets(1).Cells(12, 1).value = "décembre"
xlSheet.Worksheets(1).Cells(12, 2).value = montharray(12)

End Sub
-------------------------------------------------------------------------
fonction 2:
Public Sub ConstruireGraph()
Dim Result As String

'ne pas oublier d'ajouter la r?f?rence Microsoft Excel 8.0 Object Library au projet, sinon impossible de cr?er l'application Excell
Dim ch As ChartObject 'ch va recevoir le graphique
Set ch = Nothing
Set ch = Worksheets(1).ChartObjects.Add(180, 40, 700, 400) ' le graphique sera trac? dans la pr?mi?re feuille du classeur

'trace le graphe een prenant les donn'es de la cellule A1 ? la cellule B6

ch.Chart.SetSourceData source:=Worksheets(1).Range("A1:B12"), PlotBy:=xl3ArrowsGray

'ch.Chart.ChartWizard Gallery:=xlLine, PlotBy:=xlColumns, HasLegend:=True, CategoryTitle:="Mois", ValueTitle:="f", Title:="titre"

'With ch.Chart.Axes(xlValue, xlPrimary)
'.HasMajorGridlines = False
'End With
Set ExcelSheet = Nothing
End Sub
------------------------------------------------------------------------------------

merci

2 réponses

JSilvere Messages postés 161 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 11 février 2013
17 mars 2011 à 15:41
Salut, j'ai pour projet de programmer moi aussi un code permettant de tracer des courbes sous exel, et en me renseignant, je suis tomber sur un code qui devrais pouvoir t'aider ;)

http://www.vbfrance.com/codes/REGLER-PROBLEME-ENTRE-VB-EXCEL_25308.aspx
0
JSilvere Messages postés 161 Date d'inscription lundi 28 février 2011 Statut Membre Dernière intervention 11 février 2013
17 mars 2011 à 15:52
D'ailleur ton code m'interresse, j'ai essayé de le faire fonctionné, mais lors de l'execution, j'ai un message d'erreur me disant que xlSheet est une variable non définit...

Dim xlSheet As object ne fonctionne pas??

Peu tu me renseigner?
0
Rejoignez-nous