Private Sub UserForm_Initialize()
Dim BDF As Worksheet
Dim l As Range
Dim t_prem As Range, t_dern As Range
Set BDF = Worksheets("BD form")
Set t_prem = BDF.Range("B1")
Set t_dern = BDF.Range("IV1").End(xlToLeft)
Dim tablo()
ReDim tablo(2, 0)
' Récupère les formations pour la liste multichoix
ListBox1.ColumnCount = 2
ListBox1.Clear
'mise en tableau des infos
For Each l In BDF.Range(t_prem, t_dern)
If l.Value <> "" Then
tablo(1, UBound(tablo, 2)) = l.Column
tablo(2, UBound(tablo, 2)) = l.Value
ReDim Preserve tablo(2, UBound(tablo, 2) + 1)
End If
Next
'Tri du tableau
For n = LBound(tablo, 2) To UBound(tablo, 2) - 1
For m = LBound(tablo, 2) To UBound(tablo, 2) - 1
If tablo(2, m) > tablo(2, n) Then
temp1 = tablo(1, n)
temp2 = tablo(2, n)
tablo(1, n) = tablo(1, m)
tablo(2, n) = tablo(2, m)
tablo(1, m) = temp1
tablo(2, m) = temp2
End If
Next m
Next n
'transfert du tableau a la listbox
For n = LBound(tablo, 2) To UBound(tablo, 2) - 1
ListBox1.AddItem tablo(1, n)
ListBox1.List(ListBox1.ListCount - 1, 1) = tablo(2, n)
Next n
End Sub