Créer une zone de liste déroulante dans UserForm, Excel VBA 

Créer une zone de liste déroulante dans UserForm, Excel VBA 

Pour créer une zone de liste déroulante (ComboBox) dans un UserForm en VBA Excel, il y a plusieurs étapes à suivre. Voici un guide détaillé avec un exemple de code pour vous aider à comprendre et à implémenter une telle fonctionnalité. 

Étapes à suivre pour créer une zone de liste déroulante dans un UserForm en VBA 

1. Création du UserForm

  • Allez dans l’éditeur VBA (appuyez sur Alt + F11 dans Excel). 
  • Cliquez sur Insertion > UserForm pour créer un nouveau formulaire. 

2. Ajout d’un ComboBox

  • Dans la boîte à outils qui apparaît, choisissez le contrôle ComboBox (zone de liste déroulante) et cliquez sur le formulaire pour l’ajouter. 

3. Ajouter du code pour remplir la liste déroulante

  • Vous pouvez remplir la liste déroulante de différentes manières : en la remplissant manuellement avec des valeurs, ou en les extrayant depuis une plage de cellules dans Excel. 

Exemple de code détaillé 

Imaginons que nous voulons créer un UserForm avec un ComboBox qui contient une liste d’options provenant d’une plage de cellules sur la feuille Excel. Voici un exemple de code complet : 

Étape 1 : Créer le UserForm 

Dans l’éditeur VBA, créez un nouveau UserForm et ajoutez un ComboBox et un bouton (CommandButton) pour fermer le formulaire. 

Étape 2 : Code pour remplir la liste déroulante 

Code pour le UserForm

Ouvrez le code du UserForm et ajoutez le code suivant : 

Private Sub UserForm_Initialize() 
    ' Remplir la liste déroulante (ComboBox) avec des données provenant d'une plage Excel 
    Dim rng As Range 
    Dim cell As Range 
    ' Définir la plage de données à partir de la feuille active (par exemple, A1:A10) 
    Set rng = ThisWorkbook.Sheets("Feuil1").Range("A1:A10") 
    ' Effacer les éléments précédents du ComboBox 
    ComboBox1.Clear 
    ' Parcourir chaque cellule de la plage et ajouter sa valeur dans le ComboBox 
    For Each cell In rng 
        If cell.Value <> "" Then 
            ComboBox1.AddItem cell.Value 
        End If 
    Next cell 
End Sub

Explication du code : 

  • UserForm_Initialize : Cette procédure se lance automatiquement lorsque le UserForm est ouvert. 
  • Définition de la plage rng : Nous définissons la plage de cellules à partir de laquelle les valeurs de la liste déroulante seront extraites. Dans cet exemple, la plage est A1:A10 sur la feuille « Feuil1 ». 
  • ComboBox1.Clear : Avant d’ajouter de nouveaux éléments, nous supprimons les anciens éléments du ComboBox pour éviter les doublons. 
  • Boucle For Each : Cette boucle parcourt chaque cellule de la plage définie, et si la cellule n’est pas vide, la valeur de la cellule est ajoutée à la liste déroulante avec ComboBox1.AddItem cell.Value. 

Ajouter un bouton pour fermer le UserForm :

Ajoutez un bouton sur le UserForm avec le code suivant pour fermer le formulaire lorsque l’utilisateur clique dessus : 

Private Sub CommandButton1_Click() 
    ' Fermer le UserForm 
    Unload Me 
End Sub

Étape 3 : Code pour ouvrir le UserForm 

Maintenant, vous devez ajouter un autre petit morceau de code pour ouvrir le formulaire. Vous pouvez placer ce code dans un module standard. 

Ouvrir le UserForm

Allez dans un module standard (ou créez-en un) et ajoutez ce code : 

Sub OuvrirUserForm() 
    UserForm1.Show 
End Sub

Cela ouvre le UserForm avec le ComboBox rempli dès que vous lancez la macro OuvrirUserForm. 

Étape 4 : Exécution du code 

  • Fermez l’éditeur VBA. 
  • Allez dans Excel et exécutez la macro OuvrirUserForm (en appuyant sur Alt + F8, puis en sélectionnant OuvrirUserForm et en cliquant sur Exécuter). 
  • Vous verrez que le UserForm s’ouvre avec la liste déroulante remplie avec les valeurs de la plage A1:A10 de la feuille « Feuil1 ». 

Option supplémentaire : Ajouter des valeurs directement dans le code 

Si vous voulez ajouter des valeurs manuellement au lieu de les extraire depuis une plage de cellules, vous pouvez utiliser ce code dans UserForm_Initialize : 

Private Sub UserForm_Initialize() 
    ' Ajouter des éléments manuellement au ComboBox 
    ComboBox1.AddItem "Option 1" 
    ComboBox1.AddItem "Option 2" 
    ComboBox1.AddItem "Option 3" 
    ComboBox1.AddItem "Option 4" 
End Sub

Résumé 

  • UserForm_Initialize : C’est l’endroit où vous ajoutez des éléments à la zone de liste déroulante (ComboBox). 
  • ComboBox1.Clear : Efface les éléments existants avant d’ajouter de nouveaux éléments. 
  • ComboBox1.AddItem : Ajoute un élément dans la liste déroulante. 
  • CommandButton1_Click : Le code pour fermer le UserForm lorsque l’utilisateur clique sur le bouton. 

Ce code vous permet de créer un formulaire utilisateur interactif dans lequel vous pouvez sélectionner des éléments d’une liste déroulante (ComboBox) qui est remplie dynamiquement avec des données provenant de la feuille de calcul ou ajoutées manuellement. 

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