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
- 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.
- 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.
- 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.
- 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
- Vérifiez que le graphique porte bien le nom « Graphique 1 » (ou modifiez le code pour correspondre au nom réel).
- Ouvrez l’éditeur VBA (ALT + F11), insérez un nouveau module (Insertion → Module), puis copiez-collez le code.
- Exécutez la macro CreerLegendeDynamique().
Cette macro assure que la légende est toujours synchronisée avec les séries visibles du graphique.