Gestion des graphiques sur Excel VBA

Pour la visualisation graphique des données numériques dans Microsoft Excel, il existe une plage assez large de diagrammes de différents types :

Diagrammes
Formes
WordArt
mise en forme conditionnelle
Sparklines
SmartArt

Les diagrammes peuvent être rapidement générés dans Excel en appuyant simplement sur un bouton. Dans ce chapitre, vous apprendrez à créer et à modifier des diagrammes à l’aide du code de programme VBA. Cela vous donne la possibilité d’utiliser vos compétences en programmation pour créer des diagrammes spéciaux.

 Naturellement, pour construire un diagramme, vous devez d’abord préparer une plage de données à tracer, déterminer le type de graphique, réfléchir à tous les éléments que vous souhaitez afficher sur le graphique, etc. Ce chapitre est consacré à la démonstration des possibilités de création de, ainsi que les objets Chart et ChartObject, qui vous permettent d’automatiser à la fois le processus de création de graphiques et leurs paramètres.

1 Que devez-vous savoir sur les graphiques?
Dans Excel, vous pouvez créer deux types de graphiques: graphiques incorporés et graphiques sur des feuilles de graphique. Les graphiques incorporés sont créés sur une feuille de calcul à côté des tableaux, des données et du texte, et sont utilisés pour créer des rapports. Les diagrammes sur une feuille graphique sont pratiques pour la préparation de diapositives ou pour l’impression.
Les graphiques sont construits pratiquement en un seul clic: sélectionnez les données préparées pour le graphique, accédez à l’onglet Insertion du ruban et dans le groupe Graphiques, sélectionnez le type de graphique souhaité. Par défaut, le diagramme tracé est placé à côté des données sur la feuille de calcul.

1.1 A propos des collections ChartObjects et Charts, les objets ChartObject et Chart.
Dans Excel, vous pouvez créer différents types de graphiques et les mettre en forme de manière appropriée. Dans VBA, la collection Sheets comprend deux sous collections : Worksheets et Charts. Les objets de la collection Charts sont des graphiques créés sur des feuilles de graphique. Cette collection n’inclut pas les graphiques directement incorporés dans les feuilles de calcul. Ces graphiques appartiennent à la collection ChartObjects. Ainsi, le ChartObject est incorporé dans Worksheet et Chart est incorporé dans Workbook. Les objets Workbook et Application ont une propriété ActiveChart commune qui renvoie le graphique de classeur actif, quelle que soit la famille à laquelle il appartient.

L’objet Chart a un certain nombre de sous objets en relation avec lui, qui sont répertoriés dans le tableau suivant :

Tableau : Les sous objets de l’objet Chart

Objet La description
ChartArea La zone dans laquelle le graphique est dessiné
PlotArea La zone du graphique où le graphique est dessiné
Floor Plan horizontal d’un graphique 3D (base)
Walls (BackWall, Walls) Plans verticaux 3D
Corners Coins d’un graphique 3D
PageSetup Paramètres de la page
ChartTitle Titre du graphique
SeriesCollection Plage de données tracée le long de l’axe des ordonnées
Tredlines Ligne de tendance
Axis Coordonner les axes
AxisTitle Titres de l’Axe
DisplayUnitLabel Unité de mise à l’échelle des axes
Gridlines Grille de coordonnées
TickLabels Icônes de l’axe
DataTable Tableau de données du graphique
Legend Légende
Shapes Zone de tracé graphique
SeriesCollection Série de données
DataLabels Signatures de données
Points Points de données

 

Si le diagramme se trouve sur une feuille de calcul, la hiérarchie des objets en référence, par exemple, au titre du diagramme peut être représentée comme suit:

Application
  Workbook
    Worksheet
      ChartObject
        Chart
          ChartTitle

Pour les graphiques créés sur des feuilles de graphique, la hiérarchie des objets sera légèrement différente :

Application
  Workbook
    Chart
      ChartTitle

