Les graphiques
Objectifs
Dans ce chapitre, nous allons dans un premier temps rappeler comment créer un graphique à partir d’une plage de cellules en utilisant le ruban Excel.
Il existe des milliers de combinaisons graphiques possibles ; il existe même un championnat du monde Excel qui se déroule sur des réalisations graphiques !
Sans avoir l’objectif de faire de vous un champion du monde de graphiques Excel, vous verrez dans ce chapitre les objets associés à la création de graphiques utilisés en VBA et comment utiliser l’Enregistreur de macros pour que VBA écrive du code à votre place. Enfin, une série d’exercices vous permettra de vous assurer que ces nouvelles connaissances sont bien acquises.
Graphiques sous Excel
Comme le dit le dicton, « une image vaut mille mots », les représentations graphiques ont une importance non négligeable lorsqu’il s’agit de représenter des données. Les graphiques ont suivi une évolution importante, Excel permet d’en créer de nombreux types selon le type de données à représenter et le message que vous souhaitez faire passer.
Dans Excel, les graphiques peuvent être insérés à partir de l’onglet Insertion et sont visibles dans le groupe Graphiques :
Lorsque vous avez une série de données à représenter sous forme graphique, vous pouvez choisir le type de graphique. Une fois le graphique créé, il est ensuite possible de le personnaliser en changeant par exemple les couleurs ou les formes des points, des courbes... qui sont visibles.
Hiérarchie des objets Shape, ChartObject et Chart
Lorsque vous travaillez avec des graphiques, Excel considère en réalité plusieurs niveaux d’objets qui représentent chacun une partie de ce que l’utilisateur pourra voir ou manipuler.
Sans entrer dans les détails techniques, voici une image avec les différents objets au composant un graphique :
Le cadre d’ensemble A (ChartObject) est le « récipient » dans lequel se trouvent la zone de traçage du graphique B (PlotArea), le titre du graphique C (ChartTitle) ainsi que sa légende D (Legend).
Selon le type de graphique, d’autres éléments comme les points de courbe ou les axes sont eux aussi représentés par des objets manipulables en VBA.
La couche de dessin : Shape
Que vous utilisiez une forme automatique, un graphique ou une image, le premier niveau sur lequel Excel travaille est un objet Shape. Chaque objet Shape appartient à la collection Shapes, qui se situe dans chaque feuille de votre classeur.
Il est possible à partir de la collection Shapes de créer un graphique.
La feuille de graphique : ChartObject
Lorsque vous créez un graphique, celui-ci se trouve dans un contenant que vous pouvez vous représenter visuellement comme le cadre blanc dans lequel figure le graphique, le titre et la légende. L’ensemble des objets...
Le graphique : Chart
Dans cette section vous allez en apprendre plus sur l’objet Chart, qui représente un graphique quelle que soit sa complexité et qui est manipulable aisément avec VBA.
Collection Charts
Au même titre que l’ensemble des feuilles appartiennent à la collection Worksheets, ou les classeurs appartiennent à la collection Workbooks, les graphiques appartiennent à la collection Charts. À partir de cette collection, vous pouvez créer de nouveaux graphiques ou en ajouter de nouveaux. Il est ainsi possible de connaître le nombre de graphiques à partir de la propriété Count.
Objet Chart
En VBA, un graphique est représenté par un objet Chart. Ce type de données a de nombreuses propriétés et méthodes qui lui sont propres. Les subtilités des graphiques n’étant pas l’objet de cet ouvrage, vous découvrirez les principales méthodes et propriétés vous permettant de personnaliser vos graphiques.
Créer un graphique
Comme c’est le cas pour les autres types d’objets, la première chose à faire avant de pouvoir utiliser une variable, c’est de la déclarer.
Dim cht As Chart
Exemple 1 : déclaration d’une variable de type Chart
Pour ajouter un nouveau graphique dans votre classeur, il faut passer par la méthode Add de la collection Charts.
Dim cht As Chart
Set cht = Charts.Add
Exemple 2 : ajout d’un nouveau graphique
Il existe une autre façon de créer un graphique, que vous verrez plus loin dans ce chapitre.
Définir une plage de données source : SetSourceData
Une fois que le graphique est créé, vous pouvez préciser la plage de cellules qui servira de source. Cette association se fait au moyen de la méthode SetSourceData. Cette méthode utilise deux paramètres, la syntaxe générale est la suivante :
Chart.SetSourceData(Source,[PlotBy])
Exemple 3 : syntaxe générale de la méthode SetSourceData
Le premier paramètre Source est la plage de cellules utilisée, soit un objet Range, le second paramètre permet d’indiquer si les données doivent être manipulées en lignes (xlRows) ou en colonnes (xlColumns).
En utilisant par exemple les données créées dans le cadre des exercices du chapitre précédent, les instructions seraient les suivantes :
'Déclaration et affectation faites précédemment
cht.SetSourceData Source:=Worksheets("Exercices_ManipulationGraphe")
.Range("A1:B6")
Exemple 4 : détermination...
Utiliser l’Enregistreur de macros pour créer un graphique
Devant la très grande variété d’options qui s’offre à vous lorsqu’il s’agit de créer ou de mettre à jour un graphique, il est recommandé de commencer par utiliser l’Enregistreur de macros pour ensuite décortiquer les différentes lignes de code et adapter selon vos besoins les instructions de votre programme.
En reprenant le cas de la création du graphique basé sur les données de la feuille Exercices_ManipulationFormules, en voulant un graphique de type secteur, voici ce que l’Enregistreur de macros a généré. Les lignes sont commentées pour faciliter la compréhension.
Sub CreationGraphique()
Sheets("Exercices_ManipulationFormules").Activate
Range("A1:B6").Select 'sélection de la plage de cellules
ActiveSheet.Shapes.AddChart2(251, xlPie).Select 'création
d'un nouveau graphique et activation du graphique
ActiveChart.SetSourceData Source:=Range("Exercices_ManipulationFormules!
$A$1:$B$6") 'déterminer la plage de cellules source
ActiveChart.ChartTitle.Text = "Quantité par catégorie"
'mise à jour du titre du graphique
End Sub
Exemple 13 :...
Exercices
Dans le cadre de ces exercices, créez une nouvelle feuille nommée Exercices_ManipulationGraphes. Dans cette feuille, saisissez les données dans les plages de cellules A1:B5 et D1:E5, comme sur la capture d’écran suivante :
Les exercices suivants vont vous permettre de mieux appréhender la création et la manipulation des graphiques dans votre projet VBA. Vous pouvez si vous le souhaitez utiliser l’Enregistreur de macros pour vous inspirer du code généré automatiquement. Bien que les solutions visuelles ne soient données qu’à titre indicatif, elles vous permettront d’ajuster votre code si nécessaire. Le code générant un graphique se fait par défaut dans la feuille active ; il est donc recommandé d’activer la feuille Exercices_ManipulerGraphiques pour s’assurer que la génération n’aura pas d’impact sur les autres feuilles de votre classeur.
Vous pouvez créer un module spécifique pour ces exercices si vous le souhaitez.
Création simple de graphique
Chiffre d’affaires mensuel
Créez une macro GraphiqueChiffreAffaires.
Cette macro devra créer un nouveau graphique, de type Courbe, en se basant sur les données situées dans la plage de cellules A1:B5. Le graphique doit représenter l’évolution...