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

  • Initiateur de la discussion Initiateur de la discussion El Tino
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
999
Retour