Des tableaux et des graphiques Excel sont utilisés pour afficher visuellement les données. Dans ce didacticiel, nous allons expliquer comment utiliser VBA pour créer et manipuler des graphiques et des éléments de graphique.
Vous pouvez créer des graphiques incorporés dans une feuille de calcul ou des graphiques sur leurs propres feuilles de graphique.
Création d'un graphique intégré à l'aide de VBA
Nous avons la plage A1:B4 qui contient les données sources, illustrées ci-dessous :
Vous pouvez créer un graphique à l'aide de la méthode ChartObjects.Add. Le code suivant créera un graphique incorporé sur la feuille de calcul :
12345678 | Sub CreateEmbeddedChartUsingChartObject()Dim Embeddedchart As ChartObjectDéfinir le graphique intégré = Sheets("Sheet1").ChartObjects.Add(Gauche :=180, Largeur :=300, Haut :=7, Hauteur :=200)Embeddedchart.Chart.SetSourceData Source :=Sheets("Sheet1").Range("A1:B4")Fin du sous-marin |
Le résultat est:
Vous pouvez également créer un graphique à l'aide de la méthode Shapes.AddChart. Le code suivant créera un graphique incorporé sur la feuille de calcul :
12345678 | Sub CreateEmbeddedChartUsingShapesAddChart()Diminuer le graphique intégré en tant que formeDéfinir le graphique intégré = Sheets("Sheet1").Shapes.AddChartEmbeddedchart.Chart.SetSourceData Source :=Sheets("Sheet1").Range("A1:B4")Fin du sous-marin |
Spécification d'un type de graphique à l'aide de VBA
Nous avons la plage A1:B5 qui contient les données sources, illustrées ci-dessous :
Vous pouvez spécifier un type de graphique à l'aide de la propriété ChartType. Le code suivant créera un graphique à secteurs sur la feuille de calcul puisque la propriété ChartType a été définie sur xlPie :
123456789 | Sous-spécifierAChartType()Dim chrt As ChartObjectSet chrt = Sheets("Sheet1").ChartObjects.Add(Gauche :=180, Largeur :=270, Haut :=7, Hauteur :=210)chrt.Chart.SetSourceData Source :=Sheets("Sheet1").Range("A1:B5")chrt.Chart.ChartType = xlPieFin du sous-marin |
Le résultat est:
Voici quelques-uns des types de graphiques courants qui sont généralement spécifiés, bien qu'il en existe d'autres :
- xlZone
- xlPie
- xlLigne
- xlRadar
- xlXYScatter
- xlSurface
- xlBulle
- xlBarClustered
- xlColonneCluster
Ajouter un titre de graphique à l'aide de VBA
Nous avons un graphique sélectionné dans la feuille de calcul comme indiqué ci-dessous :
Vous devez d'abord ajouter un titre de graphique à l'aide de 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 :
123456 | Sub AddingAndSettingAChartTitle()ActiveChart.SetElement (msoElementChartTitleAboveChart)ActiveChart.ChartTitle.Text = "Les ventes du produit"Fin du sous-marin |
Le résultat est:
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 un graphique sélectionné dans la feuille de calcul comme indiqué ci-dessous :
Vous pouvez modifier la couleur d'arrière-plan de l'ensemble du graphique en définissant la propriété RVB de l'objet FillFormat de l'objet ChartArea. Le code suivant donnera au graphique une couleur de fond orange clair :
12345 | Sub AddingABackgroundColorToTheChartArea()ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RVB (253, 242, 227)Fin du sous-marin |
Le résultat est:
Vous pouvez également modifier la couleur d'arrière-plan de l'ensemble du graphique en définissant la propriété ColorIndex de l'objet Interior de l'objet ChartArea. Le code suivant donnera au graphique une couleur de fond orange :
12345 | Sub AddingABackgroundColorToTheChartArea()ActiveChart.ChartArea.Interior.ColorIndex = 40Fin du sous-marin |
Le résultat est:
Remarque : La propriété ColorIndex vous permet de spécifier une couleur basée sur une valeur de 1 à 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 un graphique sélectionné dans la feuille de calcul comme indiqué ci-dessous :
Vous pouvez modifier la couleur d'arrière-plan de la zone de traçage du graphique uniquement en définissant la propriété RVB de l'objet FillFormat de l'objet PlotArea. Le code suivant donnera à la zone de tracé du graphique une couleur de fond vert clair :
12345 | Sub AddingABackgroundColorToThePlotArea()ActiveChart.PlotArea.Format.Fill.ForeColor.RGB = RVB (208, 254, 202)Fin du sous-marin |
Le résultat est:
Ajouter une légende à l'aide de VBA
Nous avons un graphique sélectionné 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 à gauche du graphique :
12345 | Sub AddingALegend()ActiveChart.SetElement (msoElementLegendLeft)Fin du sous-marin |
Le résultat est:
Vous pouvez spécifier la position de la légende des manières suivantes :
- 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.
Ajout d'étiquettes de données à l'aide de VBA
Nous avons un graphique sélectionné dans la feuille de calcul, comme indiqué 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 :
12345 | Sub AddingADataLabels()ActiveChart.SetElement msoElementDataLabelInsideEndFin du sous-marin |
Le résultat est:
Vous pouvez spécifier le positionnement des étiquettes de données des manières suivantes :
- 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 au bas du graphique.
- msoElementDataLabelCallout - affiche les étiquettes de données sous forme de légende.
- 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'intérieur du graphique.
Ajout d'un axe X et d'un titre en VBA
Nous avons un graphique sélectionné dans la feuille de calcul, comme indiqué ci-dessous :
Vous pouvez ajouter un axe X et un titre d'axe X à l'aide de la méthode Chart.SetElement. Le code suivant ajoute un axe X et un titre d'axe X au graphique :
123456789 | Sous-ajout d'un axe X et d'un titre X ()Avec ActiveChart.SetElement msoElementPrimaryCategoryAxisShow.SetElement msoElementPrimaryCategoryAxisTitleHorizontalTerminer parFin du sous-marin |
Le résultat est:
Ajout d'un axe Y et d'un titre en VBA
Nous avons un graphique sélectionné dans la feuille de calcul, comme indiqué ci-dessous :
Vous pouvez ajouter un axe Y et un titre d'axe Y à l'aide de la méthode Chart.SetElement. Le code suivant ajoute un axe Y et un titre d'axe Y au graphique :
1234567 | Sous-ajout d'AxisandYTitle()Avec ActiveChart.SetElement msoElementPrimaryValueAxisShow.SetElement msoElementPrimaryValueAxisTitleHorizontalTerminer parFin du sous-marin |
Le résultat est:
Modification du format numérique d'un axe
Nous avons un graphique sélectionné dans la feuille de calcul, comme indiqué ci-dessous :
Vous pouvez modifier le format numérique d'un axe. Le code suivant modifie le format numérique de l'axe des Y en devise :
12345 | Sous ChangeTheNumberFormat()ActiveChart.Axes(xlValue).TickLabels.NumberFormat = "$#,##0.00"Fin du sous-marin |
Le résultat est:
Modification de la mise en forme 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 la mise en forme de l'ensemble de la police du graphique en vous référant à l'objet police et en modifiant son nom, son épaisseur et sa taille. Le code suivant modifie le type, le poids et la taille de la police de l'ensemble du graphique.
12345678910 | Sub ChangeTheFontFormatting()Avec ActiveChart.ChartArea.Format.TextFrame2.TextRange.Font.Name = "Times New Roman".ChartArea.Format.TextFrame2.TextRange.Font.Bold = True.ChartArea.Format.TextFrame2.TextRange.Font.Size = 14Terminer par |
Le résultat est:
Supprimer un graphique à l'aide de VBA
Nous avons un graphique sélectionné dans la feuille de calcul, comme indiqué ci-dessous :
Nous pouvons utiliser le code suivant pour supprimer ce graphique :
12345 | Sous SupprimerLeChart()ActiveChart.Parent.DeleteFin du sous-marin |
Se référer à la collection ChartObjects
Vous pouvez accéder à tous les graphiques incorporé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 ci-dessous :
Nous ferons référence à la collection ChartObjects afin de donner aux deux graphiques de la feuille de calcul la même hauteur, la même largeur, supprimer le quadrillage, rendre la couleur d'arrière-plan identique, donner aux graphiques la même couleur de zone de traçage et rendre la couleur de ligne de la zone de traçage la même Couleur:
12345678910111213141516 | Sub ReferringToAllTheChartsOnASheet()Dim cht As ChartObjectPour chaque cht dans ActiveSheet.ChartObjectscht.Hauteur = 144,85cht.Largeur = 246.61cht.Chart.Axes(xlValue).MajorGridlines.Deletecht.Chart.PlotArea.Format.Fill.ForeColor.RVB = RVB(242, 242, 242)cht.Chart.ChartArea.Format.Fill.ForeColor.RVB = RVB (234, 234, 234)cht.Chart.PlotArea.Format.Line.ForeColor.RVB = RVB(18, 97, 172)SuivantFin du sous-marin |
Le résultat est:
Insertion d'un graphique sur sa propre feuille de graphique
Nous avons la plage A1:B6 qui contient les données sources, illustrées ci-dessous :
Vous pouvez créer un graphique à l'aide de la méthode Charts.Add. Le code suivant créera un graphique sur sa propre feuille graphique :
123456 | Sous-InsertionAChartOnItsOwnChartSheet()Feuilles("Feuille1").Plage("A1:B6").SélectionnerGraphiques.AjouterFin du sous-marin |
Le résultat est:
Voir certains de nos autres didacticiels de cartographie :
Graphiques dans Excel
Créer un graphique à barres en VBA