Option UserInterfaceOnly
Lorsque vous verrouillez les cellules d'une feuille de calcul , que la protection s'applique aux opérations VBA ainsi que les actions de l'utilisateur . Si votre code VBA tente de modifier une cellule verrouillée , vous obtiendrez une erreur d'exécution 1004 . Une façon de contourner cela est de déprotéger la feuille avant les courses VBA pertinentes et reprotect après la VBA est terminée . C'est en quelque sorte une solution malpropre . Le meilleur moyen est d'utiliser le drapeau UserInterfaceOnly lorsque vous protégez la feuille via VBA . Vous pouvez spécifier UserInterfaceOnly uniquement dans le code VBA . Il n'y a aucun élément de l'interface utilisateur ( barre de commande , menu, etc ) pour cette option , vous devez utiliser VBA . Lorsque vous protégez une feuille avec UserInterfaceOnly , la protection est appliquée aux actions des utilisateurs ( essentiellement , clavier et opérations de souris ) , mais VBA est libre de modifier la feuille de calcul comme s'il n'y avait pas de protection . Le réglage UserInterfaceOnly n'est pas enregistrée lorsque vous fermez le classeur , vous devez définir lorsque le classeur est ouvert . Le meilleur endroit pour le faire est dans la procédure d'événement Workbook_Open . Par exemple,
Private Sub Workbook_Open ( )
. Me.Worksheets ( " Sheet1" ) Protect UserInterfaceOnly : = True
. Me.Worksheets ( " Sheet2 " ) Protect UserInterfaceOnly : = True
. Me.Worksheets ( " Sheet3 " ) Protect UserInterfaceOnly : = True
End Sub
Ce code doit être placé dans le module de code ThisWorkbook de projet VBA du classeur .