Actualiser un TCD par VBA

Bonjour,

Je cherche à faire en sorte que mon TCD, créé via Power Pivot, s'actualise automatiquement à chaque fois que je me rends sur la feuille qui le contient.

Pour ce faire j'ai utilisé la formule ci-dessous, que j'ai trouvée sur ce sujet : Automatiser "actualiser" un TCD ?

Private Sub Worksheet_Activate()
    ActiveSheet.PivotTables(1).PivotCache.Refresh
End Sub

Malheureusement, mon TCD ne semble pas se mettre à jour. Pourtant, je constate que le curseur de ma souris indique un léger temps de chargement quand je me rends sur la feuille.

Si possible, dans un souci d'optimisation, j'aimerais éviter de passer par un "RefreshAll"

Pourriez-vous m'indiquer ce qui ne fonctionne pas svp ?

Je vous remercie par avance.

Bonjour,

êtes-vous persuadé d'une latence avec

ActiveWorkbook.RefreshAll

Avez-vous déjà testé ?

Je n'en suis pas persuadé, mais j'ai sincèrement de forts doutes au vu du classeur final dans lequel sera intégrée cette fonctionnalité.

La fonction que j'ai postée n'est-elle pas censée fonctionner ?

J'ai toujours utilisé

ActiveWorkbook.RefreshAll

même dans de gros fichiers et je n'ai jamais eu de pb.

Je vous conseille de tester sur le votre et vous verrez ce qu'il en est vraiment !

Je vous remercie encore pour la suggestion et je suis rassuré de savoir qu'il existe une alternative à ma problématique.

Bien que votre proposition solutionne apparemment mon problème, j'aimerais vraiment comprendre pourquoi la fonction que j'utilise ne fonctionne pas.

Au-delà du fait de répondre à un besoin technique, je poste aussi sur le forum pour développer mes connaissances sur Excel.

Mais je vous renouvelle encore mes remerciements.

Je me permets un double post pour partager la solution que j'ai trouvée et qui semble fonctionner comme je le souhaitais :

Private Sub Worksheet_Activate()
  Set pvtTable = Worksheets("TCD").Range("B8").PivotTable
pvtTable.RefreshTable
End Sub

Ce code me permet d'actualiser automatiquement le TCD de mon choix au moment où je me rends (j'active) la feuille sur laquelle il se trouve.

Bonjour

Vous pouviez aussi faire ceci

Private Sub Worksheet_Activate()
Thisworkbook.RefreshAll
End Sub

Crdlt

Bonjour Dan et merci pour votre contribution, mais je n'ai pas bien compris la différence entre la solution que vous proposez et celle de Yoyo.

Également, je constate que je ne peux pas désigner l'un de mes posts comme étant la solution à mon problème, comment faire pour passer le sujet en résolu du coup ?

Bonjour

mais je n'ai pas bien compris la différence entre la solution que vous proposez et celle de Yoyo.

Yoyo propose d'utiliser Activeworkbook ce qui correspond au classeur actif. Si vous avez plusieurs classeurs, cela implique que le code doit être exécuté lorsque le TCD à actualiser est dans le classeur actif

En utilisant Thisworkbook la mise à jour sera effectuée dans le classeur contenant le code que je vous ai donné et ce, que le classeur soit actif ou non. Vous comprenez ?

Vous ne pouvez pas faire passer un sujet en résolu sur un de vos posts mais uniquement sur celui qui vous a proposé la meilleur solution.

Cordialement

Très bien, je vous remercie de vos éclaircissements ainsi que de vos précisions.

Je vais donc passer le sujet en résolu !

Rechercher des sujets similaires à "actualiser tcd vba"