Re
2 solutions :
1) Tu ne veux vraiment que 3 colonnes sur 5 dans la listbox , l’inconvénient est que tu perds l’entête des colonnes :
Private Sub UserForm_Initialize()
Dim l As Integer
Dim cell As Range
Dim z as byte
Me.ListBox1.ColumnCount = 3
l = Sheets("Feuil1").Range("a65536").End(xlUp).Row
For Each cell In Sheets("feuil1").Range("a2:a" & l)
Me.ListBox1.AddItem cell.Value
Me.ListBox1.List(z, 0) = cell.Value
Me.ListBox1.List(z, 1) = cell.Offset(0, 1).Value
Me.ListBox1.List(z, 2) = cell.Offset(0, 4).Value
z = z + 1
Next cell
End Sub
2) tu met toutes les colonnes dans la listbox, mais tu caches les colonnes 3 et 4, ainsi tu gardes les entêtes de colonne :
Private Sub UserForm_Initialize()
Dim l As Integer
Dim Plage As String
Me.ListBox1.ColumnCount = 5
Me.ListBox1.ColumnHeads = True
Me.ListBox1.ColumnWidths = "40 pt;40 pt;0 pt;0 pt;40 pt"
l = Sheets("Feuil1").Range("a65536").End(xlUp).Row
Plage = Sheets("Feuil1").Range("a2:e" & l).Address
ListBox1.RowSource = "Feuil1!" & Plage
End Sub
La deuxième solution à ma préférence : entêtes des colonnes, toutes les données sont dans la listbox, le code s’exécute plus vite.
Salut
Hervé