tableau croisé protégé - mise à jour

gimaro

XLDnaute Nouveau
Bonjour le Forum et merci d'avance à ceux qui voudront bien se "pencher" sur ma question.
Dans un classeur j'ai : une feuille 1 de résultats complétée ligne par ligne par plusieurs utilisateurs, une feuille 2 qui contient deux TCD qui récapitulent certaines infos de la feuille 1 et une feuille 3 qui est un tableau de résultat alimenté avec liaisons à partir des TCD (pour avoir une mise en forme fixe).
Je souhaiterai d'une part protéger et masquer la feuille 2 (TCD) et d'autre part qu'une mise à jour se fassent qu'en on ouvre la feuille 3.
Je ne suis pas un spécialiste des macros et je "rame" depuis un deux jours pour essayer de trouver une solution. Tout va bien jusqu'au moment ou je protège la feuille TCD par un mot de passe...
Merci
 

Pierrot93

XLDnaute Barbatruc
Re : tableau croisé protégé - mise à jour

Bonjour,

pas sûr d'avoir bien cerné ton problème.... peut être en protégeant la feuille par le code en utilisant l'argument "userInterfaceOnly", procédure ci-dessous à placer dans le module "thisworkbook", se déclenche à l'ouverture du classeur :

Code:
Option Explicit
Private Sub Workbook_Open()
With Sheets("NomFeuille")
    .EnablePivotTable = True
    .Protect "toto", userInterfaceOnly:=True
End With
End Sub

pour actualiser les TCD lors de l'activation d'une feuille, code ci-dessous à placer dans le module de la feuille concernée :

Code:
Option Explicit
Private Sub Worksheet_Activate()
ThisWorkbook.RefreshAll
End Sub

bonne journée
@+
 

gimaro

XLDnaute Nouveau
Re : tableau croisé protégé - mise à jour

Bonjour,
Merci pour ta réponse.
Ci-joint un classeur illustrant ma demande. a chaque fois que l'on ajoute une ligne au tableau de la feuille "Liste" on devrait retrouver l'information dans la feuille "résultat". Cela fonctionne tant qu el'on ne protège pas la feuille TCD.
 

Pièces jointes

  • macroTCD.xlsm
    27.1 KB · Affichages: 33

Pierrot93

XLDnaute Barbatruc
Re : tableau croisé protégé - mise à jour

Bonjour,

dans le module de la feuille, en lieu et place du code donné hier, par conte celui dans le module "thisworkbook" est à conserver :
Code:
Option Explicit
Private Sub Worksheet_Activate()
Dim p As PivotTable
For Each p In Sheets("TCD").PivotTables
    p.RefreshTable
Next p
End Sub
bonne journée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 885
Messages
2 093 255
Membres
105 658
dernier inscrit
Mario Richard