Toutes feuilles d’un classeur sont protégées avec la première macro en leur affectant un mot de passe donné.
La seconde macro déprotège toutes les feuilles d’un classeur précédemment protégées par un mot de passe donné.
Les mots de passe peuvent être modifiés.
Macro de protection des feuilles d'un classeur
Sub ProtegeFeuilles()
'------------------------------------------------------------------------------------------------
'Procédure de protection des feuilles d'un classeur avec le mot de passe générique cPWD
'-l'utilisateur doit choisir le classeur à protéger
'-Le classeur est fermé a l'issue du traitement
'Auteur : Excellons.org
'Date : juin 2019
'------------------------------------------------------------------------------------------------
Const cPWD = "0987654" 'Password à adapter
Const cFilter = "Classeur EXCEL(*.xls*), *.xls*"
Dim oWB As Workbook
Dim oSheet As Worksheet
Dim sWBName As Variant
Dim sExtension As String
Dim sDecoupe() As String
'On demande à l'utilisateur d'indiquer le nom du classeur à protéger
sWBName = Application.GetOpenFilename(cFilter, 1, "Choisissez le classeur à protéger", , False)
'On s'assure que l'utilisateur n'a pas quitté la boite de dialogue sans indiquer de fichier. Sinon on met fin à l'opération.
If sWBName = False Then
MsgBox "Aucun classeur indiqué !" & vbCrLf & vbCrLf & "Opération sans objet.", vbCritical, "FIN D'OPERATION"
Exit Sub
End If
'On s'assure que l'utilisateur a indiqué un classeur EXCEL
sDecoupe() = Split(sWBName, ".") 'On découpe le nom en 2 pour récupérer son extension
'On s'assure que le fichier choisi possède une extension de classeur EXCEL. Sinon on met fin à l'opération.
If Left(sDecoupe(1), 3) <> "xls" Then
MsgBox "Le fichier indiqué ne semble pas être un classeur EXCEL !" & vbCrLf & vbCrLf & "Opération impossible.", vbCritical, "FIN D'OPERATION"
Exit Sub
End If
'On active la séquence de gestion d'erreurs
On Error GoTo Gestion_Err
'On affecte l'objet local classeur
Set oWB = Application.Workbooks.Open(sWBName)
'On boucle sur toutes les feuilles du classeur
For Each oSheet In oWB.Worksheets
'On protège la feuille avec le mot de passe
oSheet.Protect cPWD
Next
'Séquence de fin de traitement
oWB.Close True 'On ferme le classeur protégé
MsgBox "Les feuilles du classeur '" & sWBName & "' sont protégées avec le mot de passe générique.", vbExclamation, "FIN D'OPERATION"
On Error GoTo 0 'On annule le branchement vers de gestion d'erreur
'On fait le ménage
Set oSheet = Nothing
Set oWB = Nothing
Exit Sub
'Séquence de traitement des erreurs
Gestion_Err:
Select Case Err
Case Else
MsgBox "L'opération de protection du classeur '" & sWBName & "' a rencontré l'erreur suivante :" & vbCrLf _
& Err & "-" & Err.Description, vbCritical, "IMPOSSIBLE DE PROTEGER LE CLASSEUR"
End Select
oWB.Close False
'On fait le ménage
On Error GoTo 0 'On annule le branchement vers de gestion d'erreur
Set oSheet = Nothing
Set oWB = Nothing
End Sub
Macro de déprotection des feuilles d'un classeur
Sub DeprotegeFeuilles()
'------------------------------------------------------------------------------------------------
'Procédure de déprotection des feuilles d'un classeur protégé avec le mot de passe générique
'-l'utilisateur doit choisir le classeur à déprotéger
'-Le classeur est fermé a l'issue du traitement
'Auteur : Excellons.org
'Date : juin 2019
'------------------------------------------------------------------------------------------------
Const cPWD = "0987654" 'Password à adapter
Const cFilter = "Classeur EXCEL(*.xls*), *.xls*"
Dim oWB As Workbook
Dim oSheet As Worksheet
Dim sWBName As Variant
Dim sExtension As String
Dim sDecoupe() As String
'On demande à l'utilisateur d'indiquer le nom du classeur à déprotéger
sWBName = Application.GetOpenFilename(cFilter, 1, "Choisissez le classeur à déprotéger", , False)
'On s'assure que l'utilisateur n'a pas quitté la boite de dialogue sans indiquer de fichier. Sinon on met fin à l'opération.
If sWBName = False Then
MsgBox "Aucun classeur indiqué !" & vbCrLf & vbCrLf & "Opération sans objet.", vbCritical, "FIN D'OPERATION"
Exit Sub
End If
'On s'assure que l'utilisateur a indiqué un classeur EXCEL
sDecoupe() = Split(sWBName, ".") 'On découpe le nom en 2 pour récupérer son extension
'On s'assure que le fichier choisi possède une extension de classeur EXCEL. Sinon on met fin à l'opération.
If Left(sDecoupe(1), 3) <> "xls" Then
MsgBox "Le fichier indiqué ne semble pas être un classeur EXCEL !" & vbCrLf & vbCrLf & "Opération impossible.", vbCritical, "FIN D'OPERATION"
Exit Sub
End If
'On active la séquence de gestion d'erreurs
On Error GoTo Gestion_Err
'On affecte l'objet local classeur
Set oWB = Application.Workbooks.Open(sWBName)
'On boucle sur toutes les feuilles du classeur
For Each oSheet In oWB.Worksheets
'On déprotège la feuille
oSheet.Unprotect cPWD
Next
'Séquence de fin de traitement
oWB.Close True 'On ferme le classeur
MsgBox "Les feuilles du classeur '" & sWBName & "' sont déprotégées du mot de passe générique.", vbExclamation, "FIN D'OPERATION"
On Error GoTo 0 'On annule le branchement vers de gestion d'erreur
'On fait le ménage
Set oSheet = Nothing
Set oWB = Nothing
Exit Sub
'Séquence de traitement des erreurs
Gestion_Err:
Select Case Err
Case Else
MsgBox "L'opération de déprotection du classeur '" & sWBName & "' a rencontré l'erreur suivante :" & vbCrLf _
& Err & "-" & Err.Description, vbCritical, "IMPOSSIBLE DE DEPROTEGER LE CLASSEUR"
End Select
'On fait le ménage
On Error GoTo 0 'On annule le branchement vers de gestion d'erreur
Set oSheet = Nothing
Set oWB = Nothing
End Sub