Private Sub Worksheet_Change(ByVal Target As Range)
' Teste si une saisie est faite dans la colonne "D"
If Not Intersect(Target, Range("D1:D65536")) Is Nothing Then
' Si c'est le cas teste si la cellule 'C' de gauche est remplie
If Range("C" & Target.Row).Value = "" Then
MsgBox "Vous ne pouvez pas saisir de valeur dans cette cellule" & vbCrLf _
& "tant que la cellule de la colonne 'C' n'est pas remplie", _
vbCritical + vbYesNo, "SAISIE IMPOSSIBLE ..."
' Empécher la détection des évènements
Application.EnableEvents = False
' Efface la valeur
Application.Undo
Application.EnableEvents = True
End If
End If
End Sub