Les zone de listes peuvent être à une seule colonne, mais aussi à plusieurs colonnes. Pour ce faire, définissez la valeur de la propriété ColumnCount, qui indique le nombre de colonnes dans la liste.
En outre, à l’aide de la propriété ColumnWidths, vous pouvez définir la largeur de chacune des colonnes de la liste.
ColumnWidths = String
Le paramètre String est une chaîne composée de nombres égaux à la largeur de la colonne correspondante. Le séparateur est un point-virgule. Par exemple, la ligne «90; 80» signifie que 90 points sont attribués pour la première colonne et 80 points pour la seconde.
Les éléments de la zone de liste sont accessibles par la propriété List, dont le premier paramètre spécifie son index et le second spécifie le numéro de colonne. Les index et les colonnes sont numérotés à partir de 0.
List(row, column)
À titre d’exemple, prenons un exemple dans lequel certains nombres aléatoires sont affiché dans une liste à deux colonnes.
Figure : Zone de liste multi-colonnes
Créez un formulaire sur lequel placer une zone de liste, une zone de texte et un bouton de commande, et à l’aide de la fenêtre Propriétés, définissez leurs valeurs de propriété, comme indiqué dans le tableau suivante
Tableau 1. Valeurs de propriété définies dans la fenêtre Propriétés
Objet | Propriété | Valeur |
Zone de liste | Name | LstRnd |
Zone de texte | Name | TxtNum |
Bouton de commande | Name | CmdOK |
Caption | OK |
Lors de l’initialisation du formulaire, un mode de liste à deux colonnes est défini, 30 points sont alloués pour la première colonne et 50 pour la seconde. Lorsque vous cliquez sur OK, la liste est d’abord effacée par la méthode Clear, puis remplie avec des nombres aléatoires. Lorsque vous sélectionnez un élément dans la liste, une fenêtre avec un message sur la sélection s’affiche.
Private Sub UserForm_Initialize() lstRnd.ColumnCount = 2 lstRnd.ColumnWidths = "30;50" End Sub Private Sub cmdOK_Click() lstRnd.Clear Dim i As Integer, n As Integer n = txtNum.Text If n <= 0 Then MsgBox "Il faut introduire une valeur positive" Exit Sub End If Randomize For i = 0 To n lstRnd.AddItem i lstRnd.List(i, 1) = FormatNumber(Rnd(), 4) Next End Sub Private Sub lstRnd_Change() MsgBox lstRnd.List(lstRnd.ListIndex, 0) & vbTab _ & lstRnd.List(lstRnd.ListIndex, 1) End Sub