VBA-Excel: creation graphique - erreur 1004 [Résolu/Fermé]

Signaler
Messages postés
13
Date d'inscription
lundi 12 septembre 2011
Statut
Membre
Dernière intervention
27 septembre 2011
-
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
-
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

13 réponses

Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
86
Bonjour Nelly,

Avant d'effectuer une sélection, ta page doit être activée avec le code ci-dessous :

Worksheets("TaFeuille").Activate

Messages postés
13
Date d'inscription
lundi 12 septembre 2011
Statut
Membre
Dernière intervention
27 septembre 2011

Bonjour,

Merci pour ta réponse mais ce n'est pas ca. j'ai activé, c'est le même pb.

Nelly
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
86
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?
Messages postés
13
Date d'inscription
lundi 12 septembre 2011
Statut
Membre
Dernière intervention
27 septembre 2011

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
Messages postés
12184
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
31 juillet 2020
2 467
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...
Messages postés
13
Date d'inscription
lundi 12 septembre 2011
Statut
Membre
Dernière intervention
27 septembre 2011

Bonjour,

J'ai mis le code de la fonction dans la Sub, mais cela donne le même pb.
Messages postés
13
Date d'inscription
lundi 12 septembre 2011
Statut
Membre
Dernière intervention
27 septembre 2011

Bonjour,

mais ça plante sur Range("B3:M3").Select !!
Messages postés
12184
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
31 juillet 2020
2 467
je considère depuis quelques temps que ça plante ne comporte pas suffisamment de précision pour pouvoir apporter une réponse.
Que te dis exactement le message d'erreur?
Messages postés
13
Date d'inscription
lundi 12 septembre 2011
Statut
Membre
Dernière intervention
27 septembre 2011

Je vois que ca plante sur Range car je fais du pas à pas en déboggant et c'est là le pb avec le message: 'erreur d'execution 1004 - Erreur définie par l'application ou par l'objet'
Messages postés
12184
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
31 juillet 2020
2 467
Salut,
Essaye simplement ce code :
Sub test() 
Range("B3:M3").Select 
End Sub

ou bien :
Sub test() 
Sheets("Feuil1").Range("B3:M3").Select 'Si Feuil1 est ta feuille active, sinon change...
End Sub
Messages postés
13
Date d'inscription
lundi 12 septembre 2011
Statut
Membre
Dernière intervention
27 septembre 2011

Bonjour,

Ca y est! Sheets("Feuil1").Range("B3:M3").Select a fonctionné
C'est étonnant , pourtant en mettant la feuille active avant , ça ne fonctionnait pas!!

Merci beaucoup
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
86
ZoneDonnees n'est pas typé. Lorsque la fonction est appelée, tu es sûre que la donnée est correcte?
Messages postés
13
Date d'inscription
lundi 12 septembre 2011
Statut
Membre
Dernière intervention
27 septembre 2011

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.
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
86
Du coup, c'était bien la valeur passée en paramètre qui posait problème?
Messages postés
13
Date d'inscription
lundi 12 septembre 2011
Statut
Membre
Dernière intervention
27 septembre 2011

Bonjour,

Ben non, puisque ça plante toujours sur le Range avec la zone en dur "B3:M3"
Messages postés
9527
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
8 août 2020
1 877
bonjour à tous

Nelly1234, si tu postais ton fichier excel (format excel 2003) le vrai, on pourrait voir exactement le problème ?

bonne suite
Messages postés
13
Date d'inscription
lundi 12 septembre 2011
Statut
Membre
Dernière intervention
27 septembre 2011

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
Messages postés
538
Date d'inscription
vendredi 20 mai 2011
Statut
Membre
Dernière intervention
8 janvier 2018
86
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.