VBA-Excel: creation graphique - erreur 1004
Résolu
Nelly1234
Messages postés
15
Statut
Membre
-
Heremion Messages postés 564 Statut Membre -
Heremion Messages postés 564 Statut Membre -
Bonjour,
je débute en VBA Excel. Je dois tracer une courbe dans un grahique avec une abscisse et une ordonnée.
J'ai trouvé un exemple dans le support microsoft, que j'ai copié.
Dans le code ci dissous, j'ai un problème a la premiere ligne sur Range("B3:M3").Select
qui indique 'erreur d'execution 1004 - Erreur définie par l'application ou par l'objet'
Je me suis assurée que j'ai bien une feuille active: OK
Quelqu'un peut m'aider?
Merci d'avance
Function traceGraphique(zoneDonnees) As Integer
' Select the range of data of the chart.
Range("B3:M3").Select
' Assign the address of the selected range of cells to a variable.
myrange = Selection.Address
' Assign the name of the active sheet to a variable. This line is
' used in order to allow a chart to be created on a separate chart
' sheet.
mysheetname = ActiveSheet.name
' Add a chart to the active sheet.
ActiveSheet.ChartObjects.Add(125.25, 60, 301.5, 155.25).Select
' To create a chart on a separate chart sheet, remark out the
' previous line, and substitute the next line for the one above.
' Charts.Add
Application.CutCopyMode = False
' This line can best be written by recording a macro, and
' modifying the code generated by the Microsoft Excel Macro
' recorder.
ActiveChart.ChartWizard _
Source:=Sheets(mysheetname).Range(myrange), _
Gallery:=xlLine, Format:=4, PlotBy:=xlRows, _
CategoryLabels:=1, SeriesLabels:=1, HasLegend:=1, _
Title:="", CategoryTitle:="", _
ValueTitle:="", ExtraTitle:=""
End Function
je débute en VBA Excel. Je dois tracer une courbe dans un grahique avec une abscisse et une ordonnée.
J'ai trouvé un exemple dans le support microsoft, que j'ai copié.
Dans le code ci dissous, j'ai un problème a la premiere ligne sur Range("B3:M3").Select
qui indique 'erreur d'execution 1004 - Erreur définie par l'application ou par l'objet'
Je me suis assurée que j'ai bien une feuille active: OK
Quelqu'un peut m'aider?
Merci d'avance
Function traceGraphique(zoneDonnees) As Integer
' Select the range of data of the chart.
Range("B3:M3").Select
' Assign the address of the selected range of cells to a variable.
myrange = Selection.Address
' Assign the name of the active sheet to a variable. This line is
' used in order to allow a chart to be created on a separate chart
' sheet.
mysheetname = ActiveSheet.name
' Add a chart to the active sheet.
ActiveSheet.ChartObjects.Add(125.25, 60, 301.5, 155.25).Select
' To create a chart on a separate chart sheet, remark out the
' previous line, and substitute the next line for the one above.
' Charts.Add
Application.CutCopyMode = False
' This line can best be written by recording a macro, and
' modifying the code generated by the Microsoft Excel Macro
' recorder.
ActiveChart.ChartWizard _
Source:=Sheets(mysheetname).Range(myrange), _
Gallery:=xlLine, Format:=4, PlotBy:=xlRows, _
CategoryLabels:=1, SeriesLabels:=1, HasLegend:=1, _
Title:="", CategoryTitle:="", _
ValueTitle:="", ExtraTitle:=""
End Function
13 réponses
-
Bonjour Nelly,
Avant d'effectuer une sélection, ta page doit être activée avec le code ci-dessous :
Worksheets("TaFeuille").Activate
-
Bonjour,
Merci pour ta réponse mais ce n'est pas ca. j'ai activé, c'est le même pb.
Nelly -
Peux-tu joindre, grâce au site de partage de fichier cijoint.fr, ton fichier excel, qu'on puisse voir le code en entier stp?
-
OK,
lien http://www.cijoint.fr/cjlink.php?file=cj201109/cijsQLQZ3O.xls
attention ce n'est pas un xls mais un cls contenant le code VBA que tu peux voir avec un quelconque éditeur
Merci -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonjour,
Avez vous essayé avec une Sub plutôt qu'une Function?
Il me semble, mais je peux me tromper, qu'une Function renvoie une valeur et, par conséquent, ne peux pas générer un graph... -
Bonjour,
J'ai mis le code de la fonction dans la Sub, mais cela donne le même pb.-
J'ai mis le code de la fonction dans la Sub, mais cela donne le même pb.
Donne nous ton code ainsi obtenu...
Nous ne pouvons que supposer que tu l'as bien fait, mais...
Exemple : [la partie en gras est à changer, tu peux le faire via l'enregistreur de macro, car elle créée un graph vide...]
Sub traceGraphique() ' Select the range of data of the chart. Range("B3:M3").Select ' Assign the address of the selected range of cells to a variable. myrange = Selection.Address ' Assign the name of the active sheet to a variable. This line is ' used in order to allow a chart to be created on a separate chart ' sheet. mysheetname = ActiveSheet.Name ' Add a chart to the active sheet. ActiveSheet.ChartObjects.Add(125.25, 60, 301.5, 155.25).Select ' To create a chart on a separate chart sheet, remark out the ' previous line, and substitute the next line for the one above. ' Charts.Add Application.CutCopyMode = False ' This line can best be written by recording a macro, and ' modifying the code generated by the Microsoft Excel Macro ' recorder. ActiveChart.ChartWizard _ Source:=Sheets(mysheetname).Range(myrange), _ Gallery:=xlLine, Format:=4, PlotBy:=xlRows, _ CategoryLabels:=1, SeriesLabels:=1, HasLegend:=1, _ Title:="", CategoryTitle:="", _ ValueTitle:="", ExtraTitle:="" End Sub -
-
-
-
-
-
ZoneDonnees n'est pas typé. Lorsque la fonction est appelée, tu es sûre que la donnée est correcte?
-
Bonjour,
en fait, comme ça ne marchait pas , j'ai mis directement la zone dans Range et je n'utilise pas zoneDonnees du coup. J'ai Range en commentaire aussi du coup la fonction se déroule jusqu'au bout sans erreur. -
Du coup, c'était bien la valeur passée en paramètre qui posait problème?
-
Bonjour,
Ben non, puisque ça plante toujours sur le Range avec la zone en dur "B3:M3" -
bonjour à tous
Nelly1234, si tu postais ton fichier excel (format excel 2003) le vrai, on pourrait voir exactement le problème ?
bonne suite -
Bonjour,
C'est déjà fait:
lien http://www.cijoint.fr/cjlink.php?file=cj201109/cijsQLQZ3O.xls
attention ce n'est pas un xls mais un cls contenant le code VBA que tu peux voir avec un quelconque éditeur
Merci -
Personnellement,
j'ai retesté le code, et le seul morceau de code qui fait planter tout le reste, c'est :
'VERSION 1.0 CLASS 'BEGIN ' MultiUse = -1 'True 'End 'Attribute VB_Name = "Feuil1" 'Attribute VB_GlobalNameSpace = False 'Attribute VB_Creatable = False 'Attribute VB_PredeclaredId = True 'Attribute VB_Exposed = True
En le mettant en commentaire, j'ai aucun souci de compilation ni d'exécution, et tout s'exécute.