Créez des outils de visualisation de données personnalisés, Excel VBA
Créer des outils de visualisation de données personnalisés dans Excel avec VBA (Visual Basic for Applications) peut être très puissant pour automatiser des rapports ou des analyses spécifiques. Voici un exemple détaillé pour créer un outil de visualisation simple qui génère un graphique dynamique basé sur des données dans une feuille Excel. L’objectif ici sera de créer un graphique à colonnes qui se met à jour automatiquement en fonction de la sélection des utilisateurs dans une liste déroulante.
Étapes détaillées pour créer un graphique dynamique avec VBA dans Excel
1. Préparation des données dans Excel:
- Ouvrir Excel et créer une feuille avec des données structurées.
- Par exemple, vous pouvez avoir un tableau avec les noms des mois et les valeurs correspondantes.
| Mois | Ventes |
| Janvier | 1500 |
| Février | 1800 |
| Mars | 2000 |
| Avril | 1700 |
| Mai | 1600 |
2. Insertion de la liste déroulante:
- Allez dans l’onglet « Données » d’Excel.
- Cliquez sur « Validation des données », puis choisissez « Liste » comme type de validation.
- Dans la zone « Source », entrez les noms des mois (Janvier, Février, Mars, etc.).
- Cette liste déroulante servira à permettre à l’utilisateur de choisir un mois, et le graphique sera mis à jour en fonction de ce choix.
3. VBA pour créer et mettre à jour un graphique dynamique:
- Vous allez maintenant utiliser VBA pour automatiser l’insertion et la mise à jour du graphique en fonction des données et de la sélection de l’utilisateur.
Code VBA pour créer un graphique dynamique
1. Ouvrez l’éditeur VBA :
- Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
- Dans l’éditeur VBA, allez dans « Insertion » puis « Module » pour créer un nouveau module.
2. Copiez le code suivant dans le module VBA :
Sub CreerGraphiqueDynamique()
' Déclaration des variables
Dim ws As Worksheet
Dim chartObj As ChartObject
Dim selectedMonth As String
Dim rangeData As Range
Dim monthColumn As Range
Dim salesColumn As Range
Dim chartRange As Range
' Référence à la feuille active
Set ws = ThisWorkbook.Sheets("Feuil1") ' Assurez-vous que la feuille a le bon nom
' Récupérer le mois sélectionné à partir de la liste déroulante (assumez que la liste est en A1)
selectedMonth = ws.Range("A1").Value ' Cellule A1 contient la liste déroulante
' Définir la plage de données basée sur le mois sélectionné
Set monthColumn = ws.Range("A2:A6") ' Mois dans la colonne A
Set salesColumn = ws.Range("B2:B6") ' Ventes dans la colonne B
' Trouver la ligne correspondant au mois sélectionné
For Each cell In monthColumn
If cell.Value = selectedMonth Then
' Sélectionner la plage de données correspondante pour le graphique
Set rangeData = ws.Range(cell, salesColumn.Cells(cell.Row - 1 + 1))
Exit For
End If
Next cell
' Créer un graphique à colonnes
Set chartObj = ws.ChartObjects.Add(Left:=100, Width:=375, Top:=75, Height:=225)
' Définir la plage de données pour le graphique
chartObj.Chart.SetSourceData Source:=rangeData
' Configurer le type de graphique (ici un graphique à colonnes)
chartObj.Chart.ChartType = xlColumnClustered
' Ajouter un titre au graphique
chartObj.Chart.HasTitle = True
chartObj.Chart.ChartTitle.Text = "Ventes de " & selectedMonth
' Ajouter un titre aux axes
chartObj.Chart.Axes(xlCategory, xlPrimary).HasTitle = True
chartObj.Chart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Mois"
chartObj.Chart.Axes(xlValue, xlPrimary).HasTitle = True
chartObj.Chart.Axes(xlValue, xlPrimary).AxisTitle.Text = "Ventes"
' Mettre à jour le graphique en fonction du mois sélectionné
chartObj.Chart.Refresh
End Sub
Explication du code
1. Déclaration des variables:
- ws : fait référence à la feuille Excel où sont stockées les données.
- chartObj : fait référence à l’objet graphique (le graphique à insérer).
- selectedMonth : contient le mois sélectionné par l’utilisateur à partir de la liste déroulante.
- rangeData, monthColumn, salesColumn, et chartRange : sont utilisés pour définir les plages de données que nous utilisons pour le graphique.
2. Récupérer la sélection de l’utilisateur :
- Le mois sélectionné dans la liste déroulante de la cellule A1 est capturé par la variable selectedMonth.
3. Définir les plages de données :
- Le code cherche dans la colonne des mois (A2:A6) pour trouver le mois sélectionné et crée une plage de données correspondante dans la colonne des ventes.
4. Création du graphique :
- Un graphique à colonnes est inséré dans la feuille à une position définie (ici à partir de Left:=100 et Top:=75).
- Le graphique est configuré pour utiliser les données extraites et un titre est ajouté au graphique avec le mois sélectionné.
5. Mise à jour du graphique :
- Le graphique est mis à jour avec la fonction Refresh pour s’assurer qu’il affiche les données les plus récentes.
Ajout d’un bouton pour exécuter le code
Pour rendre cela encore plus interactif, vous pouvez ajouter un bouton dans la feuille Excel pour exécuter ce code :
- Dans l’onglet « Développeur » d’Excel (si vous ne l’avez pas encore, vous pouvez l’activer dans les options), cliquez sur « Insérer » et choisissez un bouton.
- Tracez le bouton dans la feuille Excel.
- Lorsque vous y êtes invité, associez le bouton au code CreerGraphiqueDynamique que vous avez écrit.
Conclusion
Ce code crée un graphique dynamique qui se met à jour en fonction du mois sélectionné dans une liste déroulante. Vous pouvez l’adapter à d’autres types de visualisations ou de graphiques en fonction de vos besoins. En utilisant VBA, vous pouvez automatiser la génération de rapports et rendre les outils de visualisation beaucoup plus interactifs dans Excel.