Création d’un Graphique Waterfall, Excel VBA
Un Graphique Waterfall est utilisé pour illustrer visuellement les effets cumulatifs des valeurs positives et négatives successives, souvent utilisé dans les données financières telles que les revenus, les dépenses et le bénéfice net. Étant donné qu’Excel 2016 a introduit un graphique Waterfall intégré, nous allons utiliser VBA pour créer un graphique Waterfall de manière dynamique pour les versions antérieures à Excel 2016.
1. Comprendre le Graphique Waterfall
Un Graphique Waterfall se compose de :
- Valeur de départ : La première colonne (par exemple, « Solde d’ouverture »).
- Changements positifs et négatifs : Colonnes représentant les augmentations (vert) et les diminutions (rouge).
- Valeur de fin : La dernière colonne (par exemple, « Solde de clôture »).
- Ponts : Le flux cumulé des valeurs.
Puisqu’Excel ne propose pas de graphiques Waterfall avant Excel 2016, nous utiliserons des graphique en colonnes empilées et les formaterons manuellement.
2. Structure des données pour le Graphique Waterfall
Nous avons besoin d’un jeu de données structuré :
Catégorie | Valeur | Base | Augmentation | Diminution |
Ouverture | 5000 | 0 | 5000 | 0 |
Revenus | 3000 | 5000 | 3000 | 0 |
Dépenses | -2000 | 8000 | 0 | 2000 |
Bénéfice | 4000 | 6000 | 4000 | 0 |
- Colonne Base : Aide à positionner les barres flottantes.
- Colonne Augmentation : Valeurs positives.
- Colonne Diminution : Valeurs négatives converties en valeurs positives.
3. Code VBA pour Créer un Graphique Waterfall
Cette macro VBA :
1. Lit les données depuis la feuille de calcul active.
2. Traite les données dans le format nécessaire.
3. Crée un graphique en colonnes empilées.
4. Applique des couleurs pour les augmentations (vert) et les diminutions (rouge).
5. Supprime la série de base de la visibilité.
Code VBA
Sub CreateWaterfallChart() Dim ws As Worksheet Dim chartObj As ChartObject Dim chartWaterfall As Chart Dim lastRow As Long Dim rngCategory As Range, rngBase As Range, rngIncrease As Range, rngDecrease As Range ' Définir la feuille de calcul Set ws = ActiveSheet ' Trouver la dernière ligne de données lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Définir les plages de données Set rngCategory = ws.Range("A2:A" & lastRow) ' Catégories Set rngBase = ws.Range("C2:C" & lastRow) ' Valeurs de base Set rngIncrease = ws.Range("D2:D" & lastRow) ' Augmentations Set rngDecrease = ws.Range("E2:E" & lastRow) ' Diminutions ' Ajouter un nouveau graphique Set chartObj = ws.ChartObjects.Add(Left:=300, Width:=500, Top:=50, Height:=350) Set chartWaterfall = chartObj.Chart ' Définir le type de graphique chartWaterfall.ChartType = xlColumnStacked ' Ajouter les séries With chartWaterfall .SetSourceData Source:=Union(rngBase, rngIncrease, rngDecrease) ' Formater la série Base (la rendre invisible) With .SeriesCollection(1) .Format.Fill.Visible = msoFalse .Border.LineStyle = xlNone End With ' Formater la série Augmentation (Vert) With .SeriesCollection(2) .Format.Fill.ForeColor.RGB = RGB(0, 176, 80) ' Vert End With ' Formater la série Diminution (Rouge) With .SeriesCollection(3) .Format.Fill.ForeColor.RGB = RGB(192, 0, 0) ' Rouge End With ' Titres des axes .Axes(xlCategory).HasTitle = True .Axes(xlCategory).AxisTitle.Text = "Catégories" .Axes(xlValue).HasTitle = True .Axes(xlValue).AxisTitle.Text = "Valeurs" ' Titre du graphique .HasTitle = True .ChartTitle.Text = "Graphique Waterfall" End With ' Nettoyage Set ws = Nothing Set chartObj = Nothing Set chartWaterfall = Nothing Set rngCategory = Nothing Set rngBase = Nothing Set rngIncrease = Nothing Set rngDecrease = Nothing MsgBox "Graphique Waterfall créé avec succès!", vbInformation, "Succès" End Sub
4. Explication du Code VBA
1. Sélection des données :
- La macro identifie la dernière ligne (
lastRow
) pour sélectionner dynamiquement les plages de données. - Chaque colonne (Catégories, Base, Augmentation, Diminution) est assignée à une variable Range VBA.
2. Création du graphique :
- Ajoute un nouvel
ChartObject
dans la feuille active. - Définit le type de graphique comme Colonne empilée (
xlColumnStacked
).
3. Formatage des séries :
- La série Base (Série 1) est cachée pour créer l’effet flottant.
- La série Augmentation (Série 2) est colorée en vert (
RGB(0, 176, 80)
). - La série Diminution (Série 3) est colorée en rouge (
RGB(192, 0, 0)
).
4. Titres des axes et du graphique :
- Les axes X et Y sont étiquetés avec « Catégories » et « Valeurs ».
- Le titre du graphique est défini sur « Graphique Waterfall ».
5. Notification à l’utilisateur :
- Affiche une boîte de message confirmant la création du graphique.
5. Comment Utiliser la Macro VBA
1. Ouvrez un fichier Excel et entrez les données mentionnées plus haut.
2. Appuyez sur ALT + F11
pour ouvrir l’éditeur VBA.
3. Cliquez sur Insertion > Module
et collez le code VBA.
4. Exécutez la macro en appuyant sur F5
ou en allant dans Développeur > Macros > Exécuter
.
6. Conclusion
Cette macro VBA crée dynamiquement un graphique Waterfall dans Excel, ce qui est utile pour les utilisateurs qui n’ont pas Excel 2016 ou une version ultérieure. Elle assure :
- Un formatage automatique avec une coloration verte/rouge.
- Une gestion dynamique des données.
- Une exécution conviviale via une macro.