Bonjour
Mon problème du jour : je souhaite avoir dans la listbox le texte entier d'une cellule et non cela:
qui se met que sur une seule ligne avec une hauteur standard
Avez vous une idée ?
dans les propriétés de la liste box ?
ou dans le code
C'est un userform de recherche
Option Compare Text
Dim f, choix(), Rng, Ncol
Private Sub UserForm_Initialize()
Set f = ActiveSheet
Set Rng = f.range("b17:L" & f.[a65000].End(xlUp).Row)
decal = Rng.Row - 1
Ncol = Rng.Columns.Count
TblTmp = Rng.Value
Ncol = Rng.Columns.Count - 1
ReDim choix(1 To UBound(TblTmp))
For i = LBound(TblTmp) To UBound(TblTmp)
TblTmp(i, Ncol + 1) = i + decal
For k = 1 To Ncol
choix(i) = choix(i) & TblTmp(i, k) & "|"
Next k
choix(i) = choix(i) & (i + decal) & "|"
Next i
'Call Tri(TblTmp, 1, LBound(TblTmp), UBound(TblTmp))
Me.ListBox1.List = TblTmp
End Sub
Private Sub TextBoxRech_Change()
If Me.TextBoxRech <> "" Then
mots = Split(Trim(Me.TextBoxRech), " ")
Tbl = choix
For i = LBound(mots) To UBound(mots)
Tbl = Filter(Tbl, mots(i), True, vbTextCompare)
Next i
n = 0: Dim b()
For i = LBound(Tbl) To UBound(Tbl)
a = Split(Tbl(i), "|")
n = n + 1: ReDim Preserve b(1 To Ncol + 1, 1 To n)
For k = 1 To Ncol
b(k, i + 1) = a(k - 1)
Next k
b(k, i + 1) = a(k - 1)
Next i
If n > 0 Then
ReDim Preserve b(1 To Ncol + 1, 1 To n + 1)
Me.ListBox1.List = Application.Transpose(b)
Me.ListBox1.RemoveItem n
End If
Else
UserForm_Initialize
End If
End Sub
Cdt...
j'ai un autre problème je doit partir de la colonne B Set Rng = f.range("b17:L" & f.[a65000].End(xlUp).Row)
car dans la colone A j 'ai des cellules vide et cela plante à Me.ListBox1.List = Application.Transpose(b)
Bonjour CGU,
Je ne pense pas qu'il soit possible directement de remplir une Listbox avec ce genre de chaine en conservant la mise en forme de la cellule.
Le plus simple étant, je pense, de la remplir à partir d'un tableau splitté, le séparateur ayant le code 10.
VB:
Sub RemplirListbox()
Tablo = Split([C13], Chr(10))
For i = 0 To UBound(Tablo)
UserForm1.ListBox1.AddItem Tablo(i)
Next i
UserForm1.Show
End Sub