Un essai avec:
ActiveSheet.Unprotect ("ton Mdp ici") #à mettre au debut de ta macro
[ton code...]
ActiveSheet.Protect ("ton Mdp ici") #à mettre à la fin de ta macro
essaye le code ci-dessous, à placer dans le module "thisworkbook", se déclenche à l'ouverture du classeur, utilisation de l'argument "userinterfaceonly" qui permet d'intervenir par macro sur feuille protégée.
Code:
Option Explicit
Private Sub Workbook_Open()
Sheets("NomFeuille").Protect "toto", userinterfaceonly:=True
End Sub