Excel - Power Query - Power Pivot - VBA

Tableaux

1 | Déclaration d'un Tableau

Dim tblvente As ListObject

2 | Affectation d'un Tableau

Le Tableau existe déjà

Vous devez savoir dans quelle feuille se trouve le Tableau.

On pointe vers le Tableau par son numéro :

Set tblVente = VariableFeuille.ListObjects(1)

Ou avec son nom

Set tblVente = VariableFeuille.ListObjects("tblvente")

Le Tableau doit être créé

Crée un Tableau incluant les cellules autour de la cellule A1 de la feuille active:

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

3 | Manipulation d'un Tableau

Tableau

Nommer

VariableTableau.Name = "tblVente"

Convertir en plage

VariableTableau.Unlist

Trier un Tableau

VariableTableau.Sort.SortFields.Clear
VariableTableau.Sort.SortFields.Add Key:=Range("tblVente[[#Headers],[#Data],[Zone]]"), SortOn:= xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With VariableTableau.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

Parcourir des lignes

Dim VariableLigne As ListRow
 
For Each VariableLigne In VariableTableau.ListRows
  Debug.Print VariableLigne.Range.Columns(1)
Next

Afficher la ligne Total

VariableTableau.ShowTotals = True
VariableTableau.ListColumns("TTC").TotalsCalculation = xlTotalsCalculationSum

Filtrer un Tableau

Enlève le filtre :

VariableTableau.Range.AutoFilter Field:=3

Place le filtre :

VariableTableau.Range.AutoFilter Field:=3, Criteria1:="=1", Operator:=xlAnd

Lignes

Ajouter une ligne

Dim NewLine As ListRow
 
Set NewLine = tblVente.ListRows.Add

Écrire une ligne

Le Tableau comporte les colonnes Zone et CA. On souhaite ajouter une ligne :

Dim NewLine As ListRow
NewLine.Range.Cells(, tblVente.ListColumns("Zone").Index).Value = "Zone1"
NewLine.Range.Cells(, tblVente.ListColumns("CA").Index).Value = "50"

On peut aussi désigner une cellule de la nouvelle ligne par son numéro :

NewLine.Range.Colums(1).Value = "Zone1"
NewLine.Range.Colums(2).Value = "50"

Supprimer une ligne

Supprimer la ligne 5 :

tblVente.ListRows(5).Delete

Effacer toutes les lignes

Supprimer toutes les lignes de données :

If Not tblVente.DataBodyRange Is Nothing Then
  tblVente.DataBodyRange.Delete
End if

Notez qu’il reste toujours une ligne vide mais les formules ne sont pas supprimées : quand vous collerez ou saisirez des données dans le Tableau, les formules seront propagées dans les colonnes calculées.

Colonnes

Créer une colonne

Dim NewCol As ListColumn
Set NewCol = tblVente.ListColumns.Add
NewCol.Name="TTC"
NewCol.DataBodyRange.Cells(1) = "=[@CA]*1.196"

Supprimer une colonne

Supprimer la colonne "CA"

tblVente.ListColumns("CA").Delete

Supprimer la colonne 5

tblVente.ListColumns(5).Delete

Formate une colonne

Appliquer un format Date

VariableTableau.ListColumns("CA").DataBodyRange.NumberFormat = "m/d/yyyy"

Appliquer un format Pourcentage

VariableTableau.ListColumns("CA").DataBodyRange.NumberFormat = "0.00%"

Appliquer un format Nombre avec séparateur de miliers

VariableTableau.ListColumns("CA").DataBodyRange.NumberFormat = "#,##0.00"

Résumé

image.png
image.png
image.png