Alimenter listbox 4 colonnes et rechercher

Bonjour,

J'ai plusieurs soucis tout d'abord je souhaiterai alimenter un listbox de 4 colonnes à partir d'un tableau malgré moult recherche sur les forums sur ce sujet je n'ai malheureusement pas trouvé de solution afin d'alimenter mon listbox.

Je voudrai alimenter mon Listbox avec le tableau présent sur la feuille Stock allant de A10 à D10 en largeur et de d'une longueur variable. Mais en affichant aussi la ligne A9 à D9 en titre dans le Listbox.

Autre soucis je souhaiterai effectuer une recherche "dynamique" dans mon listbox c'est à dire quand je vais taper une lettre il va trier et afficher dans le listbox uniquement les lignes contenant la lettre ou le chiffre présent dans le Textbox au dessus.

Le userform utile pour celà est le StockDeleteForm.

Merci d'avance

Bonjour,

Pour remplir la ListBox avec les valeurs de la feuille, tu peux utiliser la propriété RowSource :

Private Sub UserForm_Initialize()

    Dim Lig As Long

    With Worksheets("Stock"): Lig = .Cells(.Rows.Count, 1).End(xlUp).Row: End With 'sur colonne A

    ListBox1.ColumnHeads = True
    ListBox1.RowSource = "A11:D" & Lig

End Sub

mais si tu veux faire une recherche, tu ne peux pas utiliser la propriété "RowSource", il te faut utiliser AddItem mais dans ce cas, plus d'entêtes de colonnes :

Private Sub UserForm_Initialize()

    Dim Lig As Long
    Dim I As Long
    Dim J As Long

    With Worksheets("Stock")

        Lig = .Cells(.Rows.Count, 1).End(xlUp).Row 'sur colonne A

        ListBox1.ColumnHeads = True 'ici, ne seret à rien car les entêtes ne seront pas remplies

        For I = 11 To Lig

            ListBox1.AddItem .Cells(I, 1).Value
            ListBox1.Column(1, J) = .Cells(I, 2).Value
            ListBox1.Column(2, J) = .Cells(I, 3).Value
            ListBox1.Column(3, J) = .Cells(I, 4).Value
            J = J + 1

        Next I

    End With

End Sub

Voici un code pour la recherche sur l'événement "Change()" du TextBox "TextBox2" :

Private Sub TextBox2_Change()

    Dim Lig As Long
    Dim I As Long
    Dim J As Long

    ListBox1.Clear

    With Worksheets("Stock")

        Lig = .Cells(.Rows.Count, 1).End(xlUp).Row 'sur colonne A

        For I = 11 To Lig

            If .Cells(I, 2).Value Like TextBox2.Text & "*" Then

                ListBox1.AddItem .Cells(I, 1).Value
                ListBox1.Column(1, J) = .Cells(I, 2).Value
                ListBox1.Column(2, J) = .Cells(I, 3).Value
                ListBox1.Column(3, J) = .Cells(I, 4).Value
                J = J + 1

            End If

        Next I

    End With

End Sub

Si tu veux faire une recherche où la casse n'a pas d'importance (majuscule et minuscule) il te faut ajouter en tête de module la phrase suivante :

Option Compare Text

Merci beaucoup pour l'explication en même temps ! Cela fonctionne parfaitement !!

Juste une question est il possible d'étendre la recherche sur les 2 premières colonnes du listbox ?

Rechercher des sujets similaires à "alimenter listbox colonnes rechercher"