Un tableau structuré Excel est en fait l’équivalent d’une table Access.
- Il est borné car le nombre de ses lignes et colonnes est obligatoirement défini
- Il est identifié par son nom et les entêtes de ses colonnes.
Utilisation de la classe ListObject
Ses principales propriétés sont les objets :
- Range = ensemble du tableau
- HeaderRowRange = ligne des entêtes de colonne
- DataBodyRange = lignes des données du tableau
- TotalsRowRange = ligne des totaux du tableau si elle a été définie
- ListRows = lignes du tableau
- ListColumns = colonnes du tableau
Assignation du tableau structuré à partir de son nom :
Dim TS As ListObject
Set TS = Range("nom_du_tableau").ListObject
Ou Set TS = [nom_du_tableau].ListObject
'feuille où se trouve le tableau
Dim feuille As Worksheet
Set feuille = TS.Range.Worksheet
Gestion des lignes du tableau :
Dim ligne As ListRow
Dim i As Integer, nb_lig As Integer, nb_col As Integer
'// nombre de lignes
nb_lig = TS.ListRows.Count
'// nombre de colonnes
nb_col = TS.ListColumns.Count
'// ajout d'une ligne et indice de la ligne ajoutée
Set ligne = TS.ListRows.Add: i = ligne.Index
'// suppression d'une ligne d'indice i
TS.ListRows(i).Delete
'// vidage intégral du tableau
TS.DataBodyRange.Delete
'// remplissage d'une ligne d'indice i
TS.ListColumns("nom colonne").DataBodyRange(i) = valeur
'// recherche exacte de l'indice d'une ligne du tableau à partir d'une valeur de recherche unique dans une colonne donnée
i = Application.Match(valeur_recherchée, TS.ListColumns("nom_colonne").DataBodyRange, 0)
ou
Set Cell =TS.ListColumns("nom_colonne").DataBodyRange.Find (valeur_recherchée, LookAt:= XLWhole)
i = Cell.Row - TS.HeaderRowRange.Row