Rafraîchir tous les tableaux croisés dynamiques de mon classeur Excel avec une macro

J'ai un classeur contenant 20 tableaux croisés dynamiques différents. Existe-t-il un moyen simple de trouver tous les tableaux croisés dynamiques et de les rafraîchir en VBA ?

Solution

Oui.

ThisWorkbook.RefreshAll

Ou, si votre version d'Excel est assez ancienne,

Dim Sheet as WorkSheet, Pivot as PivotTable
For Each Sheet in ThisWorkbook.WorkSheets
    For Each Pivot in Sheet.PivotTables
        Pivot.RefreshTable
        Pivot.Update
    Next
Next
Commentaires (7)

Ce code VBA rafraîchira tous les tableaux/graphiques croisés dynamiques du classeur.

Sub RefreshAllPivotTables()

Dim PT As PivotTable
Dim WS As Worksheet

    For Each WS In ThisWorkbook.Worksheets

        For Each PT In WS.PivotTables
          PT.RefreshTable
        Next PT

    Next WS

End Sub

Une autre option non programmatique est :

  • Faire un clic droit sur chaque tableau croisé dynamique
  • Sélectionnez Options du tableau
  • Cochez l'option 'Rafraîchir à l'ouverture'.
  • Cliquez sur le bouton OK

Cela rafraîchira le tableau croisé dynamique chaque fois que le classeur sera ouvert.

Commentaires (0)

Vous avez une collection PivotTables sur un objet VB Worksheet. Ainsi, une boucle rapide comme celle-ci fonctionnera :

Sub RefreshPivotTables()
    Dim pivotTable As PivotTable
    For Each pivotTable In ActiveSheet.PivotTables
        pivotTable.RefreshTable
    Next
End Sub

Notes des tranchées :

  1. N'oubliez pas de déprotéger toute feuille protégée avant de mettre à jour le tableau croisé dynamique.
  2. Sauvegarder souvent.
  3. Je pense à d&#8217autres choses et je les mettrai à jour en temps voulu... :)

Bonne chance !

Commentaires (0)