Private av As Variant 'déclare la varaible av (Ancienne Valeur)
Private test As Boolean 'déclare la varaible test
Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'au changement de sélection dans l'onglet
If Application.Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub 'si la cellule active ne fait pas partie de la plage A1:A100 (à adapter), sort de la procédure
If Selection.Cells.Count > 1 Then ActiveCell.Select 'si plusieurs cellules sélectionnées, ne sélectionne que la cellule active
av = Target.Value 'définit la variable av
End Sub
Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
If Application.Intersect(Target, Range("A1:A100")) Is Nothing Then Exit Sub 'si le changement se fait ailleurs que dans la plage A1:A100 (à adapter), sort de la procédure
If test = True Then Exit Sub 'si test est vrai, sort de la procédure
If Target.Value = "" And av <> "" Then 'condition 1 :si la cellule est effacée et l'ancienne valeur n'est pas vide
If MsgBox("Êtes-vous sûr(e) de vouloir effacer cette cellule ?", vbYesNo, "ATTENTION !") = vbNo Then 'condition 2 : si non au message
test = True 'définit la variable test
Target.Value = av 'remet l'ancienne valeur effacée
test = False 'redéfinit la variable test
End If 'fin de la condition 2
End If 'fin de la condition 1
End Sub