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é.