Mise en œuvre de techniques de graphique dynamique, Excel VBA

Mise en œuvre de techniques de graphique dynamique, Excel VBA

Voici un guide détaillé sur la mise en œuvre de techniques de graphique dynamique avec Excel VBA, y compris une explication longue et détaillée.
Qu’est-ce que le Graphique Dynamique ?
Un graphique dynamique est un graphique qui se met automatiquement à jour lorsque les données sous-jacentes changent. Ce type de graphique est particulièrement utile dans les rapports ou tableaux de bord où les données changent fréquemment (ajout ou suppression de lignes, modification des filtres, etc.).
Les graphiques dynamiques peuvent être créés en :
1. Utilisant des plages nommées dynamiques – Une plage dynamique ajuste automatiquement ses dimensions lorsqu’on ajoute ou supprime des données.
2. Utilisant VBA pour mettre à jour les graphiques – Écrire du code VBA pour que le graphique se mette à jour automatiquement lorsque les données changent.
Concepts Clés :
1. Plage nommée dynamique : Excel permet de définir une plage nommée (par exemple SalesData) qui ajuste sa taille automatiquement en fonction des données.
2. Mise à jour via des événements : Utiliser VBA pour réagir aux changements de données et mettre à jour les graphiques en conséquence.
Guide Étape par Étape pour Implémenter un Graphique Dynamique avec VBA
Commençons par les étapes et le code VBA nécessaire pour créer des graphiques dynamiques dans Excel.
1. Créer une Plage Nommée Dynamique
Avant de créer un graphique dynamique, il est utile de définir une plage nommée dynamique à l’aide des formules Excel. Nous allons utiliser les fonctions OFFSET et COUNTA pour créer une plage qui s’ajuste automatiquement lorsqu’on ajoute ou retire des données.
Exemple de formule pour une plage dynamique :
Imaginons que vous avez des données de ventes dans la colonne A à partir de la cellule A2 et jusqu’à la dernière ligne remplie. Vous pouvez définir une plage nommée dynamique pour ces données.
Étapes :
1. Allez dans l’onglet Formules d’Excel.
2. Cliquez sur Gestionnaire de noms, puis sur Nouveau.
3. Nommez votre plage (par exemple, SalesData).
4. Dans le champ Fait référence à, utilisez la formule suivante :
=DECALER(Sheet1!$A$2;0;0;NB.SI(Sheet1!$A:$A;">0");1)
Cette formule crée une plage dynamique qui commence à la cellule A2 et s’étend vers le bas en fonction du nombre de lignes non vides dans la colonne A.
2. Insérer un Graphique Basique
Une fois que vous avez vos données et votre plage dynamique, vous pouvez insérer un graphique de base :
1. Sélectionnez les données dans la colonne A (ou la plage nommée).
2. Allez dans l’onglet Insertion, puis choisissez un type de graphique (par exemple, un graphique en courbes).
3. Excel créera un graphique de base en utilisant les données sélectionnées.
3. Code VBA pour Créer un Graphique Dynamique
Passons maintenant à l’implémentation du graphique dynamique à l’aide de VBA. Le code VBA permettra de surveiller la plage nommée dynamique et de mettre à jour le graphique chaque fois que les données changent.
Exemple de Code VBA :

