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 Submais 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 SubVoici 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 SubSi 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 TextMerci 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 ?