Tableaux Excel

Créer une Zone de Liste Déroulante dans Excel avec VBA

Une zone de liste déroulante (ou ComboBox) permet à l’utilisateur de sélectionner une valeur prédéfinie dans une liste. Voici un guide étape par étape pour créer une telle zone de liste déroulante à l’aide de VBA dans Excel.


1. Activer l’onglet Développeur

Pour travailler avec VBA, l’onglet Développeur doit être activé dans Excel.

  1. Cliquez sur l’onglet Fichier > Options.
  2. Dans la boîte Options Excel, sélectionnez Personnaliser le ruban.
  3. Cochez la case Développeur et cliquez sur OK.

2. Ajouter une Zone de Liste Déroulante (ComboBox)

  1. Allez dans l’onglet Développeur.
  2. Cliquez sur Insertion > Contrôles ActiveX > Zone de liste déroulante (ComboBox).
  3. Dessinez la Zone de liste déroulante sur votre feuille de calcul.

3. Accéder à l’Éditeur VBA

  1. Faites un clic droit sur la Zone de liste déroulante créée.
  2. Cliquez sur Afficher le code. Cela ouvrira l’éditeur VBA.

4. Ajouter une Liste d’Éléments à la ComboBox

Pour remplir la liste déroulante, insérez du code VBA dans l’éditeur VBA. Voici un exemple simple pour remplir une ComboBox :

Code VBA

Private Sub Workbook_Open()
    With Sheets("Feuil1").ComboBox1
        .Clear ' Efface les anciennes entrées
        .AddItem "Option 1"
        .AddItem "Option 2"
        .AddItem "Option 3"
        .AddItem "Option 4"
    End With
End Sub

Instructions :

  • ComboBox1 est le nom de la zone déroulante. Vous pouvez vérifier son nom dans la fenêtre Propriétés.
  • Sheets(“Feuil1”) représente la feuille contenant votre ComboBox.
  • Les lignes .AddItem "Option X" ajoutent les éléments à la liste déroulante.

5. Remplir la ComboBox depuis une Plage de Données

Si les éléments à afficher se trouvent dans une plage de cellules (par exemple A1:A10), utilisez le code suivant :

Code VBA :

Private Sub Workbook_Open()
    Dim i As Range
    With Sheets("Feuil1").ComboBox1
        .Clear
        For Each i In Sheets("Feuil1").Range("A1:A10")
            .AddItem i.Value
        Next i
    End With
End Sub

6. Ajouter une Action lors de la Sélection d’une Valeur

Pour exécuter une action lorsque l’utilisateur sélectionne une valeur dans la ComboBox, utilisez l’événement Change :

Exemple de Code VBA :

Private Sub ComboBox1_Change()
    MsgBox "Vous avez sélectionné : " & ComboBox1.Value
End Sub

7. Tester le Code VBA

  1. Enregistrez votre fichier Excel en format .xlsm (classeur prenant en charge les macros).
  2. Fermez et rouvrez le fichier.
  3. Testez la Zone de liste déroulante en sélectionnant une valeur.

8. Personnaliser la Zone de Liste Déroulante

  • Sélectionnez la ComboBox.
  • Accédez à la fenêtre Propriétés dans l’onglet Développeur pour ajuster les paramètres (exemple : LinkedCell pour lier la sélection à une cellule).

Pour appliquer automatiquement le code VBA dès l’ouverture du fichier Excel ou à un événement précis (comme sélectionner une cellule, ou activer une feuille), suivez les étapes ci-dessous.


1. Automatisation à l’ouverture du fichier Excel

Si vous voulez que la zone de liste déroulante soit remplie ou configurée automatiquement dès l’ouverture du fichier, utilisez l’événement Workbook_Open.

Étapes :

  1. Appuyez sur Alt + F11 pour ouvrir l’éditeur VBA.
  2. Dans l’éditeur VBA :
    • Double-cliquez sur ThisWorkbook (dans le volet de gauche sous VBAProject).
  3. Collez le code suivant dans la fenêtre :
Private Sub Workbook_Open()
    With Sheets("Feuil1").ComboBox1
        .Clear
        .AddItem "Option 1"
        .AddItem "Option 2"
        .AddItem "Option 3"
        .AddItem "Option 4"
    End With
End Sub

