Mise à jour & utilisation TCD fichier protégé par macro

El Tino

XLDnaute Nouveau
Bonjour,
J'ai un fichier avec plusieurs feuilles protégées via une macro automatique écrite dans ThisWorkbook.
Je souhaiterai donner la main à l'utilisateur pour qu'il puisse librement mettre à jour les TCD mais également jouer avec.
Je suis passé par diverses solutions telles que
- déverrouiller les cellules
- Cocher utiliser les TCD lors du paramétrage de la protection
- Écriture du code VBA dans chaque Worksheet

Private Sub Worksheet_activate()
ActiveSheet.Unprotect ("reportingcg")ActiveSheet.PivotTables("Tableau croisé dynamique1").RefreshTable
ActiveSheet.Protect ("reportingcg")
End Sub

En conclusion quelqu’un pourrait il m'aider pour faire en sorte que l’utilisateur garde la main sur les feuilles contenant les TCD ?

mot de passe = reportingcg
Fichier en pièce jointe

Merci
 

Pièces jointes

  • Budget Export vdef.xlsm
    440.3 KB · Affichages: 24

Nairolf

XLDnaute Accro
Salut,

Essaye avec ton code mis à jour comme suit :
VB:
Private Sub Workbook_Open()
Dim WS_Count As Integer
Dim I As Integer

WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
With ActiveWorkbook.Worksheets(I)

If .PivotTables.Count > 0 Then
 
    .Unprotect ("reportingcg")
 
Else
 
    .EnableAutoFilter = True
    .EnableOutlining = True
    .Protect contents:=True, Password:="reportingcg", userInterfaceOnly:=True
 
End If

End With
Next I

End Sub
 

El Tino

XLDnaute Nouveau
Bonjour Nairolf
Merci pour ta réponse très claire et efficace.
En effet en modifiant le code dans ThisWorkBook cela libère toutes les fonctions pour les TCD (mise à jour y compris).


Suite à mon poste j'avais bien essayé de changer mon code comme ci dessous.
Cela me donnait bien la main pour jouer avec le TCD mais pas de mettre à jour le TCD.

Private Sub Workbook_Open()
Dim WS_Count As Integer
Dim I As Integer

WS_Count = ActiveWorkbook.Worksheets.Count
For I = 1 To WS_Count
With ActiveWorkbook.Worksheets(I)
.EnableAutoFilter = True
.EnableOutlining = True
.EnablePivotTable = True
.Protect Contents:=True, Password:="reportingcg", UserInterfaceOnly:=True
End With
Next I

End Sub
 

Statistiques des forums

Discussions
312 196
Messages
2 086 098
Membres
103 116
dernier inscrit
kutobi87