Private Sub CommandButton1_Click()
t = Array("dimensions", "poids")
With ListBox1
.ColumnCount = UBound(t) + 1
.List = GetTabLo_RangeNoContigue("Tableau1", t) ' on injecte le nom du TS et l'array des nom de colonnes du TS
End With
End Sub
Function GetTabLo_RangeNoContigue(TabloName As String, arrColName)
'fonction perso patricktoulon
Dim Titre, I&, X&
'on recupere la ligne des titre du tableau structuré (le header)dans un array 1 dim
Titre = Application.Index(Range(TabloName & "[#all]").Value, 1, 0)
For I = 0 To UBound(arrColName) 'on boucle sur les noms de l'arrcolname
X = Application.IfError(Application.Match(arrColName(I), Titre, 0), 0) 'on fait un match pour chercher la valeur
If X > 0 Then arrColName(I) = X ' si match on remplace le nom par son index dans l'array lui meme
Next
' donc l'array arrcolname devient un array de chiffre
'il nous reste plus qu'a créer une variable tablo avec ces colonne grace à index et evaluate
'ici en l'ocurence on met tout de suite le resultat dans le return de la fonction
GetTabLo_RangeNoContigue = Application.Index(Range(TabloName), Evaluate("Row(1:" & Range(TabloName).Rows.Count & ")"), arrColName)
End Function