Explication :

  • Le code est déclenché par l’événement Workbook_Open.
  • À l’ouverture du fichier, les éléments seront ajoutés automatiquement à la ComboBox.

2. Automatisation à l’activation de la feuille

Si vous souhaitez que le code VBA s’exécute automatiquement dès qu’une feuille spécifique est activée, utilisez l’événement Worksheet_Activate.

Étapes :

  1. Dans l’éditeur VBA, double-cliquez sur la feuille concernée (par exemple Feuil1) dans le volet de gauche.
  2. Collez le code suivant :
Private Sub Worksheet_Activate()
    With Me.ComboBox1
        .Clear
        .AddItem "Option 1"
        .AddItem "Option 2"
        .AddItem "Option 3"
        .AddItem "Option 4"
    End With
End Sub

Explication :

  • Le code s’exécute automatiquement dès que la feuille est activée.
  • Me fait référence à la feuille sur laquelle le code est placé.

3. Automatisation via un événement de sélection

Pour exécuter automatiquement le VBA lorsque l’utilisateur sélectionne une cellule spécifique, utilisez Worksheet_SelectionChange.

Exemple de Code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Me.Range("A1")) Is Nothing Then
        With Me.ComboBox1
            .Clear
            .AddItem "Option 1"
            .AddItem "Option 2"
            .AddItem "Option 3"
        End With
    End If
End Sub

Explication :

  • Ce code s’exécute lorsque la cellule A1 est sélectionnée.
  • La liste déroulante est remplie automatiquement.

4. Enregistrer le fichier correctement

Pour que les macros fonctionnent :

  1. Enregistrez votre fichier au format .xlsm (Classeur Excel prenant en charge les macros).
    • Cliquez sur Fichier > Enregistrer sous.
    • Sélectionnez Classeur Excel prenant en charge les macros (.xlsm).
  2. Fermez et rouvrez le fichier.

5. Activer les macros

Lors de l’ouverture du fichier, Excel vous demandera d’autoriser les macros :

  • Cliquez sur Activer le contenu dans la barre de notification.

Résumé des méthodes automatiques

ÉvénementDéclenchementOù placer le code
Workbook_OpenÀ l’ouverture du fichierThisWorkbook
Worksheet_ActivateÀ l’activation d’une feuilleFeuille VBA concernée
Worksheet_SelectionChangeÀ la sélection d’une celluleFeuille VBA concernée

Avec ces options, vous pouvez automatiser votre VBA pour remplir la zone de liste déroulante selon vos besoins.

Pour lier une ComboBox à plusieurs feuilles, vous pouvez utiliser du code VBA permettant d’accéder aux différentes feuilles, lire des données dans des plages spécifiques et les remplir dans une ComboBox.

Voici plusieurs méthodes pour gérer une ComboBox (zone de liste déroulante) liée à plusieurs feuilles dans Excel.


1. Remplir la ComboBox avec des données issues de plusieurs feuilles

Étapes :

  1. Créez une ComboBox sur une feuille spécifique via l’onglet Développeur (contrôle ActiveX).
  2. Accédez à l’éditeur VBA en appuyant sur Alt + F11.
  3. Collez le code suivant dans ThisWorkbook ou dans un module standard.

Code VBA :

Private Sub Workbook_Open()
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim i As Range, j As Range

    ' Définir les feuilles
    Set ws1 = ThisWorkbook.Sheets("Feuil1")
    Set ws2 = ThisWorkbook.Sheets("Feuil2")

    ' Effacer les éléments existants de la ComboBox
    With ws1.ComboBox1
        .Clear
        ' Remplir depuis Feuil1 (plage A1:A10)
        For Each i In ws1.Range("A1:A10")
            .AddItem i.Value
        Next i

        ' Remplir depuis Feuil2 (plage B1:B5)
        For Each j In ws2.Range("B1:B5")
            .AddItem j.Value
        Next j
    End With
End Sub

Explication :

  1. Définition des feuilles : Set ws1 et Set ws2 permettent de sélectionner les feuilles à utiliser.
  2. Lecture des plages :
    • La boucle For Each parcourt les cellules d’une plage définie (ex. : A1:A10 dans Feuil1).
    • Les valeurs trouvées sont ajoutées à la ComboBox avec .AddItem.
  3. Effacement préalable : .Clear supprime les anciennes entrées de la ComboBox avant d’en ajouter de nouvelles.