1.2 Ajout d’un nouvel élément aux collections ChartObjects et Charts
Les collections ChartObjects et Charts ont les propriétés Add (créer un nouveau élément de la collection), Delete (supprimer un élément de la collection) et Count (compter le nombre d’éléments de la collection).
La méthode Add de la ChartObjects inclut les paramètres suivants:

Add(Left, Top, Width, Height)

Left, Top – définissez les coordonnées sur la feuille de calcul du coin supérieur gauche du diagramme.
Width, Height – définissez la largeur et la hauteur du graphique.
Tous les paramètres de méthode sont facultatifs.
À son tour, la méthode Add de la collection Charts a les paramètres suivants:

Add(Before, After, Count)

Before – indique quelle feuille le graphique est ajouté avant.
After – indique quelle feuille le graphique est ajouté après.
Count – définit le nombre de graphiques ajoutés.
Tous les paramètres de méthode sont également facultatifs.

1.3 Propriétés de l’objet graphique
L’objet Chart a plus de 50 propriétés qui déterminent l’apparence du graphique (pour une description détaillée de ces propriétés, voir le système d’aide d’Excel). Les principales propriétés de l’objet Chart sont présentées dans le tableau suivant et les principaux types de graphiques (valeurs de la propriété ChartType).
Propriétés de base de l’objet Chart

Propriété Description
Area3DGroup Renvoie un objet ChartGroup qui encapsule des informations sur la zone dans laquelle le graphique 3D est affiché
AutoScaling Définit la mise à l’échelle automatique des graphiques 3D
Bar3DGroup Renvoie un objet ChartGroup qui encapsule des informations sur un graphique 3D
ChartArea Renvoie un objet ChartArea
ChartTitle Renvoie un objet ChartTitle
ChartType Spécifie le type de graphique. Les valeurs admissibles sont données dans le tableau 17 .4
Column3DGroup Renvoie un objet ChartGroup qui encapsule des informations sur les colonnes d’un graphique 3D
Corners Renvoie l’objet Corners
DataTable Renvoie un objet DataTable
DepthPercent Définit le facteur de profondeur pour un graphique 3D
DisplayBlanksAs Spécifie comment les cellules vides sont interprétées lors de la construction d’un graphique. Les valeurs valides sont xlNotPlotted, xlInterpolated et xlZero
Elevation Spécifie l’angle sous lequel on regarde un graphique 3D
Floor Renvoie l’objet Floor
GapDepth Spécifie l’espacement entre les lignes pour un graphique 3D
HasAxis Définit si le graphique a des axes
HasDataTable Définit s’il existe une table de données
HasLegend Vérifie s’il y a une légende
HasTitle Vérifie s’il y a un en-tête
HeightPercent Spécifie la hauteur du graphique en pourcentage de sa largeur
Hyperlinks Renvoie la famille Hyperlinks
Index Renvoie la valeur d’index dans la famille Charts
Legend Renvoie l’objet Legend
PageSetup Renvoie un objet PageSetup
Perspective Définit la perspective d’un graphique 3D
PlotArea Renvoie l’objet PlotArea
PlotBy Détermine comment les données sont organisées dans la plage. Valeurs valides: xlColumns et xlRows
PlotVisibleOnly Spécifie si les cellules invisibles doivent être prises en compte
ProtectContents, ProtectData, ProtectDrawingObjects, ProtectFormatting, ProtectionSelection, ProtectGoalSeek Propriétés booléennes qui définissent , si la protection est définie sur l’élément correspondant du diagramme
Rotation Renvoie l’angle de rotation d’un graphique 3D autour de l’axe z
Visible Contrôle la visibilité du graphique
Walls Renvoie l’objet Walls

Valeurs de propriété ChartType valides

