Bojour Alpasquier, bonjour le forum,
Peut-être comme ça, avec les deux événementielles Change et SelectionChange ci-dessous :
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Me.Protect "toto" 'protège l'onglet avec un mot de passe (à adapter)
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'au changement de sélection dans l'onglet
Dim BE As Variant 'déclare la variable BE
Application.DisplayAlerts = False 'empêche les messages d'Excel
If Target.Locked = True Then BE = InputBox("Entrer le mot de passe.") 'si la cellule est verrouillée, définit la boîte d'entrée BE
If BE = "" Then Exit Sub 'si BE n'est pas renseignée, sort de la procédure
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Me.Unprotect BE 'déprotège l'onglet avec BE comme mot de passe (génère une erreur si BE est erronée)
If Err > 0 Then 'condition : si une erreur a été générée
Err.Clear 'supprime l'erreur
MsgBox "Mot de passe erroné ! " 'message
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
Application.DisplayAlerts = True 'affiche les message d'Excel
End Sub
un petit exemple en pièce jointe. Seules les cellules jaunes sont verrouillées...