Gestion d’un Tableau

La gestion d’un Tableau (depuis la version 2007, Insertion > Tableau) permet de faciliter la manipulation de données. On retrouve cette facilité en VBA.

Création d’un Tableau

Dans notre exemple, nous avons une plage classique Excel, qui commence en cellule A1 de la feuille active.


Dim tblVente As ListObject
Dim wbClasseur As Workbook
Dim wsFeuille As Worksheet

Set wbClasseur = ActiveWorkbook
Set wsFeuille = wbClasseur.ActiveSheet

Set tblVente = wsFeuille.ListObjects.Add(xlSrcRange, wsFeuille.Range("A1").CurrentRegion, , xlYes)
tblVente.Name = "tblVente"

Ajout d’une colonne

'Déclare une variable ColTotal de type Colonne de Tableau
Dim colTotal As ListColumn

'On ajoute une colonne au tableau et on place cette nouvelle colonne dans la variable colTotal
Set colTotal = tblVente.ListColumns.Add

'écrit Total HT dans la première cellule du Tableau (étiquette de colonne)
colTotal.Name = "Total HT"

'Remplit la colonne avec une formule de calcul
colTotal.DataBodyRange = "=[@Qte]*[@PU]"

Ajout d’une ligne

'On déclare une variable NewLine de type Ligne de tableau
Dim NewLine As ListRow

'On ajoute une ligne au tableau et on place cette ligne dans la variable NewLine
Set NewLine = tblVente.ListRows.Add

'Les chiffres 1, 2 et 3 correspondent aux numéros de colonnes dans lesquelles on veut écrire
NewLine.Range(, 1) = "AA"
NewLine.Range(, 2) = 5
NewLine.Range(, 3) = 10

On peut aussi utiliser le nom des colonnes à la place de leur numéro, surtout si l’ordre des colonnes est amené à changer :

Set NewLine = tblVente.ListRows.Add

'on écrit le chiffre 10 dans la colonne est nommée PU
NewLine.Range(, tblVente.ListColumns("PU").Index) = 20
NewLine.Range(, tblVente.ListColumns("Produit").Index) = "BB"
NewLine.Range(, tblVente.ListColumns("Qte").Index) = 6

Ajout d’un total à une colonne

On ajoute ici la somme de la colonne Total HT


tblVente.ShowTotals=True
colTotal.TotalsCalculation = xlTotalsCalculationSum

Suppression d’une ligne


'Suppression de la ligne 2 des données (le ligne 3 de la feuille)
tblVente.ListRows(2).Delete

Gonzague DUCOS a écrit 35 articles

Formateur et développeur Office VBA et Windev

Laissez une réponse

Votre adresse e-mail ne sera pas publié Les champs requis sont marqués *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.