Type de graphique Constantes
diagramme à bandes xlColumnClustered, xl3DcolumnClustered, xlColumnStacked, xl3DcolumnStacked, xlColumnStacked100, xl3DColumnStacked100, xl3Dcolumn
Barre groupée xlBarClustered, xl3DbarClustered, xlBarStacked, xl3DbarStacked, xlBarStacked100, xl3DbarStacked100
Ligne xlLine, xlLineMarkers, xlLineStacked, xlLineMarkersStacked, xlLineStacked100, xlLineMarkersStacked100, xl3Dline
Circulaire xlPie, xlPieExploded, xl3Dpie, xl3DpieExploded, xlPieOfPie, xlBarOfPie
Nuages de points xlXYScatter, xlXYScatterSmooth, xlXYScatterSmoothNoMarkers, xlXYScatterLines, xlXYScatterLinesNoMarkers
Aire xlArea, xl3Darea, xlAreaStacked, xl3DareaStacked, xlAreaStacked100, xl3DAreaStacked100
Anneau xlDoughnut, xlDoughnutExplodé
Radar xlRadar, xlRadarMarkers, xlRadarFilled
Surface xlSurface, xlSurfaceTopView, xlSurfaceWireframe, xlSurfaceTopViewWireframe
Bulle xlBubble, xlBubble3Deffect
Échange xlStockHLC, xlStockVHLC, xlStockOHLC, xlStockVOHLC
Cylindrique xlCylinderColClustered, xlCylinderBarClustered, xlCylinderColStacked, xlCylinderBarStacked, xlCylinderColStacked100, xlCylinderBarStacked100, xlCylinderCol
Conique xlConeColClustered, xlConeBarClustered, xlConeColStacked, xlConeBarStacked, xlConeColStacked100, xlConeBarStacked100, xlConeCol
Pyramidal xlPyramidColClustered, xlPyramidBarClustered, xlPyramidColStacked, xlPyramidBarStacked, xlPyramidColStacked100, xlPyramidBarStacked100, xlPyramidCol

1.4 Méthodes des objets graphiques
L’objet Chart, comme tout autre objet, possède non seulement des propriétés, mais également des méthodes qui vous permettent de contrôler son apparence. Le tableau suivant montre les méthodes de l’objet Chart qui vous seront utiles lorsque vous travaillez avec cet objet.
Méthodes des objets graphiques

Méthode Description
Activate Activer le graphique
ApplyDataLabels Application d’étiquettes de données
AutoFormat Format automatique
Axes Renvoie la famille Axes utilisée pour définir diverses propriétés d’axe
ChartObjects Renvoie la famille ChartObjects
ChartWizard Construire un diagramme
CheckSpelling Vérification orthographique
Copy Copie le graphique à l’emplacement spécifié
CopyPicture Copie le graphique dans le presse-papiers sous forme d’image
Delete Supprime le graphique
Deselect Désélectionne un graphique
Export Exporte le graphique dans un fichier graphique
GetChartElement Renvoie des informations sur un élément de graphique situé à un point spécifié
Location Spécifie l’emplacement du graphique
Move Déplace le graphique
Paste Colle les données du graphique à partir du presse-papiers
PrintOut Imprime le graphique
SendToBack Affiche le graphique en arrière-plan
Protect Protection des ensembles
Refresh Actualise le graphique
SaveAs Enregistre le diagramme modifié dans un nouveau fichier
Select Sélectionne un graphique
SeriesCollection Renvoie des séries de données
SetBackgroundPicture Spécifie l’image d’arrière-plan
SetSourceData Spécifie la plage sur laquelle le graphique est basé
Unprotect Supprime la protection du diagramme

1.5 Événements d’objets de graphique

L’objet Chart possède également un certain nombre d’événements (tableau 12.5) qui permettent de suivre diverses actions de l’utilisateur.
Événements d’objets de graphique

Evénement Description
Activate Se produit lorsque le graphique est activé
BeforeDoubleClick Se produit avant le double-clic
BeforeRightClick Se produit avant le clic droit
Calculate Se produit lorsque les données changent
Deactivate Se produit lorsque le graphique est désactivé
DragOver Se produit lors du glissement d’une plage sur un graphique
DragPlot Se produit lors du glisser-coller d’une plage dans un graphique
MouseDown, MouseUp Se produit lorsque l’utilisateur appuie et relâche un bouton de la souris
MouseMove Se produit lorsque l’utilisateur déplace le pointeur de la souris sur le graphique
Resize Se produit lorsque le graphique est redimensionné
Select Se produit lorsqu’un élément de graphique est sélectionné
SeriesChange Se produit lorsque le pointeur se transforme en une série de données

