Option Explicit
Private Sub Worksheet_Change(ByVal Cible As Range)
Dim Dt As Date, Hr As Date, oCel As Range, dPlg As Range, dCel As Range
Dt = Date: Hr = Time
With Application: .Calculation = xlCalculationManual: .EnableEvents = 0: End With
For Each oCel In Cible.Cells
On Error Resume Next
Set dPlg = Intersect(Range("C2:C18"), oCel.Dependents.Cells) 'Plage de concaténation.
On Error GoTo 0
If Not dPlg Is Nothing Then
For Each dCel In dPlg.Cells
With Feuil1.Cells(dCel.Row, 1) 'Destination.
.Resize(1, 3).Value = Empty
If dCel.Value <> "" Then .Value = dCel.Value: .Offset(, 1).Value = Dt: .Offset(, 2).Value = Hr
End With
Next dCel
End If
Next oCel
With Application: .EnableEvents = 1: .Calculation = xlCalculationAutomatic: End With
End Sub