Erreur dans code

Bonjour à tous,

Dans le code suivant je demande un masquage de feuille plus un code de verrouillage et ensuite l'enregistrement avant fermeture

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Sheets("*****").Visible = False
    ThisWorkbook.Protect Password:="***", structure:=True
    Sheets("*****").Select
    Range("C11").Select
    Application.AlertBeforeOverwriting = False
    ActiveWorkbook.Save
End Sub

Sa fonctionne très bien sauf quand ma page à verrouillé est déjà verrouillée, je pense qu'il faut que je mette une condition mais je n'y arrive pas.

Y aurait-il quelqu'un pour m'aider sur ce problème.

En vous remerciant.

Bonjour,

Au début de la macro, tu peux tester si la feuille est déjà verrouillée ...

If Worksheets("*****").ProtectContents = True

Puis, en tenir compte ...

ric

Ric,

tout d'abord merci pour ton aide.

Je ajouter la ligne en début de code et mis un end if, mais la ligne ce mais directement en rouge tout de suite après écriture

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Worksheets("*****").ProtectContents = true
    Sheets("*****").Visible = False
    ThisWorkbook.Protect Password:="***", structure:=True
    Sheets("*****").Select
    Range("C11").Select
    Application.AlertBeforeOverwriting = False
    ActiveWorkbook.Save
End Sub

Bonjour,

Ma suggestion était pour ajouter une condition d'exécution du code ...

Voici donc la suggestion ...

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    If Worksheets("*****").ProtectContents = True Then  ' si la feuille est protégée ...
        ThisWorkbook.Unprotect Password:="***"          ' enlever la protection ...
    End If
    Sheets("*****").Visible = False
    ThisWorkbook.Protect Password:="***", structure:=True
    Sheets("*****").Select
    Range("C11").Select
    Application.AlertBeforeOverwriting = False
    ActiveWorkbook.Save
End Sub

ric

Merci beaucoup ric, ça fonctionne très bien.

Rechercher des sujets similaires à "erreur code"