Création d’un Graphique Waterfall, Excel VBA

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.
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x