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 ?
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
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 :
Cela rafraîchira le tableau croisé dynamique chaque fois que le classeur sera ouvert.
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 :
Bonne chance !