Guide VBA sur les Diagrammes et les Graphiques

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on décembre 23, 2021

Les diagrammes et les graphiques d’Excel sont utilisés pour afficher visuellement des données. Dans ce tutoriel, nous allons voir comment utiliser VBA pour créer et manipuler des diagrammes et des éléments de diagramme

Vous pouvez créer des graphiques intégrés dans une feuille de calcul ou des graphiques sur leur propre feuille de calcul dédiée.

Création d’un Graphique Intégré à l’Aide de VBA

Nous disposons de la plage A1:B4 qui contient les données sources, illustrées ci-dessous :

Vous pouvez créer un graphique en utilisant la méthode ChartObjects.Add. Le code suivant va créer un graphique intégré à la feuille de calcul :

Sub CréationGraphiqueIntégréAvecChartObject()

Dim graphiqueIntégré As ChartObject

Set graphiqueIntégré = Sheets("Feuil1").ChartObjects.Add(Left:=180, Width:=300, Top:=7, Height:=200)
graphiqueIntégré.Chart.SetSourceData Source:=Sheets("Feuil1").Range("A1:B4")

End Sub

Le résultat est le suivant :

Vous pouvez également créer un graphique en utilisant la méthode Shapes.AddChart. Le code suivant va créer un graphique intégré à la feuille de calcul :

Sub CréationGraphiqueIntégréAvecObjetShapes()

Dim graphiqueIntégré As Shape

Set graphiqueIntégré = Sheets("Feuil1").Shapes.AddChart
graphiqueIntégré.Chart.SetSourceData Source:=Sheets("Feuil1").Range("A1:B4")

End Sub

Spécification d’un Type de Graphique à l’Aide de VBA

Nous avons la plage A1:B5 qui contient les données source, comme indiqué ci-dessous :

Vous pouvez spécifier un type de graphique en utilisant la propriété ChartType. Le code suivant créera un graphique circulaire sur la feuille de calcul puisque la propriété ChartType a été définie sur xlPie :

Sub SpécifierUnTypeDeGraphique()

Dim graph As ChartObject

Set graph = Sheets("Feuil1").ChartObjects.Add(Left:=180, Width:=270, Top:=7, Height:=210)
graph.Chart.SetSourceData Source:=Sheets("Feuil1").Range("A1:B5")
graph.Chart.ChartType = xlPie

End Sub

Le résultat est le suivant :

Voici quelques-uns des types de graphiques les plus populaires qui sont généralement spécifiés, mais il en existe d’autres :

  • xlArea
  • xlPie
  • xlLine
  • xlRadar
  • xlXYScatter
  • xlSurface
  • xlBubble
  • xlBarClustered
  • xlColumnClustered

Ajout d’un Titre de Graphique à l’Aide de VBA

Nous avons sélectionné un graphique dans la feuille de calcul comme indiqué ci-dessous :

Vous devez d’abord ajouter un titre au graphique en utilisant la méthode Chart.SetElement, puis spécifier le texte du titre du graphique en définissant la propriété ChartTitle.Text.

Le code suivant vous montre comment ajouter un titre de graphique et spécifier le texte du titre du graphique actif :

Sub AjouterEtDéfinirUnTitreDeGraphique()

ActiveChart.SetElement (msoElementChartTitleAboveChart)
    ActiveChart.ChartTitle.Text = "Les Ventes du Produit"
    
End Sub

Le résultat est le suivant :

Remarque : vous devez d’abord sélectionner le graphique pour en faire le graphique actif afin de pouvoir utiliser l’objet ActiveChart dans votre code.

Modification de la Couleur d’Arrière-Plan du Graphique à l’Aide de VBA

Nous avons sélectionné un graphique dans la feuille de calcul, comme indiqué ci-dessous :

Vous pouvez modifier la couleur de fond de l’ensemble du graphique en définissant la propriété RGB de l’objet FillFormat contenu dans l’objet ChartArea. Le code suivant donne au graphique une couleur d’arrière-plan orange clair :

Sub AjouteUneCouleurArrièrePlanCharteActive()

ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB(253, 242, 227)

End Sub

Le résultat est le suivant :

