Tracer graphique VBA

Bonjour,

J'essaye de développer une maccro me permettant de tracer automatiquement un graphique via l'appuie sur un bouton.

Pour cela j'ai programme un bouton avec le code suivant :

Private Sub CommandButton1_Click()

ActiveSheet.Shapes.AddChart.Select

ActiveChart.ChartType = xlLine ' type de graphique

ActiveChart.SetSourceData Source:=Range("Feuil1!$C$5:$E$9") '

End Sub

Le problème est que pour ma range ce sont des valeurs comprises entre C5 et E9.

Première question, comment faire si mes valeurs sont dans des colones totalement différentes cad de C5 a C9 puis de H5 à H9 puis de J5 à J9.

Deuxième question, comment gérer les données qui vont être en abscisse et en ordonné?

En d'autre terme, si vous vous referez à la feuille2 de mon fichier, je voudrais tracer le graphique avec rue en abscisse et superposer conso et facture en ordonné

Merci de votre aide,

CR

16testts2.xlsx (11.53 Ko)

Bonjour,

Actuellement votre macro créée un nouveau graphique à chaque exécution. Si c'est bien ce que vous souhaitez, ne faudrait-il pas effacer les graphs précédents ? Sinon il est aussi possible de garder un unique graphique, et de retravailler les séries affichées.

Plutôt que de préciser une unique plage de graphique, vous pouvez préciser les plages utilisées série par série (voir code produit par l'enregistreur dans ce cas de figure). Attention, pour le graphique choisi, il n'y a pas d'axe X à proprement parler (ce sont des libellés).

Les plages à utiliser sont-elles connues d'avance et dépendantes uniquement de la feuille active ? C'est à dire toujours au même emplacement et avec un même nombre de données ?

Bonjour,

Merci pour votre réponse claire,

Effectivement je ne souhaite pas créer un graphique à chaque appuie sur mon bouton, je veux juste travailler les séries afficher.

Les plages a utilisé sont effectivement connus d'avance et ne change pas. Il est pourtant possible que sur une colone de E5 à E10 par exemple que les cellules E9 et E10 soit vide.

Merci de votre aide,

CR

Un essai :

19testts2.xlsm (18.86 Ko)

La macro :

Sub Test()

Dim Ws As String

Ws = ActiveSheet.Name 'Nom de la feuille active
Feuil1.ChartObjects("Graphique 1").Activate 'Activation du graphique
With ActiveChart 'Tout élément commençant par "." se rattache au graphique
    Select Case Ws
        Case "Feuil1" 'A adapter si feuille renommée
            .SeriesCollection(1).Name = Sheets(Ws).Range("$D$6") 'Nom série
            .SeriesCollection(1).XValues = Sheets(Ws).Range("$C$6:$C$10") 'Libellés abscisse
            .SeriesCollection(1).Values = Sheets(Ws).Range("$D$6:$D$10") 'Plage série
            .SeriesCollection(1).Name = Sheets(Ws).Range("$E$6")
            .SeriesCollection(2).XValues = Sheets(Ws).Range("$C$6:$C$10")
            .SeriesCollection(2).Values = Sheets(Ws).Range("$E$6:$E$10")
        Case "Feuil2" 'A adapter si feuille renommée
            .SeriesCollection(1).Name = Sheets(Ws).Range("$F$6")
            .SeriesCollection(1).XValues = Sheets(Ws).Range("$B$6:$B$10")
            .SeriesCollection(1).Values = Sheets(Ws).Range("$F$6:$F$10")
            .SeriesCollection(1).Name = Sheets(Ws).Range("$I$6")
            .SeriesCollection(2).XValues = Sheets(Ws).Range("$B$6:$B$10")
            .SeriesCollection(2).Values = Sheets(Ws).Range("$I$6:$I$10")
        Case Else
            MsgBox "Erreur : nom de la feuille active inconnu."
    End Select
End With

End Sub

Bonjour,

Encore merci pour votre aide,

Petit message d'erreur lors de l'execution de cette ligne : Feuil1.ChartObjects("Graphique 1").Activate

On me dit que l'élément portant ce nom est introuvable,

Merci,

CR

C'est ok le nom de mon graphique était graphique 2 vu que lors de mes tests ils se superposait,

Merci de votre aide

Exact, dans le fichier renvoyé, j'ai supprimé le graphique d'origine et créé un autre qui porte bien le nom "Graphique 1". Le code est à adapter selon vos souhaits. N'hésitez pas à me demander des précisions si besoins.

Rechercher des sujets similaires à "tracer graphique vba"