Créer un tableau de bord dynamique, Excel VBA

Créer un tableau de bord dynamique, Excel VBA

Voici un exemple détaillé pour créer un tableau de bord dynamique dans Excel à l’aide de VBA. Ce code vous permettra de créer des graphiques, des contrôles interactifs et de mettre à jour le tableau de bord en fonction des choix de l’utilisateur. 

Vue d’ensemble du Tableau de Bord Dynamique 

Un tableau de bord dynamique dans Excel peut afficher des graphiques, des tableaux et d’autres éléments visuels qui se mettent à jour en fonction des entrées de l’utilisateur ou des changements dans les données. Grâce à VBA, nous pouvons automatiser la création et la mise à jour de ces éléments, ce qui améliore l’interactivité et l’expérience utilisateur. 

Étapes pour Créer le Tableau de Bord 

1. Organisation des Données

  • Assurez-vous que vos données sont bien structurées pour que VBA puisse les lire et les manipuler facilement. En général, les données doivent être organisées en lignes et en colonnes avec des en-têtes pour chaque catégorie de données. 

2. Configuration de la Feuille de Tableau de Bord

  • Créez une feuille distincte pour le tableau de bord où vous placerez vos graphiques, tableaux et contrôles interactifs (par exemple, des menus déroulants, des boutons, etc.). 

3. Création de Contrôles Interactifs

  • Vous pouvez utiliser des ComboBox, des barres de défilement ou des boutons pour permettre à l’utilisateur d’interagir avec le tableau de bord. Ces contrôles seront liés à un code VBA qui déclenchera les mises à jour. 

4. Création des Graphiques

  • Les graphiques peuvent être créés à l’aide de la méthode ChartObjects en VBA. Vous lieriez ces graphiques à vos données et les mettriez à jour dynamiquement en fonction de l’entrée de l’utilisateur. 

5. Automatisation des Mises à Jour avec VBA

  • VBA sera utilisé pour automatiser l’extraction des données, la création des graphiques et le processus de mise à jour. 

Code VBA Détail pour Créer un Tableau de Bord Dynamique 

Sub CreateDynamicDashboard() 
    Dim ws As Worksheet 
    Dim dashboardSheet As Worksheet 
    Dim chartObj As ChartObject 
    Dim dataRange As Range 
    Dim dynamicRange As Range 
    Dim userChoice As String 
    ' Créer ou nettoyer la feuille du tableau de bord 
    On Error Resume Next 
    Set dashboardSheet = ThisWorkbook.Sheets("Dashboard") 
    On Error GoTo 0 
    If dashboardSheet Is Nothing Then 
        Set dashboardSheet = ThisWorkbook.Sheets.Add 
        dashboardSheet.Name = "Dashboard" 
    Else 
        dashboardSheet.Cells.Clear 
    End If 
    ' Définir la plage de données 
    Set ws = ThisWorkbook.Sheets("Data") ' Changez "Data" par le nom de votre feuille de données 
    Set dataRange = ws.Range("A1").CurrentRegion ' Supposons que les données commencent à A1 
    ' Ajouter des contrôles interactifs (ComboBox pour le filtrage) 
    With dashboardSheet.Shapes.AddFormControl(xlDropDown, 50, 20, 150, 30) 
        .ControlFormat.AddItem "Option 1" 
        .ControlFormat.AddItem "Option 2" 
        .ControlFormat.AddItem "Option 3" 
        .OnAction = "UpdateDashboard" 
    End With 
    ' Créer une plage dynamique pour les graphiques 
    Set dynamicRange = dataRange.Offset(1, 0).Resize(dataRange.Rows.Count - 1, dataRange.Columns.Count) 
    ' Créer le premier graphique (par exemple, graphique en colonnes) 
    Set chartObj = dashboardSheet.ChartObjects.Add(Left:=100, Width:=400, Top:=100, Height:=300) 
    chartObj.Chart.SetSourceData Source:=dynamicRange 
    chartObj.Chart.ChartType = xlColumnClustered 
    chartObj.Chart.HasTitle = True 
    chartObj.Chart.ChartTitle.Text = "Aperçu des Ventes" 
    ' Personnaliser l'apparence du graphique 
    chartObj.Chart.Axes(xlCategory).CategoryNames = ws.Range("A2:A" & dataRange.Rows.Count) ' Labels de l'axe X 
    chartObj.Chart.Axes(xlValue).HasTitle = True 
    chartObj.Chart.Axes(xlValue).AxisTitle.Text = "Ventes ($)" 
    ' Ajouter d'autres graphiques si nécessaire, en suivant le même processus ci-dessus 
    ' Ajouter un tableau dynamique (si nécessaire) 
    dashboardSheet.Range("A20").Value = "Résumé des Données de Ventes" 
    dashboardSheet.Range("A21").Formula = "=SUM(Data!B2:B100)" ' Exemple de formule de résumé pour les ventes totales 
    MsgBox "Tableau de bord créé avec succès !" 
