Dim stpevt As Boolean
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Or stpevt = True Then Exit Sub
With ListObjects(1)
If Not Intersect(Target, .DataBodyRange) Is Nothing Then
stpevt = True
If WorksheetFunction.CountA(.DataBodyRange(Target.Row - .HeaderRowRange.Row, 9).Resize(, 1)) = 1 Then
.DataBodyRange(Target.Row - .HeaderRowRange.Row, 2) = Format(CDate(Date), "dd/mm/yyyy")
.DataBodyRange(Target.Row - .HeaderRowRange.Row, 16) = 1
.DataBodyRange(Target.Row - .HeaderRowRange.Row, 3) = "Validé"
.DataBodyRange(Target.Row - .HeaderRowRange.Row, 16) = 1
.DataBodyRange(Target.Row - .HeaderRowRange.Row, 17) = "o"
If .DataBodyRange(Target.Row - .HeaderRowRange.Row, 1) = vbNullString Then
.DataBodyRange(Target.Row - .HeaderRowRange.Row, 1) = "DIRECT_" & Format(.ListRows.Count, "0000") 'Right("0000" & Trim(Str(NL - 1)), 4)
End If
'.DataBodyRange(Target.Row - .HeaderRowRange.Row, 1) = "DIRECT_" & Right("0000" & Trim(Str(NL - 1)), 4)
End If
End If
End With
stpevt = False
End Sub