Bonjour à tous
Je dois améliorer un code VBA dont le but est d'actualiser les données d'un onglet alimentant des TCD et des graphiques liés aux TCD.
Il y a beaucoup de données et de TCD/Graphiques de TCD, ce qui fait que le code peut mettre 20-30mn à tourner.
Nous avons remarqué que ce qui prend du temps dans le code VBA est le "rafraîchissement" des TCD et graphiques de TCD.
Le simple fait de remplacer :
par
Code : Sélectionner tout - Visualiser dans une fenêtre à part ActiveWorkbook.RefreshAll
(Donc traiter en amont l'actualisation des TCD avant de tout rafraîchir) avait divisé le temps de traitement par deux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Windows("box reporting TEST.xlsx").Activate Dim tblPivot As PivotTable For Each tblPivot In ActiveWorkbook.PivotTables tblPivot.RefreshTable tblPivot.Update Next tblPivot ActiveWorkbook.RefreshAll
On essaie -en vain pour l'instant- de trouver l'équivalent de la formule ci-dessus pour mettre à jour tous les graphiques et ne plus utiliser le
On a tenté cela :
Code : Sélectionner tout - Visualiser dans une fenêtre à part ActiveWorkbook.RefreshAll
Mais on se retrouve avec une erreur 438 sur la ligne " For Each chr In ActiveWorkbook.ChartObjects"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Dim chr As ChartObject For Each chr In ActiveWorkbook.ChartObjects chr.PivotLayout.PivotTable.PivotCache.Refresh Next chr
Si vous avez une solution, nous serions preneurs
Merci à vous pour votre aide,
Thomas
Partager