Private Sub Worksheet_Change(ByVal Target As Range)
Dim a, b, i&
Set Target = Intersect(Target, [H:H], UsedRange)
If Target Is Nothing Then Exit Sub
For Each Target In Target.Areas 'si entrées multiples
If Target.Count = 1 Then
If LCase(Target) = "x" Then Target(1, 3) = Date
Else
a = Target 'matrice, plus rapide
b = Target.Offset(, 2)
For i = 1 To UBound(a)
If LCase(a(i, 1)) = "x" Then b(i, 1) = Date
Next i
Target.Offset(, 2) = b
End If
Next Target
End Sub