par , 11/10/2020 à 13h12 (1884 Affichages)
Les besoins
- Nous souhaitons trier une colonne d’un tableau structuré
- Nous ne savons pas où se trouve ce tableau dans le classeur
- Nous ne connaissons pas l'adresse de la colonne à trier
Rien de plus simple
La procédure
Tri ascendant de la colonne nommée Pays du tableau structuré nommé T_Test
1 2 3 4 5
| Sub SortListObject()
With Range("T_Test").ListObject
.DataBodyRange.Sort Key1:=.ListColumns("Pays").DataBodyRange, Order1:=xlAscending, Header:=xlYes
End With
End Sub |
Et bien entendu nous pourrions transformer cette procédure pour la rendre utilisable par plusieurs autres procédures
1 2 3 4 5 6 7 8 9 10 11 12
| Sub SortListObject(TableName As String, ColumnLabel As String, Optional Order As Byte = xlAscending)
' Philippe Tulliez (www.magicoffice.be)
' Arguments
' TableName Nom de la table
' ColumnLabel Etiquette de la colonne à trier
' [Order] Orde de tri xlAscending(default) ou xlDescending
Dim oTable As ListObject
Set oTable = Range(TableName).ListObject
With oTable
.DataBodyRange.Sort Key1:=.ListColumns(ColumnLabel).DataBodyRange, Order1:=Order, Header:=xlYes
End With
End Sub |
Exemple d'une procédure qui l'invoque
1 2 3 4 5
| Function TestSortListObject()
SortListObject "T_Test", "Pays", xlDescending
' ou
SortListObject "T_Test", "Pays"
End Function |
Nous avions dit une seule ligne ?
1 2 3
| Sub SortListObject()
With Range("T_Test").ListObject: DataBodyRange.Sort Key1:=.ListColumns("Pays").DataBodyRange, Order1:=xlAscending, Header:=xlYes: End With
End Sub |