Impossible de n’actualiser qu’un tcd sur deux dans un fichier (tous s’actualisent !)

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,

dans un fichier contenant des tableaux croisés dynamiques, je cherche à verrouiller l’actualisation d’une feuille sur deux.
Or, quand je lance la routine suivante, je me rends compte que ça applique l’instruction à toutes les feuilles.
Pourtant, je m’assure bien que ma boucle balaie une feuille sur deux et que .PivotCache.EnableRefresh = false ne s’applique donc que pour une feuille sur deux, mais au final, tout le fichier voit l’actualisation verrouillée.
Même phénomène quand je passe de false à true : ce n’est pas une sur deux mais toutes les feuilles qui se trouvent déverrouillées et autorisent l’actualisation.
Je précise que quand je démarre, toutes les feuilles peuvent être actualisées (i.e. PivotCache.EnableRefresh est sur true)

Qu’est-ce qui déraille dans mon code ?
Merci d’avance pour votre perspicacité
__________________________________________________________________________________________

Sub z_Autoriser_actualisation_une_feuille_sur_deux()
Dim sh As Long
Dim PT As PivotTable
'Application.ScreenUpdating = False ' suspendu pour voir si ça marche
For sh = 1 To Sheets.Count Step 2 ' step 2 pour traiter une feuille sur deux
Sheets(sh).Activate ' on se positionne sur la feuille

If ActiveSheet.PivotTables.Count > 0 Then ' pour éviter le plantage si pas de tcd
MsgBox "Je traîte la feuille n° " & sh ' pour s'assurer qu'on balaie bien seulement 1 feuille sur 2

With ActiveSheet.PivotTables(1)
.PivotCache.EnableRefresh = False ' on interdit la mise à jour pour la feuille en cours
End With
End If ' fin du test si on a tcd
Next ' on saute à la feuille suivante
'Application.ScreenUpdating = True ' suspendu
End Sub
 

Dugenou

XLDnaute Barbatruc
Re : Impossible de n’actualiser qu’un tcd sur deux dans un fichier (tous s’actualisen

Bonjour,
Je suis bien incapable de t'aider sur le VBA, mais ce que tu explique sur les tcd me fait dire que tous ont la même zone de données (Chris a un mot pour ça qui m'échappe pour l'instant) il faudrait que tu entres dans chaque tcd pour modifier la zone de données (même en la laissant identique) car alors Excel va considérer des TCD avec des sources différentes.
J'espère avoir été compréhensible.
 

Sebast

XLDnaute Impliqué
Re : Impossible de n’actualiser qu’un tcd sur deux dans un fichier (tous s’actualisen

Bonjour Dugenou,

tu as raison, tous les tcd pointent sur une seule et unique base car c'est bien là l'intérêt (je mets à jour les données une fois par semaine et les tcd crées par copie présentent les informations attendues) ...
J'ai peur que ce soit compliqué de faire autrement car en faisant comme jusqu'à présent, je suis sûr d'être exhaustif.

Merci pour ton aide
 

Dugenou

XLDnaute Barbatruc
Re : Impossible de n’actualiser qu’un tcd sur deux dans un fichier (tous s’actualisen

Re,
Avec une fonction decaler que tu nommes, tu peux faire que la base de données du tcd soit dynamique.
Decaler(ligne des titres des données;;;nbval(une colonne du tableau);)
Si tu utilises la même fonction que tu nommes zone1 puis zone2 etc : chaque tcd aura une source différente et ne se mettra à jour qu'à la demande pour chaque tcd. Tu peux avoir une macro pour la maj hebdo qui fait tout d'un coup
 

chris

XLDnaute Barbatruc
Re : Impossible de n’actualiser qu’un tcd sur deux dans un fichier (tous s’actualisen

Bonjour
Bise à Dugenou

Il s'agit du cache (cube de données).

Si tu veux des caches différents : déplace le TCD sur un nouveau classeur puis recopies-le depuis ce nouveau classeur sur le classeur actuel : il dupliquera le cube qui sera donc indépendant.

Cependant le cache partagé peut avoir des avantages justement pour synchroniser avec des segments : donc on peut choisir l'un ou l'autre selon ses besoins.
 

Sebast

XLDnaute Impliqué
Re : Impossible de n’actualiser qu’un tcd sur deux dans un fichier (tous s’actualisen

Bonjour Chris,

ce qui m'intéresse, c'est précisément la synchronisation. Je créé régulièrement de nouveaux tcd en copier/collant les feuilles au sein du fichier donc je veux être certain que le reste suive sans trop avoir à se soucier de l'intendance.

Merci pour ton avis
 

chris

XLDnaute Barbatruc
Re : Impossible de n’actualiser qu’un tcd sur deux dans un fichier (tous s’actualisen

Bonjour

Pas sûr qu'on de comprenne bien : synchroniser par segment ne parche que sur une même source pas sur des sources différentes.

Lorsque tu actualise un TCD c'est le cube source qui l'est et donc tous les TCD dépendants. Donc soit tu gardes le cube commun et tu ne peux en actualiser seulement certains, soit tu maintiens ton besoin d'actualisation séparée et donc tu n'as par d'autre choix que des cubes séparés.

Le lien de JAM, sauf erreur de ma part, sert justement à remplacer la synchronisation par segments dans les versions antérieures qui n'ont pas cette fonctionnalité. Je vais regarder le code plus en détail mais l'exclusion de TCD concerne la synchro pas l'actualisation.
 

Discussions similaires

Statistiques des forums

Discussions
311 740
Messages
2 082 041
Membres
101 879
dernier inscrit
Arthur M