Comment protéger un classeur avec VBA ?

Pour protéger un classeur, vous devez utiliser la méthode PROTECT de VBA. En utilisant cette méthode, vous pouvez utiliser un mot de passe ou même activer la protection du classeur sans mot de passe. Mais il y a une chose que vous devez prendre en compte pour le mot de passe que vous utilisez, c’est SENSIBLE À LA CASSE.

Workbook.Protect "Password"
  1. Spécifiez le classeur que vous souhaitez protéger.
  2. Tapez et pointez et sélectionnez la méthode de protection dans la liste ou vous pouvez taper « Protéger ».
  3. Saisissez le mot de passe que vous souhaitez définir.
  4. Exécutez le code pour protéger le classeur.

Dans ce didacticiel, nous apprendrons cette méthode de différentes manières et nous apprendrons également à déprotéger un classeur.

Liens utiles : Exécuter une macroEnregistreur de macrosVisual Basic EditorManuel de macros personnelles

Protéger un classeur avec un mot de passe

Vous trouverez ci-dessous le code que vous devez utiliser pour protéger un classeur avec un mot de passe. Dans ce code, vous avez d’abord le nom du classeur et la méthode de protection avec le mot de passe.

Workbooks("Book1").Protect "test123"

Et quand j’exécute ce code, il verrouille le classeur « Book1 ».

il verrouille le classeur book1

Protéger un classeur sans mot de passe

Et si vous souhaitez protéger un classeur sans mot de passe, vous devez ignorer l’argument « Mot de passe », tout comme le code suivant.

Workbooks("Book1").Protect

Si vous essayez de protéger un classeur sans mot de passe qui est déjà protégé par un mot de passe, Excel affichera une boîte de dialogue pour entrer ce mot de passe.

Déprotéger un classeur avec un mot de passe

De la même manière, vous pouvez utiliser la méthode de déprotection pour déprotéger le classeur et le code correspondant ressemblerait à quelque chose ci-dessous.

Workbooks("Book1").Unprotect "test123"

Il y a une chose dont vous devez vous occuper si vous essayez de déprotéger un classeur qui est w

Déprotéger un classeur sans mot de passe

Et si un classeur est protégé sans mot de passe, vous pouvez utiliser la même méthode sans spécifier l’argument du mot de passe.

Protéger tous les classeurs ouverts

Dans le code ci-dessous, nous avons une boucle FOR EACH pour parcourir tous les classeurs ouverts et protéger chaque classeur un par un en utilisant la même méthode de protection.

'variable to use as a workbook
Dim wb As Workbook

'loop through all the open workbooks
For Each wb In Application.Workbooks

  'condition to check workbook name
  If wb.Name <> "PERSONAL.XLSB" Then

    'protect every workbook with a password
     wb.Protect "test123"

  End If

Next wb

End Sub

Comme j’utilise le classeur de macros personnelles, j’ai utilisé une instruction IF THEN ELSE pour ignorer si le nom du classeur est  » personal.xlsb « . Assurez-vous également de vous en occuper.

Protéger un classeur fermé

Vous pouvez également protéger et déprotéger un classeur fermé et enregistré à un emplacement. Regardez le code suivant où j’ai utilisé l’emplacement de mon bureau pour utiliser le fichier « test.xlsx ».

Sub vba_protect_workbook()

'declare varibale to use for the workbook
Dim wb As Workbook

'open the workbook that you want to protect
Set wb = Workbooks.Open("C:UsersDellDesktoptest.xlsx")

'turn off the screen-updating to _
done everything in the backend
Application.ScreenUpdating = False

'protect the workbook
wb.Protect

'close the workbook after protecting
wb.Close SaveChanges = True 'turn off the screen-updating
Application.ScreenUpdating = True

End Sub

Le code ci-dessus a utilisé Workbook.Ouvrez la méthode pour ouvrir le classeur que vous souhaitez protéger, puis désactivez la mise à jour de l’écran pour qu’elle fonctionne dans le backend.

Protéger tous les classeurs fermés d’un dossier

Le code suivant parcourt tous les classeurs qui se trouvent dans le dossier que vous avez spécifié comme chemin. Et puis ouvrez chaque classeur, protégez-le et fermez-le un par un.

Sub vba_protect_all_the_workbooks()

'declare variables
    Dim wb As Workbook
    Dim myPath As String
    Dim myFile As String
    Dim myExtension As String
    Dim FldrPicker As FileDialog

'optimize macro
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual

'specify the folder where workbooks are saved
    myPath = "C:UsersDellDesktopfolder"

'jump to reset setting if there's an error
    On Error GoTo ResetSettings

'target file fxtension (must include wildcard "*")
    myExtension = "*.xls*"

'target path
    myFile = Dir(myPath & myExtension)

'Loop through each Excel file in folder
    Do While myFile <> ""

        'Set variable equal to opened workbook
            Set wb = Workbooks.Open(Filename:=myPath & myFile)

        'protect workbook
            wb.Protect

        'Save and Close Workbook
            wb.Close SaveChanges:=True

        'Get next file name
            myFile = Dir

    Loop

'Message Box when task is completed
  MsgBox "Done!"

'reset setting that were change for optimization
ResetSettings:
    Application.EnableEvents = True
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True

End Sub

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *