Private Sub Worksheet_Change(ByVal Target As Range)
Dim s$, oPlg As Range, oCel As Range
On Error GoTo E
Set oPlg = Intersect([Q1:Q10], Target.Dependents)
On Error GoTo 0
If Not oPlg Is Nothing Then
For Each oCel In oPlg.Cells
If oCel.Value <= 0 Then s = s & vbLf & oCel.Address(0, 0)
Next
If s <> "" Then MsgBox "Attention : Valeur négative en " & s
End If
C:
'Suite de la procédure Worksheet_Change si besoin est...
Exit Sub
E:
On Error GoTo 0
Resume C
End Sub