Zone de liste VBA - Élément sélectionné

Cet article montrera comment utiliser l'élément sélectionné dans une zone de liste dans Excel VBA.

Les zones de liste sont largement utilisées dans les formulaires VBA, mais peuvent également être utilisées dans votre feuille de calcul Excel. Ils affichent une liste d'options pour les utilisateurs, parmi lesquels l'utilisateur peut sélectionner une ou plusieurs.

Créer une zone de liste dans un formulaire VBA

Pour créer une zone de liste dans un formulaire VBA, nous devons d'abord créer le UserForm.

Une fois votre formulaire créé, sélectionnez le contrôle Zone de liste dans la boîte à outils puis faites glisser pour créer une zone de liste sur votre formulaire.

Ajouter des valeurs à la zone de liste

Dans l'événement Initialize du formulaire, tapez le code suivant. La zone de liste récupère les valeurs stockées dans une plage de cellules de votre feuille de calcul Excel.

123456 Private Sub UserForm_Initialize()Dim rng As RangePour chaque sonnerie dans la plage ("A1:A50")Me.lstState.AddItem rng.Valuesonnerie suivanteFin du sous-marin

Lorsque nous exécutons le formulaire, la zone de liste s'affichera comme illustré dans l'image ci-dessous :

Sélection de valeurs dans la zone de liste

Par défaut, une seule valeur peut être sélectionnée dans une zone de liste dans un formulaire utilisateur. Cependant, cela peut être modifié en modifiant la propriété Multi-Select de la zone de liste.

Cliquez sur la zone de liste pour la sélectionner, puis dans la fenêtre Propriétés, modifiez la propriété Multi-Select de 0-frmMultiSelectSingle à 1-frmMultiSelectMulti.

Maintenant, lorsque nous exécutons le formulaire, nous pouvons sélectionner plusieurs options dans la zone de liste.

Si nous changeons l'option d'être 2-frmMultiSelectExtended, cela signifie que nous pouvons sélectionner l'une des valeurs, puis, en maintenant la touche MAJ enfoncée, sélectionnez une autre valeur plus bas dans la liste, et tous les éléments entre les 2 valeurs sélectionnées seront également sélectionnés.

Programmation VBA | Le générateur de code fonctionne pour vous !

Travailler avec les valeurs sélectionnées dans VBA

Selon le type d'option que nous avons utilisé pour la propriété Multi-Select dans la zone de liste, il existe plusieurs façons d'utiliser la ou les valeurs sélectionnées dans la zone de liste du code VBA.

Affectation de la valeur à une variable

Nous pouvons utiliser le After_Update événement de la list box pour affecter la valeur sélectionnée à une variable.

Tout d'abord, créons une variable de niveau module en haut du module de formulaire.

Sous les mots, Option Explicite, créez la variable de chaîne suivante.

1 Dim strState en tant que chaîne.

Une fois que nous avons créé cette variable, nous pouvons double-cliquer sur la zone de liste pour accéder au code derrière le formulaire, ou nous pouvons cliquer sur le bouton de code dans l'éditeur VBE.

L'événement Click de la zone de liste sera automatiquement créé. Sélectionnez le After_Update Evénement forme la liste des Procédures disponibles.

Dans l'événement After_Update, saisissez le code suivant :

123 Sous privé lstState_AfterUpdate()strState = Me.lstStateFin du sous-marin

REMARQUE : vous pouvez supprimer l'événement Click car il n'est pas requis.

Maintenant, si nous exécutons le formulaire et cliquons sur la zone de liste, la valeur sélectionnée sera stockée dans la variable. Pour tester cela, nous pouvons mettre un point BREAK dans le code.

Maintenant, lorsque nous exécutons le formulaire, si nous cliquons sur la zone de liste, le code passera en mode DEBUG et s'arrêtera à notre point d'arrêt. Si nous appuyons ensuite sur F8 sur le clavier pour avancer d'un cran dans le code, la variable sera renseignée avec l'élément sélectionné dans la liste.

Nous pouvons visualiser cette valeur en posant la souris sur la variable.

OU

Nous pouvons voir la valeur dans la fenêtre immédiate.

Fatigué de rechercher des exemples de code VBA ? Essayez AutoMacro !

Utilisation d'un bouton de commande pour renvoyer la valeur à Excel

Dans un premier temps, nous créons un bouton de commande sur le formulaire afin d'avoir un bouton OK pour renvoyer la ou les valeurs sélectionnées dans la list box vers Excel.

Sélectionnez le contrôle Bouton de commande, puis cliquez et faites glisser dans votre formulaire pour créer le bouton.

Dans la fenêtre Propriétés, remplacez le nom du bouton par cmdOK, et modifiez la légende et l'accélérateur du bouton.

Le but de l'accélérateur est que l'utilisateur utilise le clavier pour activer le bouton, dans ce cas Alt+O activerait le bouton.

Pour que le bouton de commande fonctionne, nous devons ajouter du code derrière celui-ci afin que lorsque le bouton est cliqué, le code s'exécute. C'est ce qu'on appelle l'événement Click du bouton.

Pour accéder à l'événement de clic, double-cliquez sur le bouton dans la vue de conception du formulaire. L'événement de clic sera automatiquement créé car il s'agit de l'événement le plus couramment utilisé pour les boutons de commande.

Tapez le code suivant dans l'événement click du bouton de commande.

123 Sous-marin privé cmdOK_Click()Range ("E1") = strStateFin du sous-marin

Le code récupérera la variable que nous avons déclarée dans l'événement After_Update de la ListBox et renverra la valeur à la plage dans Excel.

Alternativement, nous pouvons récupérer la valeur directement à partir de la zone de liste sans utiliser de variable.

123 Sous-marin privé cmdOK_Click()Range ("E1") = me.lstStateFin du sous-marin

Lorsque nous exécutons le formulaire, la valeur sélectionnée sera renvoyée à Excel lorsque nous cliquons sur le bouton OK.

Sélection de plusieurs valeurs

Si nous avons défini la propriété multi-select de la zone de liste sur 1 ou 2, ce qui nous permet de sélectionner plusieurs valeurs dans la liste, le code pour sélectionner ces valeurs est légèrement différent.

Les After_Update l'événement n'est plus déclenché lors de la sélection des valeurs dans la zone de liste - nous ne pouvons donc pas utiliser cet événement.

Nous pouvons toujours utiliser l'événement de clic sur le bouton de commande, mais nous devons parcourir les valeurs sélectionnées dans la zone de liste afin de les renvoyer à Excel.

Dans l'événement Click du bouton de commande, tapez le code suivant.

12345678910 Sous-marin privé cmdOK_Click()Dim x en tant qu'entierPlage("E1").SélectionnezPour x = 0 À Me.lstState.ListCount - 1Si Me.lstState.Selected(x) = True AlorsActiveCell = Me.lstState.List(x)ActiveCell.Offset(1, 0).SélectionnerFin siSuivant xFin du sous-marin

Désormais, lorsque nous exécutons le formulaire, seules les valeurs sélectionnées seront renvoyées dans la feuille Excel.

Vous contribuerez au développement du site, partager la page avec vos amis

wave wave wave wave wave