Nommer un graphique

Bonjour

Je souhaiterais inclure un graphique dans une page Excel. Cependant les transformations que je lui impose via VBA dépendent du nom de celui-ci. Or à chaque nouvelle création de graphique, le graphique a un autre nom...

Code VBA :

ActiveSheet.Shapes.AddChart2(227, xlLine).Select

ActiveSheet.Shapes("Graphique 4").Name = "EXEMPLE"

ActiveSheet.Shapes("EXEMPLE").ScaleHeight 2.0239198746, msoFalse, _

msoScaleFromBottomRight

ActiveSheet.Shapes("EXEMPLE").ScaleHeight 1.0303986726, msoFalse, _

msoScaleFromTopLeft

ActiveChart.SeriesCollection.NewSeries

ActiveChart.FullSeriesCollection(1).Name = "=""taches"""

ActiveChart.FullSeriesCollection(1).Values = "=Planning!$S$55:$EW$55"

ActiveChart.FullSeriesCollection(1).XValues = "=Planning!$S$3:$EW$3"

Il y a t-il un moyen de renommer le graphique sans le citer "graphique 4" ou "graphique 5" etc... Ou dois-je créer un graphique que je met à jour plutôt que d'en créer un nouveau à chaque fois. Merci

Bonjour,

tu peux créer ton graphique en lui donnant un nom.

 ActiveSheet.Shapes.AddChart2(227, xlLine).Name = "EXEMPLE"

Merci beaucoup ça fonctionne bien.

Maintenant je souhaiterai faire légèrement plus compliqué :

  • En appuyant sur le bouton de commande je supprime le tableau EXEMPLE "SI IL EST PRESENT" !
  • Puis je créé le tableau EXEMPLE (avec les nouvelles valeurs car elles peuvent bouger de ligne par exemple, j'ai un code pour les trouver donc pas de problème)

Donc je nécessite de l'aide pour le premier tiret *

PS : j'ai déjà essayé avec Nothing mais je ne sais pas vraiment comment l'utiliser.

Bonjour, salut h2so4 !

Je vous renvoie vers une fonction très proche : https://excel-malin.com/codes-sources-vba/vba-verifier-si-feuille-existe/

Cette fonction parcourt la collection des feuilles pour voir si l'une d'elles porte un nom spécifique. Vous pouvez largement vous en inspirer pour parcourir la collection des graphiques et vérifier si l'un d'entre eux porte le nom "EXEMPLE".

Autre lien utile : https://docs.microsoft.com/fr-fr/office/vba/api/excel.chart(object)

J'ai tenté cette fonction mais j'ai un message d'erreur : "Propriété ou méthode non géré par cet objet."

Sub CommandButton4_Click() 'Création du graphique

Sheets("Planning").Select

Dim Tableau As ChartObject

For Each Tableau In Worksheets("Planning") 'vérification existance graphique dans la page

If Tableau.Name = EXEMPLE Then

ActiveSheet.ChartObjects("EXEMPLE").Activate

ActiveChart.Parent.Delete

Range("U4:EZ4,U35:EZ35,U36:EZ36").Select

ActiveSheet.Shapes.AddChart2(227, xlLine).Name = "EXEMPLE"

Else

Range("U4:EZ4,U35:EZ35,U36:EZ36").Select

ActiveSheet.Shapes.AddChart2(227, xlLine).Name = "EXEMPLE"

End If

Next

Je vais lire le lien de ton edit je n'avais pas vu : Merci pour l'aide

PS : Je précise que le code derrière le ELSE fonctionne.

J'ai aussi testé comme cela vu que je n'ai qu'un seul tableau :

Range("A1").Value = ActiveSheet.ChartObjects.Count

Du coup je peux savoir si mon tableau est présent ou non. Mais pour plus de connaissance j'aimerai tester le nom directement (EXEMPLE).

J'ai tenté cette fonction mais j'ai un message d'erreur : "Propriété ou méthode non géré par cet objet."

La syntaxe générale est For Each élément In collection.

Dans votre cas, Worksheets("Planning") n'est pas une collection, mais une feuille bien précise !

Un essai :

Function GraphExiste(NomGraph As String) As Boolean

Dim Reponse As Boolean 'Valeu False par défaut

For Each Graph In Charts 
   If Graph.Name = NomGraph Then Reponse = True
Next Graph
GraphExiste = Reponse

End Function
Sub TestGraph() 'Création du graphique

With Sheets("Planning")
   If GraphExiste("Exemple") Then Charts("Exemple").Delete
   .Range("U4:EZ4,U35:EZ35,U36:EZ36").Select 
   .Shapes.AddChart2(227, xlLine).Name = "Exemple"
End With

End Sub

Bonjour,

En effet cette méthode fonctionne. Le seul soucis c'est que le premier graphique Exemple ne se supprime pas lors de l'activation du programme.

J'ai essayé de modifier le code avec :

ActiveSheet.ChartObjects("EXEMPLE").Select

Selection.Delete

Mais rien n'y fait, soit ça ne fonctionne pas, soit ça ne le supprime pas!

Pour l'instant je me contenterai de compter le nombre de graphique sur page pour savoir s'il est présent. J'ai un autre sujet que je vais écrire sous peu qui traite de la création d'un graphique combiné. Merci pour l'aide

Bonjour,

Je ne suis pas très familier avec les graphiques dans VBA, et il me semble qu'il y a quelques subtilités ! Autre code à tenter :

Function GraphExiste(NomGraph As String) As Boolean

Dim Reponse As Boolean 'Valeur False par défaut

For Each Graph In ChartObjects 
   If Graph.Name = NomGraph Then Reponse = True
Next Graph
GraphExiste = Reponse

End Function
Sub TestGraph() 'Création du graphique

With Sheets("Planning")
   If GraphExiste("Exemple") Then ChartObjects("Exemple").Delete
   .Range("U4:EZ4,U35:EZ35,U36:EZ36").Select 
   .Shapes.AddChart2(227, xlLine).Name = "Exemple"
End With

End Sub
Rechercher des sujets similaires à "nommer graphique"