VBA – Actualiser un Tableau Croisé Dynamique / Tous les Tableaux Croisés Dynamiques
In this Article
Ce tutoriel montre comment rafraîchir un tableau croisé dynamique ou tous les tableaux croisés dynamiques à l’aide de VBA.
Les Tableaux Croisés Dynamiques sont un outil de données exceptionnellement puissant d’Excel. Les tableaux croisés dynamiques nous permettent d’analyser et d’interpréter de grandes quantités de données en regroupant et en résumant les champs et les lignes.
Lorsque nous créons un tableau croisé dynamique, les données sont stockées dans ce que l’on appelle la cache du tableau croisé dynamique.
Si la source de données du tableau croisé dynamique est mise à jour, le tableau croisé dynamique lui-même n’est pas mis à jour. L’utilisateur d’Excel doit cliquer sur le bouton Actualiser tout dans l’onglet Données du ruban pour actualiser les données source du tableau croisé dynamique.
Il est également possible d’écrire des macros en VBA qui mettront à jour les données à notre place!
Actualiser Toutes les Connexions de Données
La méthode la plus simple pour actualiser les données consiste à utiliser VBA pour imiter le bouton Actualiser tout du ruban.
Sub ActualiserConnexions()
ActiveWorkbook.RefreshAll
End Sub
Cette méthode permet d’actualiser toutes les connexions aux données du classeur qui sont actives. Elle ne se contente pas d’actualiser un seul tableau croisé dynamique, mais en actualise plusieurs si vous en avez plus d’un connecté à différents ensembles de données.
Actualiser Tous les Tableaux Croisés Dynamiques
Pour actualiser uniquement les tableaux croisés dynamiques de notre classeur, à l’exclusion de toute autre connexion de données, nous pouvons utiliser une méthode appelée RefreshTable.
Si nous avons plusieurs tableaux croisés dynamiques dans notre classeur, nous devrons parcourir en boucle tous les tableaux croisés dynamiques afin de tous les actualiser. Pour ce faire, nous commençons par déclarer une variable de tableau croisé dynamique, puis nous créons une boucle For Each pour parcourir tous les tableaux croisés dynamiques du classeur actif.
Sub ActualiserSeulementTableaux()
Dim tblPivot As PivotTable
For Each tblPivot In ActiveWorkbook.PivotTables
tblPivot.RefreshTable
Next tblPivot
End Sub
Nous pouvons utiliser une macro similaire pour rafraîchir les tableaux croisés dynamiques de notre Feuille active plutôt que dans l’ensemble du classeur. Nous pourrions alors parcourir en boucle les tableaux croisés dynamiques dans la feuille active plutôt que dans le classeur actif.
Sub ActualiserSeulementTableauxFeuilleActive()
Dim tblPivot As PivotTable
For Each tblPivot In ActiveSheet.PivotTables
tblPivot.RefreshTable
Next tblPivot
End Sub
Cette macro serait plus utile si nous pouvions y accéder facilement sur notre feuille active. Pour ce faire, nous pouvons créer un bouton sur la feuille pour exécuter la macro.
Actualiser un Tableau Croisé Dynamique
Si nous voulons uniquement rafraîchir le tableau croisé dynamique sur lequel nous travaillons et non tous les autres tableaux croisés dynamiques du classeur, nous devons identifier le tableau croisé dynamique spécifique. Pour cela, il faut bien sûr connaître le nom du tableau croisé dynamique – dans ce cas, Tableau croisé dynamique1.
Sub ActualiserUnTableau()
ActiveSheet.PivotTables("Tableau croisé dynamique1").RefreshTable
End Sub
Actualisation de la Cache des Tableaux Croisés Dynamiques
Si nous avons plusieurs tableaux croisés dynamiques dans notre classeur, mais qu’ils utilisent tous les mêmes données, nous pouvons actualiser la cache du tableau croisé dynamique au lieu d’actualiser le tableau croisé dynamique proprement dit. L’actualisation de la cache rafraîchira alors automatiquement tous les tableaux croisés dynamiques qui utilisent les données contenues dans la cache.
Sub ActualiserCache()
Dim chPivot As PivotCache
For Each chPivot In ActiveWorkbook.PivotCaches
chPivot.Refresh
Next chPivot
End Sub