Sub TestDate()
Dim rg As Range
Dim bValid As Boolean
'on commence au début de la liste de date
Set rg = ActiveSheet.Range("E1")
bValid = True 'vrai par défaut, date format valide
Do Until IsEmpty(rg) 'on suppose qu'il n'y a pas de lignes vides
'vérifier si c'est une date valide ou non
If Not IsDate(rg) Then
rg.Interior.ColorIndex = 3 'en rouge
bValid = False 'on met à faux
End If
'vérifier si la date ne correspond pas au mois
On Error Resume Next
If bValid Then 'si format date valide alors
If Month(rg) <> ActiveSheet.Range("H1") And _
Year(rg) <> ActiveSheet.Range("J1") Then
rg.Interior.ColorIndex = 6 'en jaune
End If
End If
bValid = True
Set rg = rg.Offset(1, 0)
Loop
End Sub