Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Intersect([I4:I300,K4:K300,U4:U300], Target)
If Target Is Nothing Then Exit Sub
If Target.Count = 1 Then
If IsNumeric(Evaluate(Target.Formula)) Then
Annule 0, Target
Else
Target.Select
Annule IIf(IsEmpty(Target), 1, 2)
End If
Else
If Application.CountA(Target) Then
Annule 3
Else
Annule 1
End If
End If
End Sub
Sub Annule(mes As Byte, Optional cel As Range)
Dim saisie$
If mes Then MsgBox Switch( _
mes = 1, "Effacement des historiques non autorisé !", _
mes = 2, "Saisie incorrecte, numérique uniquement !", _
mes = 3, "Entrées multiples non autorisées !"), 48
On Error Resume Next 'si cel n'existe pas
saisie = Replace(cel, ",", ".")
Application.EnableEvents = False
Application.Undo
cel = IIf(cel.HasFormula, cel.Formula & "+", "=") & saisie
Application.EnableEvents = True
End Sub