2. Dynamiser la sélection des feuilles

Si vous voulez que le code ajoute automatiquement des données de toutes les feuilles dans le classeur, utilisez cette version :

Code VBA :

Private Sub Workbook_Open()
    Dim ws As Worksheet
    Dim cell As Range

    ' Effacer les éléments existants
    With ThisWorkbook.Sheets("Feuil1").ComboBox1
        .Clear

        ' Parcourir toutes les feuilles
        For Each ws In ThisWorkbook.Sheets
            ' Parcourir les cellules dans une plage spécifique (par exemple A1:A10)
            For Each cell In ws.Range("A1:A10")
                If Not IsEmpty(cell.Value) Then
                    .AddItem cell.Value
                End If
            Next cell
        Next ws
    End With
End Sub

Explication :

  1. Toutes les feuilles : La boucle For Each ws In ThisWorkbook.Sheets parcourt chaque feuille du classeur.
  2. Ajout conditionnel : Seules les cellules non vides sont ajoutées à la ComboBox (If Not IsEmpty(cell.Value)).
  3. Plage commune : Le code utilise une plage commune (ici A1:A10) dans toutes les feuilles.

3. Liaison dynamique pour mise à jour en temps réel

Si vous voulez que la ComboBox se mette à jour à chaque activation d’une feuille ou modification, utilisez Worksheet_Activate :

Code VBA :

Private Sub Worksheet_Activate()
    Dim ws As Worksheet
    Dim cell As Range

    ' Effacer les anciennes entrées
    With Me.ComboBox1
        .Clear

        ' Ajouter des données depuis toutes les feuilles
        For Each ws In ThisWorkbook.Sheets
            For Each cell In ws.Range("A1:A10")
                If Not IsEmpty(cell.Value) Then
                    .AddItem ws.Name & " - " & cell.Value ' Ajouter le nom de la feuille
                End If
            Next cell
        Next ws
    End With
End Sub

Ajout d’une référence au nom de la feuille

  • Avec ws.Name & " - " & cell.Value, vous pouvez voir dans la ComboBox d’où provient chaque donnée.

4. Enregistrer et activer les macros

  1. Enregistrez le fichier en format .xlsm.
  2. À l’ouverture du fichier, assurez-vous d’activer les macros.
  3. Testez la ComboBox pour vérifier qu’elle récupère bien les données des feuilles.

Résumé des options

MéthodeAvantage
Feuilles fixes (Feuil1, Feuil2)Personnalisation précise des feuilles ciblées
Toutes les feuilles dynamiquementAutomatisation complète pour tout le classeur
Mise à jour à l’activationSynchronisation en temps réel

Autres articles

Guide : Excel - Les Bases Visuelles
Ce guide est conçu pour vous aider à comprendre et...
Read more
Guide : Présentation d'un Tableau Statistique
Un tableau statistique est un outil essentiel pour organiser et...
Read more
Exercices corrigés : Tableau de Bord Automatique...
Voici une série d’exercices corrigés pour vous familiariser avec les...
Read more
AZ

Share
Published by
AZ

Recent Posts

Guide sur les Termes de Référence (TDR) pour les ONG

Les termes de référence (TDR) constituent un outil fondamental pour la gestion des projets et…

13 minutes ago

Définition des Termes de Référence (TDR) – Canevas Word à Remplir pour créer des (TDR)

Les termes de référence (TDR) sont un document essentiel qui décrit les objectifs, le cadre,…

32 minutes ago

Guide : Excel – Les Bases Visuelles

Ce guide est conçu pour vous aider à comprendre et à appliquer les bases visuelles…

2 heures ago

Tableau de Suivi des Actions Correctives et Préventives dans Excel

Le tableau de suivi des actions correctives et préventives (CAPA - Corrective and Preventive Actions)…

3 heures ago

Modèle d’Inventaire pour Location Saisonnière Meublée dans Excel

Un inventaire est un document essentiel pour toute location saisonnière meublée. Il sert à lister…

3 heures ago

Tableau Excel de Gestion des Stocks de Fournitures : Modèle Excel Gratuit

Un tableau Excel de gestion des stocks est un outil essentiel pour suivre les entrées,…

3 heures ago

This website uses cookies.