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 |