Vous pouvez également modifier la couleur de fond de l’ensemble du graphique en définissant la propriété ColorIndex de l’objet Interior de l’objet ChartArea. Le code suivant donne au graphique une couleur d’arrière-plan orange :

Sub AjouteUneCouleurIntérieureCharteActive()

ActiveChart.ChartArea.Interior.ColorIndex = 40

End Sub

Le résultat est le suivant :

Remarque : la propriété ColorIndex vous permet de spécifier une couleur en fonction d’une valeur comprise entre 1 et 56, tirée de la palette prédéfinie. Pour voir quelles valeurs représentent les différentes couleurs, cliquez ici.

Modification de la Couleur de la Zone de Tracé du Graphique à l’Aide de VBA

Nous avons sélectionné un graphique dans la feuille de calcul comme indiqué ci-dessous :

Vous pouvez modifier la couleur de fond de la zone de tracé du graphique seulement en définissant la propriété RGB de l’objet FillFormat contenu dans l’objet PlotArea. Le code suivant donne à la zone de tracé du graphique une couleur de fond vert clair :

Sub AjouteUneCouleurZoneTracéCharteActive()

ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RGB(208, 254, 202)
    
End Sub

Le résultat est le suivant :

Ajout d’une Légende à l’Aide de VBA

Nous avons sélectionné un graphique dans la feuille de calcul, comme indiqué ci-dessous :

Vous pouvez ajouter une légende à l’aide de la méthode Chart.SetElement. Le code suivant ajoute une légende à la gauche du graphique :

Sub AjouterUneLégende()

ActiveChart.SetElement (msoElementLegendLeft)

End Sub

Le résultat est le suivant :

Vous pouvez spécifier la position de la légende de la manière suivante :

  • msoElementLegendLeft – affiche la légende sur le côté gauche du graphique.
  • msoElementLegendLeftOverlay – superpose la légende sur le côté gauche du graphique.
  • msoElementLegendRight – affiche la légende sur le côté droit du graphique.
  • msoElementLegendRightOverlay – superpose la légende sur le côté droit du graphique.
  • msoElementLegendBottom – affiche la légende au bas du graphique.
  • msoElementLegendTop – affiche la légende en haut du graphique.

Ajouter des Étiquettes de Données à l’Aide de VBA

Nous avons sélectionné un graphique dans la feuille de calcul, comme illustré ci-dessous :

Vous pouvez ajouter des étiquettes de données à l’aide de la méthode Chart.SetElement. Le code suivant ajoute des étiquettes de données à l’extrémité intérieure du graphique :

Sub AjouterÉtiquettesDonnées()

ActiveChart.SetElement msoElementDataLabelInsideEnd

End Sub

Le résultat est le suivant :

Vous pouvez spécifier le positionnement des étiquettes de données de la manière suivante :

  • msoElementDataLabelShow – affiche les étiquettes de données.
  • msoElementDataLabelRight – affiche les étiquettes de données à droite du graphique.
  • msoElementDataLabelLeft – affiche les étiquettes de données à gauche du graphique.
  • msoElementDataLabelTop – affiche les étiquettes de données en haut du graphique.
  • msoElementDataLabelBestFit – détermine le meilleur ajustement.
  • msoElementDataLabelBottom – affiche les étiquettes de données en bas du graphique.
  • msoElementDataLabelCallout – affiche les étiquettes de données sous forme de texte.
  • msoElementDataLabelCenter – affiche les étiquettes de données au centre.
  • msoElementDataLabelInsideBase – affiche les étiquettes de données sur la base intérieure.
  • msoElementDataLabelOutSideEnd – affiche les étiquettes de données à l’extrémité extérieure du graphique.
  • msoElementDataLabelInsideEnd – affiche les étiquettes de données à l’extrémité intérieure du graphique.

Ajout d’un Axe X et d’un Titre en VBA

Nous avons sélectionné un graphique dans la feuille de calcul, comme illustré ci-dessous :

Vous pouvez ajouter un axe des X et un titre d’axe des X à l’aide de la méthode Chart.SetElement. Le code suivant ajoute un axe des X et un titre d’axe des X au graphique :

Sub AjouterAxeXetTitreX()