2 Créer un graphique

2.1 Créer un simple graphique

Comme vous le savez, les diagrammes peuvent être créés sur vos propres feuilles dans un classeur ou incorporés dans une feuille de calcul. Les deux méthodes sont présentées dans cette section. Le point de départ doit être un tableau avec des valeurs de température dans les deux cas.

2.2 Créer une feuille de graphique
Les graphiques sur leurs propres feuilles (feuilles de graphique) sont au même niveau dans la hiérarchie des objets que les feuilles de calcul. Il existe différentes listes dans un classeur:
Sheets contient toutes les feuilles de calcul et les feuilles de diagramme.
Worksheets ne contiennent que les feuilles de calcul.
Charts contient uniquement les feuilles de diagramme.
La procédure suivante crée un graphique linéaire simple en tant que feuille de graphique dans le classeur:

Sub CreerGraphFeuil()
ThisWorkbook.Charts.Add After:=Worksheets("Feuil1")
  With ActiveChart
    .ChartType = xlLine
    .SetSourceData Worksheets("Feuil1").Range("A1:C11")
    .Name = "Graphique1"
  End With
End Sub

Commentaires
La méthode Add () de l’objet Charts crée une feuille de graphique et l’ajoute à la liste de graphiques du classeur actif. Comme pour la copie ou le déplacement de feuilles de calcul, vous pouvez utiliser Avant (Before) et Après (After) pour spécifier l’emplacement de la nouvelle feuille. S’il n’est pas spécifié, la nouvelle feuille est insérée avant la feuille actuellement active.
La nouvelle feuille de diagramme est de type Chart. Il devient la feuille de diagramme active. Par conséquent, il peut être résolu avec ActiveChart.
La propriété ChartType définit le type du diagramme, ici xlLine pour un diagramme linéaire.

La méthode SetSourceData () définit la source de données du diagramme. Dans ce cas, il s’agit de la plage A1 à C11 de la feuille de tableau (avec les données de température).
Vous pouvez donner un nom au diagramme à l’aide de la propriété Name.

Remarque
La méthode SetSourceData () a un deuxième paramètre facultatif qui détermine si le diagramme affiche la table par colonnes (xlColumns) ou par ligne (xlRows). La première valeur est la norme. Le tableau suivant présente certains types de diagrammes.

2.3 Créer un diagramme intégré
Comme nous l’avons déjà vu, collection Worksheets contient la sous-collection ChartObjects, c’est-à-dire la collection de tous les objets ChartObject de la feuille de graphique. Chaque objet ChartObject représente un graphique incorporé.
L’objet ChartObject agit comme un conteneur pour un objet Chart. Les propriétés et méthodes de l’objet ChartObject contrôlent l’apparence et la taille du graphique incorporé sur la feuille.

La procédure suivante incorpore un graphique linéaire simple dans la feuille Feuil1:

Sub CreerGraphIntegre()
    Dim CadreGraph As ChartObject
    Dim GraphReel As Chart
    Set CadreGraph = ThisWorkbook.Worksheets("Feuil1"). _
    ChartObjects.Add(250, 15, 300, 150)
    Set GraphReel = CadreGraph.Chart
    GraphReel.ChartType = xlLine
    GraphReel.SetSourceData Worksheets("Feuil1"). _
    Range("A1:C11")
End Sub

Commentaires
Tout d’abord, une variable de type ChartObject est déclarée. Il fait ensuite référence au cadre de diagramme nouvellement créé.
Une variable de type Chart est alors déclarée. Il se réfère plus tard au diagramme du cadre de diagramme nouvellement créé.
La collection ChartObjects contient tous les cadres de diagrammes incorporés dans une feuille de calcul. La méthode Add () crée un nouveau cadre de diagramme à un emplacement et une taille spécifiques. Il renvoie une référence à l’objet nouvellement créé. Les quatre paramètres de la méthode Add () sont:
– Distance entre le cadre et le bord gauche de la feuille de calcul

– Distance entre le cadre et le haut de la feuille de calcul

