Vous pouvez sélectionner un ou plusieurs éléments dans la zone liste. La propriété MultiSelect définit le mode dans lequel un tel choix est autorisé.
Les valeurs valides pour la propriété MultiSelect sont des constantes:
■ fmMultiSelectSingle : un seul élément est autorisé;
■ fmMultiSelectMulti : cliquer sur un élément ou appuyer sur la touche <Espace> sélectionne un élément ou le désélectionne;
■ fmMultiSelectExtended : cliquer sur un élément tout en maintenant la touche <Ctrl> enfoncée sélectionne l’élément ou le désélectionne. Cliquer sur un élément tout en appuyant sur la touche <Maj> ajoute une plage d’éléments à la sélection.
La propriété Selected est utilisée pour identifier les éléments sélectionnés. Si sa valeur est True, alors l’élément est sélectionné, s’il est False, alors il n’est pas sélectionné. La propriété List renvoie l’élément à l’index spécifié. Il ne faut pas oublier que les éléments sont indexés à partir de 0. Le nombre total d’éléments de liste est renvoyé par la propriété ListCount.
Figure 1: Sélection de plusieurs éléments dans une liste
Nous allons créer un formulaire sur lequel nous allons placer la zone de liste et le bouton de commande et nous allons définir les valeurs de propriétés, comme indiqué dans le tableau suivant.
Tableau : Valeurs de propriété définies dans la fenêtre Propriétés
Objet | Propriété | Valeur |
Zone de liste | Name | LstNum |
Bouton de commande | Name | CmdOK |
Caption | OK |
Lorsque le formulaire est initialisé, il est rempli et un mode est défini qui vous permet de sélectionner plusieurs éléments. Le fait d’appuyer sur le bouton OK provoque la lecture séquentielle des éléments sélectionnés et l’établissement sur leur base d’une ligne d’information, qui s’affiche dans la boîte de dialogue.
Private Sub UserForm_Initialize() lstNum.AddItem "Un" lstNum.AddItem "Deux" lstNum.AddItem "Trois" lstNum.AddItem "Quatre" lstNum.AddItem "Cinq" lstNum.AddItem "Six" lstNum.AddItem "Sept" lstNum.AddItem "Huit" lstNum.AddItem "Neuf" lstNum.AddItem "Dix" lstNum.AddItem "Onze" lstNum.AddItem "Douze" lstNum.MultiSelect = fmMultiSelectMulti End Sub Private Sub cmdOK_Click() Dim i As Integer Dim s As String For i = 0 To lstNum.ListCount - 1 If lstNum.Selected(i) Then s = s + lstNum.List(i) & vbCr End If Next If s = Empty Then MsgBox "Tu n'as pas choisi!" Else MsgBox s End If End Sub