XL 2019 Maj Auto plusieurs TCD et feuilles protégés

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 !

pierrelcq

XLDnaute Junior
Bonjour,

Je rencontre un problème concernant la sécurisation de mes TCDs.

J'utilisais jusqu'ici la macro suivante pour mettre à jour mes TCD (macro qui était placé sur la feuille qui récupère les données et non sur la feuille des TCD)

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Application.EnableEvents = False
Sheets("TDB S").PivotTables("TCD").RefreshTable
Sheets("TDB S").PivotTables("TCD1").RefreshTable
Sheets("TDB S").PivotTables("TCD2").RefreshTable
Application.EnableEvents = True
End Sub

Mais j'ai besoin de sécuriser ma feuille avec mes TCD, et forcément la protection entraîne un arrêt de la mise à jour automatique des TCD.

Alors j'ai essayé plusieurs solutions que j'ai trouvé sur internet

Solution 1/ (Code que j'ai placé directement sur la feuille des TCDs)

Option Explicit
Private Sub Worksheet_Activate()
Worksheets("TDB S+1").Unprotect Password:="condeordolog"
PivotTables(1).RefreshTable
With Sheets("TDB S+1")
.EnablePivotTable = True
.Protect "condeordolog", userinterfaceonly:=True
End With
End Sub

Solution 2/ (Code que j'ai placé directement sur la feuille des TCDs)

Private Sub Worksheet_Activate()
With Me
.Unprotect "mdp"
.PivotTables(1).RefreshTable
.Protect Password:="mdp"
End With
End Sub


Malheureusement aucune des deux macros ne marchent, j'ai l'impression que le fait que 3 TCD soient placés sur une même feuille pose problème ?

Peut-être que l'un de vous à la solution?

Bien cordialement

Pierre
 

Pièces jointes

Hello

Si je mets ce code
VB:
Private Sub Worksheet_Activate()
PivotTables(1).RefreshTable
With Sheets("TDB S")
    .Unprotect Password:="condeordolog"
    .EnablePivotTable = True
    .PivotTables("TCD").RefreshTable
    .PivotTables("TCD1").RefreshTable
    .PivotTables("TCD2").RefreshTable
    .Protect "condeordolog", userinterfaceonly:=True
End With
End Sub

dans la feuille TDB S, cela semble bien fonctionner.
 
Bonjour,
En effet, cela à fonctionné mais dès que l'on rouvre le fichier excel cela ne marche plus.
Peut-être avez vous une solution?

Merci
Je crois qu'il faut mettre
PivotTables(1).RefreshTable

entre le With et le End With
pour que le Unprotect Password:="condeordolog" soit pris en compte.



Par contre il y a ensuite
1604501058981.png

qui pose problème, mais cela n'est pas le VBA.
 
Bonjour D.D.,

Dis moi, nous avons un petit problème sur cette macro.

Tu as utilisé la fonction Private Sub Worksheet_Activate(), ce qui signifie que l'on doit cliquer sur la feuille pour activer la mise à jour des TCD.

C'est à dire que du lundi au mercredi inclus, il n'y aura pas de mise à jour puisque pas de rotations de feuilles automatiques donc pas d'activation de feuilles.

J'ai donc réutilisé la fonction Private Sub Worksheet_Change(ByVal Target As Range) pour uniquement la semaine S, pour que dès qu'il y ai un changement, il soit bien pris en compte sur mon TCD récapitulatif.

Mon problème est le suivant:

Dès que je fais une modification du coup sur ma feuille S(encours) cela fait "sauter l'écran" puisque cela déclenche les refreshtables, et le rendu est pas du tout propre.

Est-ce que tu vois une autre solution de ton côté ?

Merci beaucoup

Pierre
 

Pièces jointes

- 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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Réponses
1
Affichages
418
Retour