Protection de feuille et actualisation automatique de tcd

Bonour à toutes et tous,

Sur un classeur ci-joint je souhaite pouvoir copier une intégration dans la feuille listing qui mets directement à jours les TCB des différents onglets protégés par un mot de passe ("mdp").

j'ai intégré à chaque feuille le code suivant :

Private Sub Worksheet_Activate()
    With Me
        .Unprotect "mdp"
        .PivotTables("Tableau croisé dynamique1").RefreshTable
        .Protect Password:="mdp"
    End With
End Sub

mais qd je navigue sur mes l'onglets l'erreur suivante apparait :

"erreur d'éxécution '1004' :

impossible d'éxécuter cette commande dans une feuille protégée contenant un autre rapport de tableau croisée dnamique basé sur les mêmes données sources.

Pour ôter la protection de la feuille contenant l'autre rapport, cliquez sur l'onglet de la feuille, puis oter la protection de la feuille ........ "

pouvez vous m'aider à solutionner cette problématique ?

d'avance merci

xavier

Bonjour

Des TCD basés sur la même source partagent le même cache (ou cube de données) l'actualisation de l'un des TCD actualise tous les TCD basés sur cette source : il faut donc déprotéger tous les onglets contenant des TCD liés à cette source...

Bonsoir et merci pour ta réponse,

en gros dans chaque feuille j'intègre un code du genre :

Private Sub Worksheet_Activate()
Dim MaFeuille As Worksheet
For Each MaFeuille In Worksheets
MaFeuille.Unprotect Password:="1234"
Next

ThisWorksheet.RefreshAll

For Each MaFeuille In Worksheets
MaFeuille.Protect Password:="1234"
Next
End Sub

RE

Met le plutôt au niveau du Workbook_SheetActivate pour éviter 36 codes...

Mais je conseillerais de voir si tu ne peux utiliser des variables statiques pour éviter d'enchainer n actualisation à la suite.

Pourquoi RefreshAll ? Source liée ou bien onglet avec des TCD de sources différentes ?

re,

c'est une source lié pour tous les TCD. Toutes les feuilles n'en ont pas de TCD.

et Pourquoi RefreshAll ? et bien 'ai lu ça sur différent tuto donc j'ai teté ))

Bonjour

C'était bien l'objet de ma question : utile seulement dans 2 cas et tu es dans un de ces cas.

Reste qu'il est possible de tester si une feuille contient un TCD et donc plus intéressant de n'avoir qu'un code au niveau Workbook...

J'ai revérifié le référentiel : sauf erreur de ma part part RefreshAll s'applique au classeur et non à une feuille d'où ma remarque pour éviter de le refaire à chaque changement d'onglet si on peut l'éviter.

Tout dépend du contexte et de la probabilité que les sources se modifient en permanence en temps réel...

bonjour

merci pour tes retours.

peux tu éventuellement me détailler et /ou me conseiller sur quoi mettre en place alors ?

Bonjour

Comme je le disais cela dépend de ton contexte que tu ne donnes pas : le refreshall à chaque changement d'onglet n'est utile si la source se met à jour en permanence sinon le limiter car cela ralentit inutilement...

Rechercher des sujets similaires à "protection feuille actualisation automatique tcd"