Créer une série dynamique de graphiques, Excel VBA
Voici une explication détaillée et un exemple de code en VBA pour créer une série dynamique de graphiques dans Excel.
- Comprendre les graphiques dynamiques
Un graphique dynamique est un graphique dont les séries de données se mettent à jour automatiquement lorsque les données sous-jacentes changent. Cela est particulièrement utile lorsque vous travaillez avec des plages de données qui peuvent s’étendre ou se contracter. En utilisant VBA, nous pouvons définir des plages nommées dynamiques et les lier aux séries du graphique.
- Étapes pour créer une série de graphique dynamique avec VBA
Nous allons écrire une macro VBA qui :
- Définit une plage dynamique (en fonction du nombre de points de données).
- Attribue cette plage comme source pour les séries du graphique.
- Met à jour le graphique dynamiquement lorsque les données changent.
- Exemple de code :
Sub CreerSerieGraphiqueDynamique() Dim ws As Worksheet Dim chartObj As ChartObject Dim dataRange As Range Dim lastRow As Long Dim dynamicRange As String ' Définir la feuille de calcul et l'objet graphique Set ws = ThisWorkbook.Sheets("Feuille1") ' Changez cela selon le nom de votre feuille Set chartObj = ws.ChartObjects("Graphique 1") ' Changez cela selon le nom ou l'index de votre graphique ' Trouver la dernière ligne avec des données dans la colonne A (peut être ajusté en fonction de vos données) lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row ' Définir la plage dynamique pour la série de graphique ' Supposons que les données soient dans les colonnes A et B, où A est pour les valeurs X et B pour les valeurs Y dynamicRange = "=Feuille1!$A$2:$A$" & lastRow ' Changez cela selon vos plages ' Assigner la plage dynamique à la série du graphique chartObj.Chart.SeriesCollection.NewSeries chartObj.Chart.SeriesCollection(1).XValues = dynamicRange ' Plage pour l'axe X chartObj.Chart.SeriesCollection(1).Values = "=Feuille1!$B$2:$B$" & lastRow ' Plage pour l'axe Y ' Optionnel : Personnaliser le graphique (par exemple, définir le type de graphique) chartObj.Chart.ChartType = xlLine ' Type de graphique : ligne (ajustez selon vos besoins) ' Informer l'utilisateur MsgBox "La série de graphique dynamique a été créée avec succès !" End Sub
- Explication du code :
Feuille de calcul et objet graphique :
- Set ws = ThisWorkbook.Sheets(« Feuille1 »): Définit la feuille de calcul où se trouvent vos données et votre graphique. Vous pouvez remplacer « Feuille1 » par le nom de votre feuille.
- Set chartObj = ws.ChartObjects(« Graphique 1 »): Fait référence à un graphique existant dans la feuille de calcul. Remplacez « Graphique 1 » par le nom ou l’index du graphique que vous souhaitez modifier.
Plage dynamique :
- lastRow = ws.Cells(ws.Rows.Count, « A »).End(xlUp).Row: Cette ligne trouve la dernière ligne avec des données dans la colonne A, ce qui permet de définir une plage dynamique.
- dynamicRange = « =Feuille1!$A$2:$A$ » & lastRow: Définit la plage pour les valeurs X (dans ce cas, la colonne A de la ligne 2 à la dernière ligne).
Attribution des plages dynamiques aux séries du graphique :
- chartObj.Chart.SeriesCollection(1).XValues = dynamicRange: Cette ligne lie la plage dynamique aux valeurs de l’axe X du graphique.
- chartObj.Chart.SeriesCollection(1).Values = « =Feuille1!$B$2:$B$ » & lastRow: Cette ligne attribue les valeurs de l’axe Y du graphique (colonne B, de la ligne 2 à la dernière ligne).
Personnalisation :
- chartObj.Chart.ChartType = xlLine: Définit le type de graphique (ici, un graphique en ligne). Vous pouvez changer xlLine pour d’autres types de graphiques, comme xlColumn, xlBar, etc.
- Mise à jour automatique du graphique : Le graphique se mettra automatiquement à jour lorsque de nouvelles données seront ajoutées ou lorsque des données existantes seront modifiées, rendant ainsi le graphique dynamique.
- Améliorations possibles :
- Séries multiples : Si vous souhaitez créer plusieurs séries dynamiques, vous pouvez répéter le processus pour d’autres colonnes ou plages de données en créant des séries supplémentaires.
- Gestion des erreurs : Vous pouvez également ajouter des gestionnaires d’erreurs pour rendre le code plus robuste, notamment lorsque la feuille est vide ou que des données sont manquantes.
- Conclusion :
Ce script VBA fournit un moyen puissant d’automatiser la création de graphiques dynamiques. En exploitant les plages dynamiques, le graphique s’adapte aux modifications des données sous-jacentes, ce qui le rend très pratique pour les tableaux de bord ou les rapports qui sont mis à jour fréquemment.