Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Micke-31

XLDnaute Occasionnel
Bonsoir à tous,

Ci dessous une partie de mon code pour insérer un graphique dans une application.
tout marche bien sauf lorsque je sélectionne un graphique surface, bulles ou boursier, j'ai une erreur que je n'arrive pas à régler.
Je fais donc appel à vos lumières expertes en espérant trouver le bon code.
Dans cette attente merci et bonne soirée

Sub CopierGraph()
Dim rPlageDeDonnees As Range

Set rPlageDeDonnees = Application.InputBox("Saisissez la plage de données nécessaires au graphique", Type:=8)
Charts.Add
With ActiveChart
'Sélectionne le type de graphique
Var = Application.Dialogs(xlDialogChartType).Show
.SetSourceData Source:=rPlageDeDonnees, PlotBy:=xlDialogChartType
End With
End Sub


A+
 

Pièces jointes

Re : Graphique code VBA

Bonsoir,

Il y certains graphiques qu'on ne peut pas créer sans avoir défini d'abord les données.
Je propose de modofier le code comme suit :

Sub CopierGraph()
Dim rPlageDeDonnees As Range
Set rPlageDeDonnees = Application.InputBox("Saisissez la plage de données nécessaires au graphique", Type:=8)
Application.ScreenUpdating = False
Charts.Add
With ActiveChart
'Sélectionne le type de graphique
.SetSourceData Source:=rPlageDeDonnees
Application.Dialogs(xlDialogChartType).Show
End With
Application.ScreenUpdating = True
End Sub
 
Dernière édition:
Re : Graphique code VBA

Je crois que dans ton code, il faut que tu controles la zone que selectionnent l'utilisateur.
En effet pour certains graphes, il faut un minimum de colonnes (ou lignes).
Si je prends suffisament de colonnes le graphe boursier ne plante pas ...
 
Re : Graphique code VBA

Bonjour,

En fait lorsque j'utilise manuellement l'assistant graphique il n'y a aucun probléme sur aucun graph.
par contre avec mon code les graph surface, bulles et boursier plante mon code.

Et le code de Catrice à solutionné certain graph sauf les graphs boursiers qui plantent toujours même avec des sélections de plage de différente grandeur.

Si quelqu'un a une solution je suis preneur

Merci
A+
 
Dernière édition:
Re : Graphique code VBA

Salut Catrice,

Merci de suivre mon problème. Je suis avec office 2003 et je viens de retester ton code. Il marche très bien même en graph boursier à condition de ne pas faire un graph différent avant un graph boursier. Si tu réalises plusieurs graph différent avant un boursier le code plante avec erreur d'exécution 1004 la méthode show de classe dialog a échoué

A+
 
Dernière édition:
Re : Graphique code VBA

Re,

Tu veux dire :
1 - tu lances la macro
2 - tu fais un graphe histo
3 - tu reviens dans la feuille
4 - tu relances la macro
5 - tu fais un graphe Boursier

et là ca plante ?....

Pas chez moi sur XL2002.
Quelle zone selectionnes tu pour faire ton graphe boursier ?
Peux tu confirmer le step by step ?
 
Re : Graphique code VBA

Salut,

J'ai trouvé ce qui coince, en fait je sélectionne la plage nécessaire au graphique et ensuite le graphique.
Et si la sélection des plages pour un graph boursier est différente d'un graph à l'autre.
je vais essayer d'inverser mes sélections, commencer par le graph et ensuite les plages en fonction, comme le fait l'assistant graph.
Si tu as une idée, je prends, en tout cas mille mercis pour ta patience

A+
 
Re : Graphique code VBA

Bonsoir,

Effectivement, si tu selectionnes la zone avant le graphe, ca peut planter.
Mais là où je ne suis pas tres bien, si on utilise le code (en tous les cas celui du fichier test Graph2.xls precedement envoyé) ca ne peut pas arriver puisque la macro oblige à selectionner la zone et fait le graphe ensuite.

En revanche, si je fais la manip en ne selectionnant que la zone E8:G13 par exemple, là le Boursier plante mais c'est normal, il faut un minimum de data ...

Testons-nous bien le meme code ?
 
Re : Graphique code VBA

Salut,

Oui je teste le même code que toi, le problème est que les graphs boursier requièrent trois quatre ou cinq séries d'ordres selon le graph.
Mon problème avec le code macro, est que la plage d'info est déterminée avant de sélectionner le graph. Et si l'on sélectionne par erreur un graph nécessitant trois ordre alors que quatre ordre ont été sélectionnés le code plante et si un utilisateur clique sur débogage, il est impératif de fermer et réouvrir le fichier ou de réinitialiser le code ce qui n'est pas souhaitable.
Il est dommage qu'avec le code VBA il ne soit pas possible de lancer l'assistant graphique avec les étapes de création comme manuellement, ce qui offre l'avantage de revenir à une étape précédente pour rectifier la sélection ou le graph.
Si je n’ai pas d’autre solution, j’intégrerai une boite de dialogue ou UserForm conditionnelle avant la sélection de la plage afin de guider l’utilisateur dans sa sélection ou de sortir de la procédure.
A part que quelqu’un sur le forum ait une idée. En tout cas merci à tous

