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