Vba excel actualiser TCD [Résolu/Fermé]

- - Dernière réponse :  Twiggy - 20 févr. 2015 à 17:05
Bonjour,


Voila j'ai un fichier excel qui conteient une feuille de données et d'autres feuilles avec des TCD qui proviennent de ces données....
Je voudrais créer un bouton qui permettent d'actualiser tous les TCD en meme temps..

Je n'arrive pas à créer cette macro...
Si vous pouviez m'aider

Voila j'avais pensé a un truc comme ca mais les données dans les TCD ne sont pas mises a jour

Sub Tcd()

Dim Tcd As PivotTable
Dim sht As Worksheet

For Each sht In ActiveWorkbook.Worksheets
Next

For Each Tcd In PivotTables
Tcd.RefreshTable
Next

End Sub


Merci
Afficher la suite 

4 réponses

Meilleure réponse
13
Merci
voici l'instruction pour un TCD

ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotCache.Refresh

Sinon tu peux essayer cela:

ActiveWorkbook.RefreshAll

Bon courage

Dire « Merci » 13

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 69501 internautes nous ont dit merci ce mois-ci

3
Merci
en fait ca marche jusqu'a ce que je mette le fichier en partage...
Et la ca ne marche plus j'ai un message d'erreur qui apparait:

C'et une fenetre contenant la croix d'arret avec comme explication '400'
Comment puis je modifier le partage ou la macro pour que ce message d'erreur n'apparaisse plus?

Merci d'avance...
groussel
Messages postés
1
Date d'inscription
mercredi 29 février 2012
Statut
Membre
Dernière intervention
29 février 2012
-
Bonjour,
La mise à jour d'un tableau croisé dynamique (TCD) n'est pas possible lorsque le "Partage" a été activé. D'ailleurs, vous vous en rendrez compte en tentant de le faire manuellement et non par code VBA. la ligne "Actualiser" est désactivée dans le menu contextuel.
Il est vrai que le message d'erreur n'est pas des plus clairs...

La solution que j'envisagerais est la suivante :
Avoir un autre fichier qui ne serait pas partagé contenant le TCD dont la mise à jour serait assurée par une macro exécutée depuis le fichier partagé.
Pour récupérer le résultat du TCD, il suffit ensuite d'utiliser des formules de liaison.

En espérant ne pas arriver trop tard... mais ça sert toujours :)

Excellement,

Gérald ROUSSEL.
0
Merci
ok ca marche nickel merci...
0
Merci
Bonjour,

j'ai à peu près le même problème mais les solutions rpécédentes ne marchent pas.
En fait je cherche à faire une macro dans laquelle j'ai besoin d'actualiser à chaque tour de boucle (je change la valeur d'un menu déroulant et je veux actualiser les données correspondantes à cette nouvelle valeur choisie).

Voici mon code :

Dim i As Integer
For i = 3 To 200
Sheets("centre").Select
Cells(i, 1).Select
Selection.Copy
Sheets("vérif nature").Select
Cells(1, 10).Select
ActiveSheet.Paste
ActiveSheet.Paste
Application.CutCopyMode = False

ActiveWorkbook.RefreshAll
Cells(67, 4).Select
Selection.Copy
Sheets("centre").Select
Cells(i, 2).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("vérif nature").Select
Cells(68, 4).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("centre").Select
Cells(i, 3).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("vérif nature").Select
Cells(69, 3).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("centre").Select
Cells(i, 4).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next i
End Sub

Mais le refreshall ne marche pas, ça me copie la première valeur partout...

merci de votre aide si qn a une idée! :)
Léa