With ActiveChart
.SetElement msoElementPrimaryCategoryAxisShow
.SetElement msoElementPrimaryCategoryAxisTitleHorizontal
End With

End Sub

Le résultat est le suivant :

Ajout d’un axe Y et d’un titre en VBA

Nous avons sélectionné un graphique dans la feuille de calcul, comme indiqué ci-dessous :

Vous pouvez ajouter un axe des Y et un titre d’axe des Y en utilisant la méthode Chart.SetElement. Le code suivant ajoute un axe des Y et un titre d’axe des Y au graphique :

Sub AjouterAxeYetTitreY()

With ActiveChart
.SetElement msoElementPrimaryValueAxisShow
.SetElement msoElementPrimaryValueAxisTitleHorizontal
End With

End Sub

Le résultat est le suivant :

Modification du Format des Chiffres d’un Axe

Nous avons sélectionné un graphique dans la feuille de calcul, comme indiqué ci-dessous :

Vous pouvez modifier le format numérique d’un axe. Le code suivant change le format des chiffres de l’axe des ordonnées en devise :

Sub ChangerLeFormatNumériqueAxe()

ActiveChart.Axes(xlValue).TickLabels.NumberFormat = "$#,##0.00"

End Sub

Le résultat est le suivant :

Modification du Formatage de la Police dans un Graphique

Nous avons sélectionné le graphique suivant dans la feuille de calcul comme indiqué ci-dessous :

Vous pouvez modifier le formatage de la police de l’ensemble du graphique, en vous référant à l’objet police et en modifiant son nom, son poids et sa taille. Le code suivant modifie le type, le poids et la taille de la police de l’ensemble du graphique.

Sub ModifierLeFormatDePoliceDuGraphique()

With ActiveChart

.ChartArea.Format.TextFrame2.TextRange.Font.Name = "Times New Roman"
.ChartArea.Format.TextFrame2.TextRange.Font.Bold = True
.ChartArea.Format.TextFrame2.TextRange.Font.Size = 14

End With

End Sub

Le résultat est le suivant :

Suppression d’un Graphique à l’Aide de VBA

Nous avons sélectionné un graphique dans la feuille de calcul, comme indiqué ci-dessous :

Nous pouvons utiliser le code suivant pour supprimer ce graphique :

Sub SuppressionGraphiqueActif()

ActiveChart.Parent.Delete

End Sub

Référence à la Collection ChartObjects

Vous pouvez accéder à tous les graphiques intégrés dans votre feuille de calcul ou votre classeur en vous référant à la collection ChartObjects. Nous avons deux graphiques sur la même feuille, comme indiqué ci-dessous :

Nous allons nous référer à la collection ChartObjects afin de donner aux deux graphiques de la feuille de calcul la même hauteur, la même largeur, supprimer les lignes de la grille, donner la même couleur à l’arrière-plan, donner la même couleur à la zone de tracé et donner la même couleur aux lignes de la zone de tracé :

Sub RéférerÀTousLesGraphiquesDeLaFeuille()

Dim graph As ChartObject

For Each graph In ActiveSheet.ChartObjects
graph.Height = 144.85
graph.Width = 246.61

graph.Chart.Axes(xlValue).MajorGridlines.Delete
graph.Chart.PlotArea.Format.Fill.ForeColor.RGB = RGB(242, 242, 242)
graph.Chart.ChartArea.Format.Fill.ForeColor.RGB = RGB(234, 234, 234)
graph.Chart.PlotArea.Format.Line.ForeColor.RGB = RGB(18, 97, 172)

Next graph

End Sub

Le résultat est le suivant :

Insertion d’un Graphique sur sa Propre Feuille de Graphique

Nous avons la plage A1:B6 qui contient les données sources, montrées ci-dessous :

Vous pouvez créer un graphique en utilisant la méthode Charts.Add. Le code suivant va créer un graphique sur sa propre feuille de graphique :

Sub InsérerGraphiqueSurUneFeuilleDédiée()

Sheets("Feuil1").Range("A1:B6").Select
Charts.Add

End Sub

Le résultat est le suivant :

Consultez nos autres tutoriels sur les graphiques : Graphiques dans Excel Créer un graphique à barres en VBA

vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA