Créer un graphique avec des étiquettes d’axe dynamiques, Excel VBA

Créer un graphique avec des étiquettes d’axe dynamiques, Excel VBA

Voici une explication détaillée en français du code VBA permettant de créer un graphique avec des étiquettes d’axe dynamiques. 

Objectif 

Nous voulons que les étiquettes de l’axe des X d’un graphique se mettent à jour automatiquement en fonction d’une plage de valeurs qui peut évoluer avec le temps. Ceci est particulièrement utile pour analyser des tendances, comme les ventes, les prix boursiers ou toute autre série temporelle. 

Code VBA pour des Étiquettes d’Axe Dynamiques 

Ce macro VBA va : 

  1. Créer une plage nommée dynamique pour les étiquettes de l’axe des X. 
  2. Associer cette plage au graphique. 
  3. Mettre à jour le graphique automatiquement en fonction des modifications des données. 
Sub CreateDynamicChartAxisLabels() 
    Dim ws As Worksheet 
    Dim cht As ChartObject 
    Dim rngLabels As Range 
    Dim rngValues As Range 
    Dim lastRow As Long 
    Dim chartName As String 
    Dim namedRangeX As String 
    Dim namedRangeY As String 
    ' Définir la feuille de calcul 
    Set ws = ThisWorkbook.Sheets("Feuil1") ' Modifier selon le nom de votre feuille 
    ' Trouver la dernière ligne contenant des données dans la colonne A (étiquettes) et B (valeurs) 
    lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row 
    ' Définir les plages dynamiques 
    Set rngLabels = ws.Range("A2:A" & lastRow) ' Plage des étiquettes X 
    Set rngValues = ws.Range("B2:B" & lastRow) ' Plage des valeurs Y 
    ' Définir les noms de plage dynamiques 
    namedRangeX = "DynamicLabels" 
    namedRangeY = "DynamicValues" 
    ' Supprimer les plages nommées si elles existent déjà 
    On Error Resume Next 
    ThisWorkbook.Names(namedRangeX).Delete 
    ThisWorkbook.Names(namedRangeY).Delete 
    On Error GoTo 0 
    ' Créer de nouvelles plages nommées dynamiques 
    ThisWorkbook.Names.Add Name:=namedRangeX, RefersTo:=rngLabels 
    ThisWorkbook.Names.Add Name:=namedRangeY, RefersTo:=rngValues 
    ' Vérifier si le graphique existe, sinon le créer 
    chartName = "DynamicChart" 
    On Error Resume Next 
    Set cht = ws.ChartObjects(chartName) 
    On Error GoTo 0 
    If cht Is Nothing Then 
        ' Créer le graphique s'il n'existe pas 
        Set cht = ws.ChartObjects.Add(Left:=100, Top:=50, Width:=400, Height:=300) 
        cht.Name = chartName 
        cht.Chart.ChartType = xlLine ' Modifier selon le type de graphique souhaité 
    End If 
    ' Associer les plages dynamiques au graphique 
    With cht.Chart 
        .SetSourceData Source:=rngValues 
        .SeriesCollection(1).XValues = "=" & ws.Name & "!" & namedRangeX 
        .SeriesCollection(1).Values = "=" & ws.Name & "!" & namedRangeY 
        .HasTitle = True 
        .ChartTitle.Text = "Graphique Dynamique avec VBA" 
        .Axes(xlCategory).HasTitle = True 
        .Axes(xlCategory).AxisTitle.Text = "Étiquettes de l'Axe X" 
        .Axes(xlValue).HasTitle = True 
        .Axes(xlValue).AxisTitle.Text = "Valeurs de l'Axe Y" 
    End With 
    ' Rafraîchir le graphique 
    cht.Chart.Refresh 
    ' Message de confirmation 
    MsgBox "Le graphique dynamique a été mis à jour avec succès !", vbInformation, "Mise à jour VBA" 
End Sub

Explication Détaillée du Code 

  1. Définition de la Feuille de Calcul et des Plages de Données

Set ws = ThisWorkbook.Sheets("Feuil1")  

  • Définit la feuille sur laquelle sont les données et le graphique (remplacez « Feuil1 » par le nom correct). 

lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row 

  • Trouve la dernière ligne non vide dans la colonne A (Étiquettes) pour adapter la plage dynamique. 
Set rngLabels = ws.Range("A2:A" & lastRow) 
Set rngValues = ws.Range("B2:B" & lastRow)
  • Définit les plages de l’axe X (étiquettes) et des valeurs Y
  1. Création des Plages Nommées Dynamiques
namedRangeX = "DynamicLabels" 
namedRangeY = "DynamicValues"
  • Définit des noms pour les plages dynamiques. 
ThisWorkbook.Names(namedRangeX).Delete 
ThisWorkbook.Names(namedRangeY).Delete
  • Supprime les plages nommées existantes pour éviter des conflits. 
ThisWorkbook.Names.Add Name:=namedRangeX, RefersTo:=rngLabels 
ThisWorkbook.Names.Add Name:=namedRangeY, RefersTo:=rngValues
  • Crée de nouvelles plages nommées, qui s’ajustent automatiquement aux données. 
  1. Création ou Mise à Jour du Graphique
chartName = "DynamicChart" 
Set cht = ws.ChartObjects(chartName)
  • Vérifie si un graphique portant ce nom existe déjà. 

Set cht = ws.ChartObjects.Add(Left:=100, Top:=50, Width:=400, Height:=300) 

  • Si le graphique n’existe pas, il est créé. 
cht.Name = chartName 
cht.Chart.ChartType = xlLine
  • Définit son nom et son type (xlLine pour un graphique en courbes, modifiable selon les besoins). 
  1. Association des Données au Graphique
.SetSourceData Source:=rngValues 
.SeriesCollection(1).XValues = "=" & ws.Name & "!" & namedRangeX 
.SeriesCollection(1).Values = "=" & ws.Name & "!" & namedRangeY
  • Associe les plages dynamiques à l’axe des X et aux valeurs Y. 
  1. Personnalisation du Graphique
.HasTitle = True 
.ChartTitle.Text = "Graphique Dynamique avec VBA"
  • Ajoute un titre au graphique. 
.Axes(xlCategory).HasTitle = True 
.Axes(xlCategory).AxisTitle.Text = "Étiquettes de l'Axe X"
  • Ajoute un titre à l’axe X. 
.Axes(xlValue).HasTitle = True 
.Axes(xlValue).AxisTitle.Text = "Valeurs de l'Axe Y"
  • Ajoute un titre à l’axe Y. 
  1. Rafraîchissement et Message à l’Utilisateur

cht.Chart.Refresh 

  • Met à jour le graphique pour refléter les nouvelles données. 

MsgBox "Le graphique dynamique a été mis à jour avec succès !", vbInformation, "Mise à jour VBA"

  • Affiche une confirmation de mise à jour. 

Comment Utiliser Cette Macro 

1. Préparer les Données 

  • Colonne A : Étiquettes de l’axe X (dates, catégories, etc.). 
  • Colonne B : Valeurs de l’axe Y (ventes, volumes, etc.). 

2. Exécuter le Code 

  • Ouvrir Visual Basic for Applications (VBA) (ALT + F11). 
  • Insérer un Nouveau Module
  • Copier-coller le code dans le module. 
  • Lancer la macro CreateDynamicChartAxisLabels. 

3. Le Graphique S’Actualise Automatiquement 

  • En modifiant les données et en relançant la macro, le graphique s’adapte. 

Conclusion 

Ce script VBA permet d’assurer que votre graphique s’adapte dynamiquement aux nouvelles données. C’est idéal pour les tableaux de bord, les rapports automatisés et les applications interactives sous Excel. 

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