XL 2016 macro pour enlever/remettre la protection de toute les feuilles d'un fichier

berru76

XLDnaute Occasionnel
Bonjour j'ai un fichier avec le même code de protection pour toute les feuilles (environ 150)
je cherche une macro pour enlever la protection de toutes les feuilles et une pour la remettre
afin de pour pouvoir faire selon mes besoins des modifications sur plusieurs feuilles en même temps
Je les laisserai dans le VB qui est protégé en private
Merci
 
Solution
Bonjour à tous, le moyen le plus simple :


VB:
Public Sub AvecProtection()

Dim wsh As Worksheet
Dim myPassword As String

myPassword = "1234"

For Each wsh In Application.ThisWorkbook.Worksheets
    wsh.Protect myPassword, UserInterfaceOnly:=True
Next wsh

MsgBox "Protection activée", vbInformation

End Sub


Public Sub SansProtection()

Dim wsh As Worksheet
Dim myPassword As String

myPassword = "1234"

For Each wsh In Application.ThisWorkbook.Worksheets
    wsh.Unprotect myPassword
Next wsh

MsgBox "Protection désactivée", vbInformation

End Sub

J'espère que je peux aider

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Berru,
Un exemple parmi d'autres :
VB:
Sub PWD_ON()
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
    Sheets(Sh.Name).Protect "toto", UserInterfaceOnly:=True
Next Sh
End Sub

Sub PWD_OFF()
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
    Sheets(Sh.Name).Unprotect "toto"
Next Sh
End Sub

"toto" est le mot de passe utilisé. A changer.:)
 

Rhysand

XLDnaute Junior
Bonjour à tous, le moyen le plus simple :


VB:
Public Sub AvecProtection()

Dim wsh As Worksheet
Dim myPassword As String

myPassword = "1234"

For Each wsh In Application.ThisWorkbook.Worksheets
    wsh.Protect myPassword, UserInterfaceOnly:=True
Next wsh

MsgBox "Protection activée", vbInformation

End Sub


Public Sub SansProtection()

Dim wsh As Worksheet
Dim myPassword As String

myPassword = "1234"

For Each wsh In Application.ThisWorkbook.Worksheets
    wsh.Unprotect myPassword
Next wsh

MsgBox "Protection désactivée", vbInformation

End Sub

J'espère que je peux aider
 

berru76

XLDnaute Occasionnel
Bonjour
Au club pas toujours les mêmes personnes qui lancent les concours
Pour qu'il ne puissent pas commettre d'erreur accidentellement l'ai protégé le ficher pour éviter cela

Je m'explique certainement pas bien car pas trop habituer au langage VBA
J'ai une protection accès VBA ex " 2021"
J'ai une protection accès toutes les feuilles ex "2020"
les macros des feuilles pour pouvoir s ' exécuter en mode protéger sont du style

Private Sub Ouvrirservice()
'
' Ouvrirservice Macro
'
ActiveSheet.Unprotect Password:="2020"
Columns("F:H").Select
Selection.EntireColumn.Hidden = False
Range("A3").Select
ActiveSheet.Protect Password:="2020"
End Sub

avec les formules
Sub PWD_ON()
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
Sheets(Sh.Name).Protect "toto", UserInterfaceOnly:=True
Next Sh
End Sub

Sub PWD_OFF()
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
Sheets(Sh.Name).Unprotect "toto"
Next Sh
End Sub

je peut modifier les codes de protection (pratique selon l’évolution des versions
mais du coup si je change le code mes macros ne fonctionnent plus
je cherche solution pour allier les deux sinon il faut que je change le code manuellement dans toutes les macros
il y a t'il une solution ?
merci
 

Pièces jointes

  • Feuille visible.PNG
    Feuille visible.PNG
    63.7 KB · Affichages: 22
  • feuille réelle.PNG
    feuille réelle.PNG
    71.5 KB · Affichages: 11
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Berru,
Une solution en deux phases :
Code:
Public MotDePasse As String
Sub ChangerMotDePasse()
    Dim Sh As Worksheet
'-------------------------------
' METTRE ICI MOT DE PASSE ACTUEL
    MotDePasse = "toto"
'-------------------------------
    For Each Sh In ActiveWorkbook.Sheets
        Sheets(Sh.Name).Unprotect MotDePasse
    Next Sh
'-------------------------------
    ' METTRE ICI NOUVEAU MOT DE PASSE
    MotDePasse = "titi"
'-------------------------------
    PWD_ON
    MsgBox "Toutes les feuilles ont changées de mot de passe."
End Sub
Sub MDP()
'-------------------------------
    ' METTRE ICI LE MOT DE PASSE
    MotDePasse = "titi"
'-------------------------------
End Sub
Sub PWD_ON()
Dim Sh As Worksheet
MDP
For Each Sh In ActiveWorkbook.Sheets
    Sheets(Sh.Name).Protect MotDePasse, UserInterfaceOnly:=True
Next Sh
End Sub
Sub PWD_OFF()
Dim Sh As Worksheet
MDP
For Each Sh In ActiveWorkbook.Sheets
    Sheets(Sh.Name).Unprotect MotDePasse
Next Sh
End Sub
Dans le module ChangerMotDePasse mettre le mot de passe actuel et le nouveau.
Dans le module MDP mettre le nouveau mot de passe qui sera utilisé.
Lancer ChangerMotDePasse qui va changer tous les mots de passe avec le nouveau.
Ensuite ce sera celui déclaré dans MDP qui sera utilisé.
 

berru76

XLDnaute Occasionnel
Merci
ok fonctionne pour le changement de code feuille
mais du coup si je change le code mes macros ne fonctionnent plus
je cherche solution pour allier les deux code feuille et macro
sinon faut il que je change le code manuellement dans toutes les macros
il y a t'il une solution ?
merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Il y a une variable public :
VB:
Public MotDePasse As String
C'est à dire que si on execute MDP alors cette variable est initialisée avec le bon mot de passe :
Code:
Sub MDP()
'-------------------------------
    ' METTRE ICI LE MOT DE PASSE
    MotDePasse = "titi"
'-------------------------------
End Sub
Donc dans vos macro qui utilisent un mot de passe, remplacez ce mot de passe par MotDePasse, et avant cette ligne insérer une ligne avec MDP.
Par exemple avant j'avais :
Code:
Sheets(Sh.Name).Unprotect "toto"
Cela devient :
Code:
MDP
Sheets(Sh.Name).Unprotect MotDePasse

A noter que cette variable public conserve sa valeur tant que le fichier est ouvert. Donc MDP peut être executé qu'une seule fois, ou encore l'appeler dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
     MDP
End Sub
ainsi à l'ouverture du fichier le mot de passe sera initialisé donc l'appel à MDP après n'est plus utile.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 588
Messages
2 110 988
Membres
111 002
dernier inscrit
Lolo73i