A+
 
Re : Graphique code VBA

Salut,

Oui je teste le même code que toi, le problème est que les graphs boursier requièrent trois quatre ou cinq séries d'ordres selon le graph.
Mon problème avec le code macro, est que la plage d'info est déterminée avant de sélectionner le graph. Et si l'on sélectionne par erreur un graph nécessitant trois ordre alors que quatre ordre ont été sélectionnés le code plante et si un utilisateur clique sur débogage, il est impératif de fermer et réouvrir le fichier ou de réinitialiser le code ce qui n'est pas souhaitable.
Il est dommage qu'avec le code VBA il ne soit pas possible de lancer l'assistant graphique avec les étapes de création comme manuellement, ce qui offre l'avantage de revenir à une étape précédente pour rectifier la sélection ou le graph.
Si je n’ai pas d’autre solution, j’intégrerai une boite de dialogue ou UserForm conditionnelle avant la sélection de la plage afin de guider l’utilisateur dans sa sélection ou de sortir de la procédure.
A part que quelqu’un sur le forum ait une idée. En tout cas merci à tous

A+
 
Re : Graphique code VBA

Bonjour,

On peut lancer l'assistant graphique avec xlDialogChartWizard, mais c'est un peu "touchy".
J'ai rajouté xlDialogChartLocation pour que l'utilisateur choisisse des le debut s'il veut un graph incorporé ou non, on peut l'enlever, mais dans ce cas il faut retourner dans la feuille pour selectionner les datas.

Tu peux essayer ceci :

Sub test()
Set MaRange = ActiveCell
Charts.Add
Application.Dialogs(xlDialogChartLocation).Show
ActiveChart.SetSourceData Source:=MaRange
Set MaVar = Application.Dialogs(xlDialogChartWizard)
MaVar.Show (True)
End Sub


Sinon, il faut que tu testes ce que fait l'utilisateur à chaque étape.
Si pas assez de lignes/colonnes pas acces à tel ou tel type de graphe etc ...
 
Re : Graphique code VBA

Salut Catrice,

Merci encore pour ton concours, je crois que je vais partir sur ton dernier code, que j’ai un peut modifié. Il permet à chaque étape de rester sur la feuille de saisie, puis sur la feuille graph avec la possibilité de revenir sur l’action précédente.
Dommage qu’il ne soit pas possible d’activer en code VBA l’assistant graphique que l’on lance manuellement depuis le bouton de la barre d’outils.

Sub Copie()
Range("A1:A2").Select
Set MaRange = ActiveCell
Charts.Add
Set MaVar = Application.Dialogs(xlDialogChartWizard)
MaVar.Show (True)
End Sub

Bonne soirée
 
Re : Graphique code VBA

Bonsoir,

En fait, le xlDialogChartWizard c'est la boite de l'assistant graphique mais elle n'est pas aussi complete/identique que celle qu'on obtient en passant par le menu.
J'ai cherché un peu partout, rien qui dit comment afficher la boite exacte 🙁

Je propose ce dernier code ...

Sub Test()
Set MaCel = Range("A1:A2")
Set MonGraph = Application.Dialogs(xlDialogChartWizard)
Charts.Add
MonGraph.Show True, MaCel
End Sub


Tu peux simplifier :
Range("A1:A2").Select
Set MaRange = ActiveCell
En =>
Set MaRange = Range("A1:A2")


Et ce code pour tester si l'utilisateur clique sur Annuler :
Sub Test()
Set MaCel = Range("A1:A2")
Set MonGraph = Application.Dialogs(xlDialogChartWizard)
Charts.Add
toto = MonGraph.Show(True, MaCel)
End Sub

toto=False => annuler
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

B
  • Question Question
Réponses
10
Affichages
1 K
Batourouciss
B
A
Réponses
1
Affichages
1 K
alcoupe
A
C
Réponses
5
Affichages
2 K
Charles78
C
C
Réponses
23
Affichages
4 K
Charles78
C
Réponses
0
Affichages
829
D
Réponses
3
Affichages
2 K
demonsares
D
T
Réponses
0
Affichages
1 K
ted75
T
R
Réponses
2
Affichages
2 K
ruhlito
R
D
Réponses
6
Affichages
4 K
DG33
D
Retour