/ / Excel Combo dépendants VBA

Excel Combo dépendants VBA

Ci-dessous, nous examinerons un programme en Excel VBA qui crée un Userform qui contient combo dépendants. Le formulaire utilisateur que nous allons créer se présente comme suit:

L'utilisateur sélectionne les animaux dans une liste déroulante. En conséquence, l'utilisateur peut sélectionner un animal dans une deuxième liste déroulante.

Zone de liste déroulante dépendante dans Excel VBA

L'utilisateur sélectionne Sports dans une liste déroulante. En conséquence, l'utilisateur peut sélectionner un sport dans une deuxième liste déroulante.

Zone de liste déroulante dépendante dans Excel VBA

Pour créer ce Userform, exécutez les étapes suivantes.

1. Ouvrez Visual Basic Editor. Si l'explorateur de projet n'est pas visible, cliquez sur Affichage, Explorateur de projets.

2. Cliquez sur Insérer, Userform. Si la boîte à outils n'apparaît pas automatiquement, cliquez sur Affichage, Boîte à outils. Votre écran devrait être configuré comme ci-dessous.

Configuration de l'écran du formulaire utilisateur dans Excel VBA

3 Ajoutez les zones de liste déroulante (la première à gauche, la seconde à droite) et le bouton de commande. Une fois que cela est terminé, le résultat doit être cohérent avec l'image du Userform présentée précédemment. Par exemple, créez un contrôle de zone de liste déroulante en cliquant sur ComboBox dans la Boîte à outils. Ensuite, vous pouvez faire glisser une liste déroulante sur le formulaire utilisateur.

4 Vous pouvez modifier les noms et les légendes des contrôles. Les noms sont utilisés dans le code Excel VBA. Les légendes sont celles qui apparaissent sur votre écran. Il est judicieux de changer le nom des contrôles, mais cela n’est pas nécessaire ici car nous n’avons que quelques contrôles dans cet exemple. Pour modifier la légende du formulaire Userform et du bouton de commande, cliquez sur View, Properties Window, puis sur chaque contrôle.

5. Pour afficher le formulaire utilisateur, placez un bouton de commande sur votre feuille de calcul et ajoutez la ligne de code suivante:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Nous allons maintenant créer le Sub UserForm_Initialize. Lorsque vous utilisez la méthode Show pour Userform, ce sous-programme sera automatiquement exécuté.

6. Ouvrez Visual Basic Editor.

7. Dans l'Explorateur de projet, cliquez avec le bouton droit sur UserForm1, puis cliquez sur Afficher le code.

8. Choisissez Userform dans la liste déroulante de gauche. Choisissez Initialiser dans la liste déroulante de droite.

9. Ajoutez les lignes de code suivantes:

Private Sub UserForm_Initialize()

With ComboBox1
    .AddItem "Animals"
    .AddItem "Sports"
    .AddItem "Food"
End With

End Sub

Explication: Ces lignes de code remplissent la première zone de liste déroulante.

Nous avons maintenant créé la première partie du Userform. Bien que cela ait déjà l'air sympa, rien ne se passera encore lorsque nous sélectionnerons un élément de la première zone de liste déroulante.

10. Dans l'Explorateur de projet, double-cliquez sur UserForm1.

11. Double-cliquez sur la première liste déroulante.

12. Ajoutez les lignes de code suivantes:

Private Sub ComboBox1_Change()

Dim index As Integer
index = ComboBox1.ListIndex

ComboBox2.Clear

Select Case index
    Case Is = 0
        With ComboBox2
            .AddItem "Dog"
            .AddItem "Cat"
            .AddItem "Horse"
        End With
    Case Is = 1
        With ComboBox2
            .AddItem "Tennis"
            .AddItem "Swimming"
            .AddItem "Basketball"
        End With
    Case Is = 2
        With ComboBox2
            .AddItem "Pancakes"
            .AddItem "Pizza"
            .AddItem "Chinese"
        End With
End Select

End Sub

Explication: Excel VBA utilise la valeur de la variable index pour tester chaque instruction Case suivante et déterminer les éléments avec lesquels la deuxième zone de liste déroulante doit être renseignée. Parcourez notre programme Select Case pour en savoir plus sur la structure Select Case.

13. Double-cliquez sur le bouton Importer.

14. Ajoutez la ligne de code suivante:

Private Sub CommandButton1_Click()

Range("A1").Value = ComboBox2.Value

End Sub

Résultat:

Zone de liste déroulante dépendante dans Excel VBA

Lisez aussi: