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.