Private Sub UserForm_Activate()
Dim i&, plage As Range, ligneT, w, c
Set plage = Sheets(1).Range("A1:P" & Cells(Rows.Count, 1).End(xlUp).Row)
For c = 1 To plage.Columns.Count: w = w & plage.Cells(1, c).Width & ";": Next
Me.ListBox1.ColumnWidths = w & 0
tableau = plage.Value
ReDim tbl(1 To UBound(tableau))
ListBox1.ColumnCount = UBound(tableau, 2)
For i = 1 To UBound(tableau)
tableau(i, UBound(tableau, 2)) = i + plage.Row - 1
ligneT = Application.Index(tableau, i, 0): ligneT(UBound(ligneT)) = ""
tbl(i) = "|" & Join(ligneT, "|") & "|"
DoEvents
Next
ListBox1.List = tableau
End Sub