Zone de liste multi-colonnes dans un formulaire personnalisé ou Userform, Excel VBA

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

 

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x