– Largeur du cadre
– Hauteur du cadre
La propriété Chart de ChartObject représente le diagramme réel dans le cadre.
La propriété ChartType est déjà connue; il définit le type du diagramme.
La méthode SetSourceData () est également déjà connue. Il définit la source de données du diagramme. Dans ce cas, il s’agit de la zone A1 à C11 de la feuille de calcul active.

3 Personnaliser un graphique

Les diagrammes ont de nombreux éléments avec de nombreuses propriétés, qui peuvent bien sûr également être modifiées par la suite. Ces propriétés diffèrent selon le type de diagramme. En utilisant l’exemple du diagramme linéaire que vous venez de créer, certaines propriétés et méthodes importantes peuvent être modifier ou ajouter.

3.1 Personnaliser la feuille de graphique

Sub GraphiqueNouvelleFeuilleModifier()
    Dim GraphReel As Chart
    Set GraphReel = ThisWorkbook.Charts(1)
    PersonnaliserGraphique GraphReel
End Sub

Commentaires 
Le programme est divisé en deux. Tout d’abord la partie programme qui ne s’applique qu’aux feuilles de diagramme:

Une variable de type Chart est déclarée. La première feuille de graphique est affectée à ce classeur.
La procédure PersonnaliserGraphique () est appelée, la première feuille de graphique Charts (1) est transférée en paramètre.
La section suivante s’applique à la fois aux feuilles de diagramme et aux diagrammes incorporés:

Sub PersonnaliserGraphique (GraphReel As Chart)
' Zone de graphique
    GraphReel.ChartArea.Interior.Color = vbCyan
' Zone de dessin
    GraphReel.PlotArea.Interior.Color = vbYellow
' Titre
    GraphReel.HasTitle = True
    GraphReel.ChartTitle.Text = "Température"
' Légende
    GraphReel.HasLegend = True
    With GraphReel.Legend
        .Interior.Color = vbYellow
        .Border.Color = vbBlue
        .Border.Weight = xlThick
    End With
' L’axe de catégories
    With GraphReel.Axes(xlCategory)
        .HasTitle = True
        .AxisTitle.Text = " Date "
        .TickLabels.NumberFormatLocal = "JJ.MM."
    End With
' L’axe de valeurs
    With GraphReel.Axes(xlValue)
        .HasTitle = True
        .AxisTitle.Text = " Degré"
        .MinimumScale = 5
        .MaximumScale = 35
    End With
' Série de données
    With GraphReel.SeriesCollection(1)
        .Border.Color = vbRed
        .MarkerStyle = xlMarkerStyleCircle
        .MarkerForegroundColor = vbRed
        .MarkerBackgroundColor = vbRed
    End With
' Point de données
    With GraphReel.SeriesCollection(1).Points(3)
        .Border.Color = vbBlue
        .ApplyDataLabels xlShowValue
        .MarkerStyle = xlMarkerStyleSquare
        .MarkerForegroundColor = vbBlue
        .MarkerBackgroundColor = vbBlue
    End With
End Sub

Commentaires 

La propriété ChartArea représente l’espace de graphique. Cela inclut la zone de dessin, titre et légende. Il y a la propriété Interior qui représente la couleur de l’intérieur de l’objet, qui est le cyan.
La propriété PlotArea représente la zone de dessin du diagramme. Elle vous a aussi une propriété Interior, dont la couleur est définie sur jaune dans cet exemple.

Les graphique peuvent avoir un titre. Ceci est déterminé par la propriété HasTitle. S’il est défini sur True, le diagramme a un titre; s’il est false, il n’a pas de titre.
L’apparence du titre est déterminée par la propriété ChartTitle. La propriété Text contient le texte du titre.
Les graphiques peuvent avoir une légende. Ceci est déterminé par la propriété HasLegend. Il peut également être défini sur True ou False.
L’apparence de la légende est déterminée par la propriété Legend. Semblable à une cellule, une légende a les propriétés Interior et Border. Cela vous permet de déterminer la couleur de l’intérieur et l’épaisseur du cadre.
Tous les axes d’un graphique sont répertoriés dans la collection Axes. La méthode Axes () de l’objet Chart doit être utilisée pour décider de quel axe il s’agit. Cette méthode a deux paramètres :

