Option Explicit
Option Compare Text
Dim tbl
Private Sub TextBox1_Change()
Dim t(), i&, a&, c&
With TextBox1
If .Value = "" Then ListBox1.List = tbl: Exit Sub
For i = 1 To UBound(tbl)
If tbl(i, 10) Like .Value & "*" Then
a = a + 1: ReDim Preserve t(1 To 10, 1 To a)
For c = 1 To 10: t(c, a) = tbl(i, c): Next
End If
Next
If a > 0 Then ListBox1.List = Application.Transpose(t) Else ListBox1.Clear
End With
End Sub
Private Sub UserForm_Initialize()
With Sheets("List")
entetes.Column = Application.Transpose(.[A9].Resize(1, 10).Value)
tbl = .Range("A10:J" & .Range("A" & Rows.Count).End(xlUp).Row).Value
ListBox1.List = tbl
End With
End Sub
Bonjour @KTM , @patricktoulon ,Bonjour KTM
je t'ai donné une solution simple me semble t il la dernière fois , il suffit de travailler la reconstruction du tableau sur 10 colonnes
c'est à croire que finalement tu ne retiens rien
quand on veux faire une listbox intuitive avec réduction de choix par un textbox on utilise pas ROWSOURCE
car elle n'est plus modifiable après
tu resize ton tableau avec le currentregion par le end(xlup) ce qui te donne A9:J29 alors que l'on s’arrête a 21
je vire tout donc y compris tes label d’entêtes j'ajoute une listbox2 pour me faire l’entêtes dans la quelle je mettrais la ligne 9
et dans la listbox1 je mettrais le reste a partir de la ligne 10
et pour finir il serait peut être temps d'apprendre a travailler avec des tableaux structurés ça simplifie la tache
bref
resultatVB:Option Explicit Option Compare Text Dim tbl Private Sub TextBox1_Change() Dim t(), i&, a&, c& With TextBox1 If .Value = "" Then ListBox1.List = tbl: Exit Sub For i = 1 To UBound(tbl) If tbl(i, 10) Like .Value & "*" Then a = a + 1: ReDim Preserve t(1 To 10, 1 To a) For c = 1 To 10: t(c, a) = tbl(i, c): Next End If Next If a > 0 Then ListBox1.List = Application.Transpose(t) Else ListBox1.Clear End With End Sub Private Sub UserForm_Initialize() With Sheets("List") entetes.Column = Application.Transpose(.[A9].Resize(1, 10).Value) tbl = .Range("A10:J" & .Range("A" & Rows.Count).End(xlUp).Row).Value ListBox1.List = tbl End With End Sub
Regarde la pièce jointe 1125389
les deux version en pièces jointes
Hé oui, qui aime bien châtie bienBonjour cp4 oui c'est vrai c'est une chose que j'ai négligé
tu me traque toi c'est pas possible![]()
Vous avez oublié de joindre les fichiers corrigés!re
je vais te châtier moi tu va voir
ok les fichiers ont été corrigés
Merci pour votre humble aide.re
non je ne les ai pas oubliés , les ai changé dans le post ou ils sont
Private Sub TextBox1_Change()
Dim t(), i&, a&, c&
With TextBox1
If .Value = "" Then ListBox1.List = tbl: Exit Sub
For i = 1 To UBound(tbl)
If tbl(i, 10) Like .Value & "*" Then
a = a + 1: ReDim Preserve t(1 To 10, 1 To a)
For c = 1 To 10: t(c, a) = tbl(i, c): Next
End If
Next
If a > 0 Then
ListBox1.Column = t
Else
ListBox1.Clear
End If
End With
End Sub
Je reviens à la charge avec une autre variante de mon problème.re
non je ne les ai pas oubliés , les ai changé dans le post ou ils sont