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

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

  • Excel version de midi.xlsm
    296.4 KB · Affichages: 14
Solution
Tout va bien de mon coté:
1604503598462.png



1604503583969.png

D.D.

XLDnaute Impliqué
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.
 

D.D.

XLDnaute Impliqué
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.
 

pierrelcq

XLDnaute Junior
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

  • Fichier test partage.xlsm
    397.5 KB · Affichages: 5

Discussions similaires

Statistiques des forums

Discussions
315 094
Messages
2 116 154
Membres
112 670
dernier inscrit
Flow87