Sub CreateDynamicChart()
    Dim chartObj As ChartObject
    Dim dataRange As Range
    Dim chartSheet As Worksheet
    ' Définir la feuille de travail et la plage de données
    Set chartSheet = ThisWorkbook.Sheets("Sheet1")
    Set dataRange = chartSheet.Range("SalesData")
    ' Supprimer les graphiques existants
    For Each chartObj In chartSheet.ChartObjects
        chartObj.Delete
    Next chartObj
    ' Créer un nouveau graphique
    Set chartObj = chartSheet.ChartObjects.Add(Left:=100, Width:=375, Top:=75, Height:=225)
    ' Définir la plage de données pour le graphique
    chartObj.Chart.SetSourceData Source:=dataRange
    ' Définir le type de graphique (peut être changé en un autre type, comme xlLine, xlColumn, etc.)
    chartObj.Chart.ChartType = xlLine
    ' Personnaliser le titre du graphique
    chartObj.Chart.HasTitle = True
    chartObj.Chart.ChartTitle.Text = "Ventes au Fil du Temps"
    ' Personnaliser les titres des axes
    chartObj.Chart.Axes(xlCategory, xlPrimary).HasTitle = True
    chartObj.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Temps"
    chartObj.Chart.Axes(xlValue, xlPrimary).HasTitle = True
    chartObj.Chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Ventes"
    ' Définir les mises à jour dynamiques
    ' Vous pouvez ajouter plus de propriétés pour rendre le graphique plus dynamique.
End Sub

Explication du Code :
1. Définir la Feuille et la Plage de Données :

  • On définit la feuille de travail et la plage (SalesData) à utiliser pour le graphique.
  • Set chartSheet = ThisWorkbook.Sheets(« Sheet1 ») : Cela définit la feuille où le graphique sera inséré.
  • Set dataRange = chartSheet.Range(« SalesData« ) : Cela définit la plage de données dynamique.

2. Supprimer les Graphiques Existants :

  • On boucle à travers tous les graphiques existants et on les supprime pour s’assurer qu’il n’y a qu’un seul graphique à la fois.

3. Créer un Nouveau Graphique :

  • Set chartObj = chartSheet.ChartObjects.Add(…) : On ajoute un nouveau graphique à la feuille de travail à un endroit spécifique (défini par les paramètres Left, Width, Top, Height).
  • chartObj.Chart.SetSourceData Source:=dataRange : On définit la source des données du graphique en utilisant la plage dynamique SalesData.

4. Personnaliser le Graphique :

  • On définit le type de graphique (ici xlLine pour un graphique en courbes).
  • On personnalise les titres du graphique et des axes (ex. : « Ventes au Fil du Temps »).

5. Mises à Jour Dynamiques :

  • Si les données dans la plage SalesData changent (ajout de lignes ou suppression), le graphique se mettra automatiquement à jour grâce à la plage dynamique.

4. Exécution Automatique avec un Événement VBA
Pour que le graphique se mette à jour automatiquement chaque fois que les données changent, vous pouvez lier le code VBA à un événement dans Excel, par exemple :

    • Événement de Changement de Feuille : Ce code sera exécuté chaque fois que des données dans la feuille changent.
Private Sub Worksheet_Change(ByVal Target As Range)
    ' Si les données dans la plage SalesData changent, mettre à jour le graphique
    If Not Intersect(Target, Me.Range("SalesData")) Is Nothing Then
        Call CreateDynamicChart
    End If
End Sub

Ce code exécutera la procédure CreateDynamicChart chaque fois qu’un changement sera effectué dans la plage SalesData.
5. Tester le Graphique Dynamique
Pour tester le graphique dynamique :
1. Ajoutez de nouvelles données dans la plage SalesData.
2. Exécutez la macro CreateDynamicChart ou effectuez des modifications dans les données et laissez l’événement déclencher la mise à jour.
3. Le graphique devrait se mettre automatiquement à jour en fonction des nouvelles données.
Conclusion
Avec cette méthode, vous avez mis en place un graphique dynamique dans Excel en utilisant VBA. En combinant des plages nommées dynamiques avec du code VBA, vous pouvez créer des graphiques interactifs et automatiquement mis à jour, idéaux pour des tableaux de bord ou des rapports où les données changent fréquemment.
Astuces Supplémentaires :

  • Graphiques Plus Avancés : Vous pouvez utiliser VBA pour créer plusieurs types de graphiques (barres, secteurs, etc.) en fonction des données disponibles.
  • Mise en Forme Avancée : Utilisez VBA pour ajouter de la mise en forme conditionnelle, des couleurs personnalisées, ou d’autres éléments de présentation.
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x