VBA – Actualiser un Tableau Croisé Dynamique / Tous les Tableaux Croisés Dynamiques

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

David Gagnon

Last updated on mai 6, 2023

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.

exemple onglet donnees bouton actualiser tout 2

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.

exemple bouton actualisation tableaux croises dynamiques

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
vba-free-addin

Module Complémentaire d'Exemples de Code VBA

Accédez facilement à tous les exemples disponibles sur le site.

Naviguez simplement dans le menu, cliquez, et le code sera inséré directement dans votre module. Module complémentaire .xlam.

(Aucune installation requise!)

Téléchargement gratuit

Retour aux exemples de code VBA