Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TSpl() As String, Dt As Date
If VarType(Target.Value) <> vbString Then Exit Sub
TSpl = Split(Target.Value)
Dt = DateSerial(Year(Date), Month(Date), TSpl(1))
If TSpl(0) <> Format(Dt, "dddd") Then
If MsgBox("le " & Format(Dt, "d mmmm yyyy") & " est un " & Format(Dt, "dddd") & "," _
& vbLf & "pas un " & TSpl(0), vbOKCancel, "Saisie """ & Target.Value & """.") = vbCancel Then Exit Sub
End If
Target.Value = Dt
Target.NumberFormat = "dddd d"
End Sub