xlCategory pour l’axe horizontal ou  l’axe des catégories
xlValue pour l’axe vertical ou  l’axe des valeurs
Pour chacun des deux axes, l’exemple spécifie qu’ils ont un titre d’axe AxisTitle (HasTitle = True). Le texte du titre de l’axe est alors affecté (AxisTitle.Text = …).
Pour l’axe des catégories, le formatage des étiquettes de l’axe (TickLabels) est déterminé. L’exemple montre les dates ici; ils sont formatés en utilisant NumberFormatLocal.
La mise à l’échelle est déterminée pour l’axe des valeurs. Ainsi, la valeur la plus basse (MinimumScale) et la valeur la plus élevée (MaximumScale) de l’échelle peuvent être définies.
Toutes les séries de données d’un diagramme sont répertoriées dans SeriesCollection, SeriesCollection. Une seule série de données est un objet Series Series. Tout d’abord, en utilisant le SeriesCollection () de l’objet Chart peut être décidé de quelle série de données il s’agit. Cette méthode reçoit le numéro de la série de données en tant que paramètre, en commençant par 1, et renvoie la série de données correspondante en tant que valeur de retour.
La bordure peut être utilisée pour déterminer les propriétés du cadre (pour la bordure de la glissière de ligne, les propriétés de la ligne réelle) de la série de données. Dans cet exemple, la couleur est définie sur le rouge.
Avec MarkerStyle, MarkerForegroundColor, MarkerBackgroundColor vous décidez de l’apparence des points marqueurs sur la ligne.
Un certain nombre de constantes sont autorisées pour MarkerStyle, par ex. MarkerStyle
xlMarkerStyleCircle (cercle), xlMarkerStyleSquare (carré), xlMarkerStyleNone (pas de marquage).
Les propriétés MarkerForegroundColor et MarkerBack-Marker … Color groundColor représentent la couleur du remplissage et du bord du marqueur.
Tous les points de données d’une série de données se trouvent dans la liste Points. Un seul point de données est un objet de type Point. Tout d’abord, la méthode Points () de l’objet Series doit être utilisée pour décider de quel point de données il s’agit. Cette méthode reçoit le numéro du point de données en tant que paramètre, en commençant par 1, et renvoie le point de données correspondant en tant que valeur de retour.
Avec Bordure, vous déterminez les propriétés du cadre (dans le cas des diagrammes linéaires, les propriétés de la ligne réelle) du point de données. Dans cet exemple, la couleur est définie sur bleu.

La méthode ApplyDataLabels () détermine l’étiquetage des séries de données ou des points de données. Le paramètre le plus important est le type d’étiquette. Les valeurs autorisées sont une. xlShowValue (valeur), xlShowLabel (catégorie), xlShowNone (sans étiquette).
L’apparence du marquage d’un point de données peut être définie comme pour une série de données.

3.2 Personnaliser un diagramme intégré
Le programme de modification d’un diagramme incorporé a la même structure que le programme de modification d’une feuille de diagramme, c’est-à-dire en deux parties. La section du programme suit, qui ne s’applique qu’aux diagrammes incorporés :

Sub PersonnaliserGraphiqueIntegre()
    Dim CO As ChartObject
    Dim CH As Chart
    Set CO = ThisWorkbook.Worksheets("Feuil1"). _
    ChartObjects(1)
    CO.Left = 180
    CO.Top = 25
    CO.Width = 390
    CO.Height = 250
    Set CH = CO.Chart
    PersonnaliserGraphique CH
End Sub

Commentaires
Deux variable de type ChartObject et Chart sont déclarées.

Dans le cas d’un graphique intégré, il peut être judicieux de modifier la position et la taille du cadre du diagramme. Vous pouvez utiliser les propriétés Left, Top, Width et Height pour cela.
La procédure (déjà connue) PersonnaliserGraphique () est appelée; le graphique est personnalisé.

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x