Option Explicit
Private test As Boolean 'déclare la variable test
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Application.Intersect(Target, Range("E10:E29")) Is Nothing Then Exit Sub 'si le changement a lieu ailleurs que dans la plage E10:E29, sort de la procédure
If test = True Then Exit Sub 'si la variable test est vraie, sort de la procédure
If MsgBox("Valider et continuer ?", vbYesNo) = vbNo Then 'condition : si "Non" au message
test = True 'définit la variable test (vraie)
Range(Cells(Target.Row, 2), Cells(Target.Row, 6)).ClearContents 'efface les cellules en colonnes B à F de la ligne
Cells(Target.Row, 2).Select 'sélectionne la cellule de la colonne B
End If 'fin de la condition
test = False 'réinitialise la variable test
End Sub