Créer une légende dynamique pour un graphique, Excel VBA

Créer une légende dynamique pour un graphique, Excel VBA

Voici un code VBA détaillé qui permet de créer une légende dynamique pour un graphique dans Excel. Cette macro met à jour automatiquement la légende en fonction des séries visibles dans le graphique. 

Code VBA pour créer une légende dynamique 

Sub CreerLegendeDynamique() 
    Dim ws As Worksheet 
    Dim cht As ChartObject 
    Dim ser As Series 
    Dim plageLegende As Range 
    Dim ligneLegende As Integer 
    Dim colonneLegende As Integer 
    ' Définir la feuille contenant le graphique 
    Set ws = ThisWorkbook.Sheets("Feuil1") ' Modifier le nom de la feuille si nécessaire 
    ' Définir l'objet graphique - Modifier pour correspondre au nom de votre graphique 
    Set cht = ws.ChartObjects("Graphique 1") ' Ajuster le nom du graphique si nécessaire 
    ' Définir l'emplacement de la légende dynamique 
    ligneLegende = 2 ' Ligne de départ de la légende 
    colonneLegende = 10 ' Colonne où la légende doit apparaître (ex. : colonne J) 
    ' Effacer les entrées précédentes de la légende 
    ws.Range(ws.Cells(ligneLegende, colonneLegende), ws.Cells(ligneLegende + 50, colonneLegende + 1)).Clear 
    ' Boucler à travers chaque série du graphique 
    For Each ser In cht.Chart.SeriesCollection 
        If ser.Format.Line.Visible = msoTrue Or ser.Format.Fill.Visible = msoTrue Then 
            ' Ajouter le nom de la série dans la légende 
            ws.Cells(ligneLegende, colonneLegende).Value = ser.Name 
            ' Appliquer la couleur correspondante dans la cellule adjacente 
            ws.Cells(ligneLegende, colonneLegende + 1).Interior.Color = ser.Format.Line.ForeColor.RGB 
            ' Passer à la ligne suivante 
            ligneLegende = ligneLegende + 1 
        End If 
    Next ser 
    ' Ajuster la largeur de la colonne pour une meilleure lisibilité 
    ws.Columns(colonneLegende).AutoFit 
    ' Message de confirmation 
    MsgBox "Légende dynamique mise à jour avec succès !", vbInformation, "Mise à jour de la légende" 
End Sub

Explication détaillée du code 

  1. Définition de la feuille et du graphique
  • La macro commence par identifier la feuille de calcul (ws) contenant le graphique. 
  • L’objet graphique (cht) est récupéré en fonction de son nom « Graphique 1 ». Il faut modifier ce nom en fonction du graphique présent dans votre classeur. 
  1. Définition de l’emplacement de la légende
  • On définit la ligne de départ (ligneLegende = 2) et la colonne (colonneLegende = 10, soit la colonne J) où afficher la légende. 
  • Toute légende existante dans cette zone est effacée avant d’ajouter les nouvelles informations. 
  1. Boucle à travers les séries du graphique
  • La macro parcourt chaque SeriesCollection du graphique. 
  • Elle vérifie si la série est visible (msoTrue pour le trait ou le remplissage). 
  • Si la série est visible, son nom est ajouté dans la colonne légende. 
  • La couleur associée est appliquée à la cellule adjacente. 
  1. Mise en forme et affichage
  • La largeur de la colonne est ajustée automatiquement (AutoFit). 
  • Une boîte de message (MsgBox) informe l’utilisateur que la légende a été mise à jour avec succès. 

Instructions pour utiliser la macro 

  1. Vérifiez que le graphique porte bien le nom « Graphique 1 » (ou modifiez le code pour correspondre au nom réel). 
  2. Ouvrez l’éditeur VBA (ALT + F11), insérez un nouveau module (Insertion → Module), puis copiez-collez le code. 
  3. Exécutez la macro CreerLegendeDynamique(). 

Cette macro assure que la légende est toujours synchronisée avec les séries visibles du graphique.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x