macro pour proteger les feuilles d'un classeur sauf une

vbamar

XLDnaute Nouveau
Bonjour le forum,
je cherche à appliquer la protection avec mot de passe sur toutes les feuilles de mon classeur sauf sur la feuille "libre".
voici ce que j'ai tenté mais ça ne marche pas
Code:
Sub mdp()
Dim ws As Worksheet
    For Each ws In Worksheets

        If ws.ProtectContents = True And ws.Name <> "libre" Then
         
          ws.Unprotect Password:="mdp"

       Else
           ws.Protect Password:="mdp"
       End If
   Next ws
End Sub
merci pour votre aide
 

DoubleZero

XLDnaute Barbatruc
Re : macro pour proteger les feuilles d'un classeur sauf une

Bonjour, vbamar, le Forum,

Peut-être ainsi :

Code:
Sub Onglets_protéger_sauf_un()
Dim F As Worksheet
For Each F In Sheets
If F.Name <> "libre" Then
    F.Protect "mdp"
    F.EnableSelection = xlUnlockedCells
End If
Next
End Sub

A bientôt :)
 

Papou-net

XLDnaute Barbatruc
Re : macro pour proteger les feuilles d'un classeur sauf une

Bonsoir vbamar,

Si j'ai bien compris, ceci devrait faire l'affaire :

Code:
Sub mdp()
Dim ws As Worksheet
    For Each ws In Worksheets
        If ws.Name = "libre" Then
          ws.Unprotect Password:="mdp"
          Else
          ws.Protect Password:="mdp"
       End If
   Next ws
End Sub
Cordialement.

Oups, content de te croiser chère Ânesse, un vrai plaisir de te voir revenue !
Bises à toi.
 
Dernière édition:

urbanito1

XLDnaute Occasionnel
Re : macro pour proteger les feuilles d'un classeur sauf une

bonsoir le forum
vbamar
Papou-net, Double zéro
je me joins à vous , ça m'intéresse même si pas expert vba
question : comment déprotéger?
j'ai essayé en retirant la macro mais ça ne marche pas...

merci
urbanito
 

Pièces jointes

  • feuille libre.xlsm
    13.6 KB · Affichages: 48

Staple1600

XLDnaute Barbatruc
Re : macro pour proteger les feuilles d'un classeur sauf une

Bonsoir

Avec UnProtect tout simplement (qui était déjà dans le code précédent
(ou avec la macro qui rend inutile la protection des feuilles sous Excel ...)
Sub dpws()
Dim ws As Worksheet
On Error Resume Next
For Each ws In Worksheets
ws.UnProtect Password:="mdp"
End If
Next ws
End Sub
 
Dernière édition:

vbamar

XLDnaute Nouveau
Re : macro pour proteger les feuilles d'un classeur sauf une

Bonsoir DoubleZero, Bonsoir Papou-net
merci pour vos réponses.
en fait j'ai été un peu trop succinct dans ma demande
je cherche à faire une macro qui protège et deprotege les feuilles du classeur d'ou le "if, then, else" pour la réciproque
mais cette macro doit aussi exclure la feuille "libre"
 

vbamar

XLDnaute Nouveau
Re : macro pour proteger les feuilles d'un classeur sauf une

bonsoir Staple1600
je ne voulais pas te vexer, je n'avais pas rafraichis la page et le temps de rédiger mon message ...
j'ai testé ta proposition et on est sur la bonne voie.
la feuille "libre" a aussi un code, mais au cas ou elle serait deproteger, il faudrait la protéger avec SON code pour qu'elle soit traité en erreur par le reste de la macro
merci
 

vbamar

XLDnaute Nouveau
Re : macro pour proteger les feuilles d'un classeur sauf une

re,
elle doit être bien celle là!
mais j'ai besoin de deproteger la feuille "libre" sans qu'on puisse toucher aux autres
c'est ça mon pb
j'ai fait comme ça et ça marche
On Error Resume Next
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name = "libre" Then
wSheet.Protect Password:="mdp_libre"
Else
If ws.ProtectContents = True Then
ws.Unprotect Password:="mdp"
Else
ws.Protect Password:="mdp"
End If
End If
Next ws
merci
 

Papou-net

XLDnaute Barbatruc
Re : macro pour proteger les feuilles d'un classeur sauf une

bonsoir le forum
vbamar
Papou-net, Double zéro
je me joins à vous , ça m'intéresse même si pas expert vba
question : comment déprotéger?
j'ai essayé en retirant la macro mais ça ne marche pas...

merci
urbanito

Bonsoir urbanito1,

Je ne suis pas certain d'avoir compris ton besoin, mais je te propose quand-même cette solution :

Code:
Sub mdp()
Dim ws As Worksheet
    For Each ws In Worksheets
        If Not ws.Name = "libre" Then
          If ws.ProtectContents = True Then
            ws.Unprotect Password:="mdp"
            Else
            ws.Protect Password:="mdp"
          End If
       End If
   Next ws
End Sub
A chaque exécution, cette macro fonctionne en bascule. Elle teste si les feuilles sont protégées : si oui, elle les déprotège, si non, elle les protège. Seule la feuille "libre" reste déprotégée en permanence car elle est ignorée par le premier test conditionnel.

Espérant avoir répondu.

Cordialement.
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 458
dernier inscrit
Vulgaris workshop