Private Sub UserForm_Initialize()
Const MesColonnes = "b;c;d;g;i"
Const MesLargeurs = "70;200;60;50;50"
Dim tablo, Tres, nbrColres&, i&, j&, colTexte, colNum&
With Feuil6
If .FilterMode Then .ShowAllData 'on ôte les critère de filtre le cas échéant
tablo = .Range("b5:i" & .Cells(.Rows.Count, "b").End(xlUp).Row) 'on lit les valeurs colonnes B à I
End With
'on dimensionne donc le tablo résultat Tres aux seules colonnes utiles
nbrColres = UBound(Split(MesColonnes, ";")) + 1
ReDim Tres(1 To UBound(tablo), 1 To nbrColres)
For Each colTexte In Split(MesColonnes, ";") 'pour chaque colonne de MesColonnes
j = j + 1 'on incrémente la colonne du tableau Tres où copier les données de la colonne coltexte
'on connait la lettre absolue "coltexte" de la colonne à copier dans la colonne j
'il faut qu'on connaisse le numéro de cette colonne "colnum" dans le tableau tablo
' ex: la colonne B correspond à la deuxième colonne de Feuil6 (colonne n° 2)
' mais en fait à la colonne 1 de tablo (tablo prend ces valeurs à partir de la colonne B et non A)
colNum = Cells(1, colTexte).Column - 1
'on copie toutes les valeurs de la colonne colnum vers la colonne j de Tres
For i = 1 To UBound(tablo): Tres(i, j) = tablo(i, colNum): Next i
Next colTexte
With Fmprio.ListBox1
.ColumnCount = j
.ColumnWidths = MesLargeurs
.List = Tres 'affectation de Tres à la liste de listbox1
End With
End Sub