VBA - Actualiser le tableau croisé dynamique / Tous les tableaux croisés dynamiques

Ce didacticiel montrera comment actualiser 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 qu'on appelle un cache de tableau croisé dynamique. Les données sont donc stockées dans la mémoire cache du PC ce qui accélère le 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 dans Excel doit cliquer sur le Rafraîchir tout dans l'onglet Données du ruban pour actualiser les données source du tableau croisé dynamique.

Alternativement, nous pouvons écrire des macros en VBA qui mettront à jour les données pour nous !

Actualiser toutes les connexions de données

La méthode la plus simple pour actualiser les données consiste à utiliser VBA pour imiter ce que le Rafraîchir tout le bouton fait sur le ruban.

123 Sub RefreshConnections()ActiveWorkbook.RefreshAllFin du sous-marin

Cette méthode actualisera toutes les connexions à toutes les données du classeur que vous avez actives. Il actualisera également non seulement un seul tableau croisé dynamique, mais actualisera plusieurs tableaux croisés dynamiques si vous en avez plusieurs connectés à différents ensembles de données.

Actualiser tous les tableaux croisés dynamiques

Pour actualiser uniquement les tableaux croisés dynamiques dans notre classeur mais exclure toute autre connexion de données, nous pouvons utiliser une méthode appelée Rafraîchir le tableau.

Si nous avons plusieurs tableaux croisés dynamiques dans notre classeur, nous aurions besoin de parcourir tous les tableaux croisés dynamiques afin de les actualiser tous. Pour ce faire, nous déclarons d'abord une variable de tableau croisé dynamique, puis créons une boucle For Each pour parcourir tous les tableaux croisés dynamiques du classeur actif.

123456 Sub RefreshPivotsOnly()Dim tblPivot en tant que tableau croisé dynamiquePour chaque tblPivot dans ActiveWorkbook.PivotTablestblPivot.RefreshTableSuivant tblPivotFin du sous-marin

Nous pouvons utiliser une macro similaire pour actualiser les tableaux croisés dynamiques dans notre Feuille active plutôt que le classeur entier. Nous bouclerions ensuite les tableaux croisés dynamiques dans le Feuille active plûtot que le Cahier de travail actif.

123456 Sub RefreshActiveSheetPivotsOnly()Dim tblPivot en tant que tableau croisé dynamiquePour chaque tblPivot dans ActiveSheet.PivotTablestblPivot.RefreshTableSuivant tblPivotFin du sous-marin

Cette macro serait très utile si nous avions un accès facile sur notre Feuille active. Pour cela, nous pouvons créer un bouton sur la feuille pour exécuter la macro.

Actualiser un tableau croisé dynamique

Si nous voulons simplement actualiser 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. Ceci est bien sûr tant que vous connaissez le nom du tableau croisé dynamique - dans ce cas Tableau croisé dynamique1.

123 Sous-refreshOneTableActiveSheet.PivotTables("PivotTable1").RefreshTableFin du sous-marin

Actualisation du cache du tableau croisé dynamique

Si nous avons plusieurs tableaux croisés dynamiques dans notre classeur, mais qu'ils utilisent tous les mêmes données, nous pouvons actualiser le cache du tableau croisé dynamique plutôt que d'actualiser le tableau croisé dynamique réel. L'actualisation du cache actualisera alors automatiquement tous les tableaux croisés dynamiques qui utilisent les données contenues dans le cache.

123456 Sous RefreshCache()Dim chPivot As PivotCachePour chaque chPivot dans ActiveWorkbook.PivotCacheschPivot.RefreshSuivant chPivotFin du sous-marin
wave wave wave wave wave