End Sub 
Sub UpdateDashboard() 
    Dim dashboardSheet As Worksheet 
    Dim userChoice As String 
    Dim dataRange As Range 
    Dim dynamicRange As Range 
    Dim chartObj As ChartObject 
    Dim filteredData As Range 
    Set dashboardSheet = ThisWorkbook.Sheets("Dashboard") 
    Set dataRange = ThisWorkbook.Sheets("Data").Range("A1").CurrentRegion 
    userChoice = dashboardSheet.Shapes(1).ControlFormat.Value ' Récupérer le choix de l'utilisateur depuis le ComboBox 
    ' Filtrer les données en fonction du choix de l'utilisateur 
    Select Case userChoice 
        Case 1 ' Option 1 - Filtrer les ventes par région spécifique 
            Set filteredData = dataRange ' Ajoutez votre logique de filtrage ici 
        Case 2 ' Option 2 - Filtrer par catégorie de produit 
            Set filteredData = dataRange ' Ajoutez votre logique de filtrage ici 
        Case Else 
            Set filteredData = dataRange ' Par défaut, afficher toutes les données 
    End Select 
    ' Mettre à jour les graphiques dynamiquement 
    Set dynamicRange = filteredData.Offset(1, 0).Resize(filteredData.Rows.Count - 1, filteredData.Columns.Count) 
    Set chartObj = dashboardSheet.ChartObjects(1) 
    chartObj.Chart.SetSourceData Source:=dynamicRange 
    ' Ajouter d'autres mises à jour pour le tableau, les graphiques ou autres éléments visuels ici  
    MsgBox "Tableau de bord mis à jour avec succès !" 
End Sub

Explication des Composants Clés : 

1. Feuilles de Données et de Tableau de Bord

  • ws fait référence à la feuille contenant vos données brutes. 
  • dashboardSheet est la feuille où sera créé le tableau de bord. 
  • Assurez-vous que votre feuille de données possède des en-têtes (par exemple, « Date », « Ventes », « Région »). 

2. Contrôles Interactifs (ComboBox)

  • Un ComboBox est ajouté au tableau de bord pour permettre à l’utilisateur d’interagir. L’utilisateur peut choisir une option et le tableau de bord se mettra à jour en conséquence. 

3. Création des Graphiques

  • Les graphiques sont créés avec ChartObjects.Add et sont liés à la dynamicRange. Le graphique se met à jour automatiquement lorsque les données changent. 
  • Vous pouvez créer plusieurs graphiques (par exemple, des graphiques à barres, en lignes, ou en secteurs) en fonction des données que vous souhaitez afficher. 

4. Plage Dynamique

  • La dynamicRange est déterminée en fonction de l’interaction de l’utilisateur. Cela permet de mettre à jour le tableau de bord dynamiquement à chaque modification. 

5. Mise à Jour du Tableau de Bord

  • La subroutine UpdateDashboard filtre les données en fonction du choix de l’utilisateur et met à jour les graphiques et les tableaux en conséquence. 

Personnalisation du Code : 

  • Ajout de plus de graphiques : Vous pouvez ajouter des graphiques supplémentaires en répétant les étapes de création de graphiques. 
  • Ajout de plus de contrôles : Vous pouvez ajouter des barres de défilement, des boutons radio, etc., pour rendre le tableau de bord encore plus interactif. 
  • Filtrage Avancé : Implémentez des filtres plus complexes ou utilisez des tableaux croisés dynamiques si nécessaire. 

Conclusion : 

Ce code fournit une structure de base pour créer un tableau de bord dynamique dans Excel avec VBA. Vous pouvez l’étendre en ajoutant plus de contrôles, en améliorant l’interface utilisateur ou en ajoutant des fonctionnalités avancées telles que des analyses détaillées ou une mise en forme conditionnelle basée sur les entrées de l’utilisateur. 

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