Créer un tableau de bord interactif avec UserForms, Excel VBA

Créer un tableau de bord interactif avec UserForms, Excel VBA

Voici un guide détaillé pour créer un tableau de bord interactif avec UserForms dans Excel à l’aide de VBA. Cela permet aux utilisateurs d’interagir avec les données et de visualiser des informations de manière dynamique.
Aperçu des étapes :
1. Préparer les données Excel : Assurez-vous que vos données sont bien organisées, sous forme de tableau ou de plage structurée, afin de faciliter l’accès et le traitement des données via le code VBA.
2. Créer le UserForm : Le UserForm est l’endroit où l’utilisateur interagira avec le tableau de bord. Vous pouvez y ajouter des boutons, des boîtes de liste, des étiquettes, etc., pour permettre aux utilisateurs de filtrer ou de manipuler les données.
3. Ajouter le code VBA : Le code qui se cache derrière le UserForm va gérer le filtrage des données, la création des graphiques, et les mises à jour en fonction des interactions de l’utilisateur.
4. Créer les graphiques dynamiques : En fonction des choix de l’utilisateur, le code VBA mettra à jour les graphiques, les tableaux croisés dynamiques et d’autres éléments du tableau de bord.
Exemple étape par étape
1. Préparer les données :
Imaginons que vous ayez des données de ventes dans une feuille Excel comme suit :

Date Région Ventes
01/01/2025 Nord 200
01/01/2025 Sud 150
01/02/2025 Nord 250
01/02/2025 Sud 180

2. Créer le UserForm :

  • Allez dans l’éditeur VBA en appuyant sur Alt + F11.
  • Insérez un nouveau UserForm :
  • Dans le Project Explorer, faites un clic droit et sélectionnez Insert > UserForm.
  • Ajoutez les contrôles suivants :
  • ComboBox (cmbRegion) pour sélectionner la région.
  • CommandButton (cmdShowData) pour afficher les données filtrées.
  • ChartObject pour afficher le graphique dynamiquement.
  • Label (lblTitle) pour afficher le titre du tableau de bord.

3. Code VBA :

' Code du module pour initialiser le UserForm et générer le graphique
Sub ShowDashboard()
    ' Créer et afficher le UserForm
    UserForm1.Show
End Sub
' Code derrière le UserForm
Private Sub UserForm_Initialize()
    ' Remplir la ComboBox avec les régions uniques
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("SalesData") ' Modifiez le nom de la feuille si nécessaire
    Dim regionRange As Range
    Set regionRange = ws.Range("B2:B" & ws.Cells(ws.Rows.Count, 2).End(xlUp).Row) ' Plage des régions
    Dim cell As Range
    Dim regionList As Collection
    Set regionList = New Collection
    On Error Resume Next
    For Each cell In regionRange
        regionList.Add cell.Value, CStr(cell.Value)
    Next cell
    On Error GoTo 0
    ' Remplir la ComboBox avec les noms des régions uniques
    For Each Item In regionList
        cmbRegion.AddItem Item
    Next Item
    ' Sélection par défaut
    cmbRegion.ListIndex = 0
End Sub
Private Sub cmdShowData_Click()
    ' Filtrer les données en fonction de la sélection de la ComboBox
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("SalesData")
    Dim selectedRegion As String
    selectedRegion = cmbRegion.Value
    Dim dataRange As Range
    Set dataRange = ws.Range("A1:C" & ws.Cells(ws.Rows.Count, 1).End(xlUp).Row) ' Plage des données
    ' Supprimer le graphique existant
    On Error Resume Next
    Me.ChartObjects("SalesChart").Delete
    On Error GoTo 0
    ' Filtrer les données et créer un graphique dynamiquement
    Dim filteredData As Range
    Set filteredData = ws.Range("A1:C1").Resize(1, 3) ' Ligne d'en-tête
    Dim r As Range
    For Each r In dataRange.Rows
        If r.Cells(2).Value = selectedRegion Then
            Set filteredData = Union(filteredData, r)
        End If
    Next r
    ' Créer un nouveau graphique basé sur les données filtrées
    Dim chart As ChartObject
    Set chart = Me.ChartObjects.Add(Left:=100, Width:=400, Top:=200, Height:=300)
    chart.Name = "SalesChart"
    chart.Chart.SetSourceData Source:=filteredData
    chart.Chart.ChartType = xlColumnClustered
    chart.Chart.HasTitle = True
    chart.Chart.ChartTitle.Text = "Données de ventes pour " & selectedRegion
    ' Mettre à jour le titre
    lblTitle.Caption = "Tableau de bord des ventes - " & selectedRegion
End Sub

4. Explication du Code :
1. Initialisation du UserForm :

  • La subroutine UserForm_Initialize remplit la ComboBox avec les noms uniques des régions issues des données.
  • Elle utilise une Collection pour stocker les valeurs uniques des régions afin d’éviter les doublons.

2. Interaction avec l’utilisateur :

  • Lorsque l’utilisateur sélectionne une région et clique sur le bouton Afficher les données (cmdShowData), la subroutine cmdShowData_Click est exécutée.
  • Cette subroutine filtre les données en fonction de la région sélectionnée dans la ComboBox.
  • Elle crée un graphique dynamique, en définissant sa source de données sur les données filtrées, et ajuste son type (par exemple, un graphique en colonnes groupées).
  • Elle met également à jour le titre du graphique et du tableau de bord.

3. Création dynamique du graphique :

  • Le graphique est créé à l’aide de ChartObjects.Add, puis personnalisé (taille, titre, type).
  • La plage de données est ajustée dynamiquement en fonction de la sélection de l’utilisateur.

4. Mise en page du UserForm :

  • La ComboBox permet à l’utilisateur de sélectionner une région.
  • Le CommandButton déclenche l’affichage des données filtrées et du graphique.
  • L’étiquette (lblTitle) affiche le titre, qui est mis à jour en fonction de la région sélectionnée.

5. Notes supplémentaires :

  • Personnalisation des données : Vous pouvez modifier la logique de filtrage dans cmdShowData_Click pour appliquer des filtres supplémentaires, comme des plages de dates ou d’autres critères.
  • Graphiques multiples : Vous pouvez ajouter plusieurs types de graphiques ou d’autres visualisations en créant de nouveaux ChartObjects ou tableaux croisés dynamiques.
  • Amélioration de la mise en page : Vous pouvez enrichir le UserForm avec des contrôles supplémentaires comme des segments, d’autres ComboBoxes, ou des champs de saisie de données.

6. Exécution du tableau de bord :

  • Une fois le code en place, vous pouvez simplement exécuter la macro ShowDashboard (vous pouvez l’attribuer à un bouton ou l’exécuter manuellement) pour ouvrir le UserForm. Le tableau de bord se mettra à jour dynamiquement en fonction des choix de l’utilisateur.

Cette approche permet de créer un tableau de bord Excel interactif avec VBA, tout en étant flexible et extensible pour ajouter des fonctionnalités supplémentaires comme des filtres avancés, des graphiques multiples, ou l’intégration de sources de données externes.

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