VBA Protection feuilles

Bonjour à tous,

un code de galopin que je n'arrive pas à faire fonctionner:

Private Sub Workbook_Open()
    Application.ScreenUpdating = False
        For i = 1 To Worksheets.Count
            Worksheets(i).Protect Password:="dudu", UserInterfaceOnly:=True
        Next
End Sub

et pourtant sur un autre projet çà marche !

Peut-on envisager de faire deux macros du genre :

Sub Déprot()
        For i = 1 To Worksheets.Count
            Worksheets(i).Unprotect Password:="dudu", UserInterfaceOnly:=True
        Next
End sub

et une autre :

Sub Prot()
        For i = 1 To Worksheets.Count
            Worksheets(i).Protect Password:="dudu", UserInterfaceOnly:=True
        Next
End sub

et ensuite dans les macros programme,

Sub macro1()
Call Déprot
*** traitement
Call Prot
End sub

Ou existe-t-il un autre moyen ?

à noter que certaines macros nécessitent de déprotéger 2 feuilles.

Le fichier comporte 4 feuilles

pour le moment, je ne m'en sort pas avec tous les : ActiveSheet.Unprotect Password:="dudu"

Bonne journée

Amicalement

Claude.

édit: n'y a t-il pas une case à cocher dans VBE Outils/Références ?

Bonjour Claude,

Je ne saisis pas ton pb. Le code de Galopin fonctionne à l'ouverture du fichier.

Ce que je ferais :

Dans THISWORKBOOK :

Private Sub Workbook_Open() 
Call Déprot()
End Sub

Dans un Module :

Sub Déprot()
Dim i as byte
For i = 1 To Worksheets.Count 
Worksheets(i).UnProtect Password:="dudu", UserInterfaceOnly:=True 
Next
End Sub

Sub Prot()
Dim i as byte
For i = 1 To Worksheets.Count 
Worksheets(i).Protect Password:="dudu", UserInterfaceOnly:=True 
Next
End Sub

Sub Macro1
Call Déprot
...Code..
Call Prot
End sub

Amicalement

Dan

Bonjour Dan,

Donc mon idée n'était pas si saugrenue,

Certaines macros se ballade d'une feuille à l'autre.

J'aurai plutôt vu Call Prot dans le Open !

Confirme s'il te plait

en tout cas merci

Claude.

3tableau-1.xlsm (209.79 Ko)

Re,

Oups, exact Claude...

Certaines macros se ballade d'une feuille à l'autre.

Que veux tu dire ?

Bon ap.

Dan

re,

Ok, je teste et te dis

Je veux dire que certaines macros activent une feuille, puis reviennent.

Claude.

re,

Comprends pas !

la macro Sub Prot() fonctionne sans problème

mais,

Sub Déprot()
Dim i As Byte
   Application.ScreenUpdating = False
    For i = 1 To Worksheets.Count
        Worksheets(i).Unprotect Password:="dudu", UserInterfaceOnly:=True
    Next
End Sub

plante au Worksheets(i) (erreur 1004 - erreur définie par l'application ou par l'objet)

Pour tester, je ne suis pas passé par le Open

Claude.

édit! fichier test

https://www.excel-pratique.com/~files/doc/essai_protection.xls

Re,

Enlève le --> UserInterfaceOnly:=True

Amicalement

Dan

re,

Comme çà, çà marche , sauf pour les macros liées aux listes déroulantes (formulaire)

J'ai essaye de les déverrouiller, pareil.

c'est incompréhensible cette histoire !

j'ai retrouvé la démo de Galopin :

à voir

Claude.

édit: même remarque pour les cases à cocher

re,

Sans ton fichier ce n'est pas facile de comprendre.

A te relire

Dan

re,

fichier tesst2 :

https://www.excel-pratique.com/~files/doc/essai_protection2.xls

avec macro simple et macro liée à liste déroulante

Claude.

re,

Je crois avoir trouvé !

il faut déverrouiller les cellules liées dans les listes et cases à cocher.

Ouf ! !

Claude.

salut le forum

Claude, tu essayes de faire une mise à jour sur des cellules qui sont vérouillées.

UserInterfaceOnly c'est pour permettre à VBA d'écrire.

Toi ce sont des contrôle qui sont liées, et qui essayent d'écrire.

Déverouiller les cellules devrait solutionner ton problème.

Mytå

Bonjour à tous,

Bon, la méthode a l'air de fonctionner,

La lecture du programme est beaucoup + claire.

merci à tous,

Claude.

Rechercher des sujets similaires à "vba protection feuilles"