Création de graphiques dynamiques, Excel VBA
Voici une explication détaillée sur la création de graphiques dynamiques avec VBA dans Excel, étape par étape :
Étape 1 : Préparer vos données
Tout d’abord, vous devez avoir des données à utiliser pour créer un graphique dynamique. Par exemple, vous pouvez avoir un jeu de données simple comme suit :
| Date | Ventes |
| 2025-01-01 | 150 |
| 2025-02-01 | 200 |
| 2025-03-01 | 250 |
| 2025-04-01 | 300 |
| … | … |
Assurez-vous que vos données sont organisées sous forme de tableau, chaque colonne ayant des en-têtes (dans cet exemple, « Date » et « Ventes »).
Étape 2 : Insérer un graphique manuellement (facultatif)
Avant d’écrire du code VBA, il peut être utile d’insérer manuellement un graphique de base pour visualiser à quoi ressemblera votre graphique généré par VBA. Pour ce faire :
- Sélectionnez la plage de données que vous souhaitez tracer.
- Allez dans l’onglet Insertion dans le ruban.
- Choisissez un type de graphique, comme un Graphique en courbes ou un Graphique en colonnes.
- Cette étape est facultative, mais elle vous aide à visualiser ce à quoi ressemblera votre graphique dynamique.
Étape 3 : Écrire le code VBA
Maintenant, nous allons écrire une macro VBA pour créer un graphique dynamique. Un graphique dynamique signifie qu’il s’ajustera automatiquement en fonction des modifications apportées à la plage de données, comme l’ajout de nouvelles données.
Voici le code qui va créer un graphique dynamique :
Sub CreateDynamicChart()
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim lastRow As Long
Dim dataRange As Range
Dim chartRange As Range
' Définir la feuille de travail
Set ws = ThisWorkbook.Sheets("Sheet1") ' Remplacez "Sheet1" par le nom de votre feuille
' Trouver la dernière ligne de données dans la colonne des Ventes (ici supposé dans la colonne B)
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Définir la plage de données dynamiquement (changez A1:B1 en fonction de vos en-têtes et colonnes)
Set dataRange = ws.Range("A1:B" & lastRow)
' Créer un nouvel objet graphique
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=500, Top:=100, Height:=300)
' Définir la plage de données pour le graphique
chartObj.Chart.SetSourceData Source:=dataRange
' Définir le type de graphique (ici, un graphique en courbes)
chartObj.Chart.ChartType = xlLine
' Définir le titre du graphique et des axes
chartObj.Chart.HasTitle = True
chartObj.Chart.ChartTitle.Text = "Ventes au fil du temps"
chartObj.Chart.Axes(xlCategory, xlPrimary).HasTitle = True
chartObj.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Date"
chartObj.Chart.Axes(xlValue, xlPrimary).HasTitle = True
chartObj.Chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Ventes"
End Sub
Explication du code :
1. Paramétrage de la feuille de travail et de l’objet graphique :
- La variable ws représente la feuille de calcul où se trouvent les données. Vous devez remplacer « Sheet1 » par le nom réel de votre feuille de calcul.
- La variable chartObj est utilisée pour créer l’objet graphique.
2. Trouver la dernière ligne :
- Nous déterminons la dernière ligne dans la colonne « Date » (colonne A) à l’aide de ws.Cells(ws.Rows.Count, « A »).End(xlUp).Row. Cela permet de garantir que la plage s’adapte dynamiquement en fonction du nombre de lignes de données.
3. Définir la plage de données :
- La variable dataRange représente la plage de données que vous souhaitez afficher dans le graphique. Elle est définie dynamiquement en faisant référence à la plage de A1:B suivie de la valeur de lastRow, ce qui garantit que la plage s’ajuste automatiquement lorsqu’on ajoute de nouvelles données.
4. Création du graphique :
- La ligne chartObj = ws.ChartObjects.Add crée un nouveau graphique et l’ajoute à la feuille de calcul avec la taille et la position spécifiées.
- La méthode SetSourceData Source:=dataRange attribue la plage de données dynamique au graphique.
- Le type de graphique est défini avec chartObj.Chart.ChartType = xlLine (vous pouvez le changer pour xlColumn, xlBar, etc., en fonction du type de graphique que vous souhaitez).
5. Définir les titres :
- Le titre du graphique et des axes est configuré avec les propriétés ChartTitle.Text et AxisTitle.Text.
Étape 4 : Exécuter le code
- Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
- Allez dans Insertion > Module et collez le code VBA dans le module.
- Appuyez sur F5 ou revenez dans Excel et exécutez la macro en appuyant sur Alt + F8, sélectionnez CreateDynamicChart, puis cliquez sur Exécuter.
Résultat :
Une fois que vous avez exécuté la macro, Excel générera automatiquement un graphique dynamique. Lorsque vous ajoutez de nouvelles données dans le tableau (dans les colonnes « Date » et « Ventes »), le graphique se mettra à jour pour inclure les nouvelles valeurs.
Points clés :
- La plage dynamique garantit que le graphique s’ajuste automatiquement à mesure que des données sont ajoutées.
- Le calcul de lastRow permet de déterminer la taille de la plage de données.
- Le type de graphique peut être changé pour tout type souhaité (courbe, colonne, barre, etc.).