Ci-dessous, nous examinerons un programme dans Excel VBA qui crée une Userform qui contient une zone de liste déroulante multicolonne.

Le Userform nous allons créer se présente comme suit:

Multicolumn Combo Box in Excel VBA

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

  1. Ouvrez le Visual Basic Editor. Si l’Explorateur de projets n’est pas visible, cliquez sur Afficher, Project Explorer.

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

Userform Screen Setup in Excel VBA

  1. Ajoutez les étiquettes, boutons de zone de liste déroulante et de commande. Une fois cet exercice terminé, le résultat devrait être compatible avec l’image du Userform indiqué précédemment. Par exemple, créez un contrôle de zone de liste déroulante en cliquant sur ComboBox de la boîte à outils. Ensuite, vous pouvez faire glisser une zone de liste déroulante sur le Userform.

  2. Vous pouvez modifier les noms et les légendes des contrôles. Les noms sont utilisés dans le code VBA Excel. Les légendes sont celles qui apparaissent sur votre écran. Il est bon de changer les noms des contrôles, mais il est pas nécessaire ici parce que nous avons seulement quelques contrôles dans cet exemple. Pour modifier la légende des boutons formUtilisateur, étiquette et de commande, cliquez sur Affichage, fenêtre Propriétés et cliquez sur chaque contrôle.

  3. Pour afficher le Userform, 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 la sous UserForm_Initialize. Lorsque vous utilisez la méthode Show pour la Userform, ce sous sera exécuté automatiquement.

  1. Ouvrez Visual Basic Editor.

  2. Dans l’Explorateur de projets, cliquez droit sur UserForm1 puis cliquez sur Afficher le code.

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

  4. Ajoutez les lignes de code suivantes:

Private Sub UserForm_Initialize()

ComboBox1.ColumnCount = 2

Dim Films(1 To 5, 1 To 2) As String

Dim i As Integer, j As Integer

Films(1, 1) = "Lord of the Rings"

Films(2, 1) = "Speed"

Films(3, 1) = "Star Wars"

Films(4, 1) = "The Godfather"

Films(5, 1) = "Pulp Fiction"

Films(1, 2) = "Adventure"

Films(2, 2) = "Action"

Films(3, 2) = "Sci-Fi"

Films(4, 2) = "Crime"

Films(5, 2) = "Drama"

ComboBox1.List = Films

End Sub

Explication: La première ligne de code définit le nombre de colonnes de la zone de liste déroulante à 2. Au lieu de définir le nombre de colonnes lors de l’exécution, vous pouvez également configurer ce paramètre au moment de la conception. Pour ce faire, clic droit sur le contrôle de la zone de liste déroulante, cliquez sur Propriétés et définissez la propriété ColumnCount à 2. Ensuite, nous déclarons et initialiser un tableau à deux dimensions. La dernière ligne de code attribue le tableau à la zone de liste déroulante.

Nous avons créé la première partie de la Userform. Bien qu’il semble déjà soignée, rien ne se passera encore lorsque l’on clique sur les boutons de commande sur le Userform.

  1. Dans l’Explorateur de projets, double-cliquez sur UserForm1.

  2. Double-cliquez sur le bouton OK.

  3. Ajoutez les lignes de code suivantes:

Private Sub CommandButton1_Click()

Unload Me

MsgBox "You selected " & ComboBox1.Value

On Error Resume Next

MsgBox "You like " & ComboBox1.Column(1) & " movies"

End Sub

Remarque: ces lignes de code VBA Excel fermer le Userform et afficher l’élément sélectionné et genre. La « On Error Resume Next » déclaration ne tient pas compte de l’erreur lorsque les remplissages de l’utilisateur dans sa / son propre film (dans ce cas, il n’y a pas de genre disponible).

  1. Double-cliquez sur le bouton Annuler.

  2. Ajouter la ligne de code suivant:

Private Sub CommandButton2_Click()

Unload Me

End Sub

Résultat lorsque vous sélectionnez Vitesse et cliquez sur OK.

Multicolumn Combo Box Result

Multicolumn Combo Box Result