Option Explicit
Private Sub Worksheet_Activate()
ListeAct
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Me.[G2:H2,J2:K2], Target) Is Nothing Then ListeAct
End Sub
Sub ListeAct()
Dim DébP As Date, FinP As Date, TE(), LE As Long, _
DébT As Date, FinT As Date, TS(), LS As Long
DébP = Me.[G2].Value + Me.[H2].Value
FinP = Me.[J2].Value + Me.[K2].Value
TE = Feuil1.UsedRange.Value
ReDim TS(1 To UBound(TE, 1), 1 To 4)
For LE = 2 To UBound(TE, 1)
DébT = TE(LE, 2) + TE(LE, 3)
FinT = TE(LE, 4) + TE(LE, 5)
If DébT < FinP And FinT > DébP Then
If DébT < DébP Then DébT = DébP ' S'il faut le début de la période demandée.
If FinT > FinP Then FinT = FinP ' S'il faut la fin de la période demandée.
LS = LS + 1
TS(LS, 1) = TE(LE, 1)
TS(LS, 2) = DébT: TS(LS, 3) = FinT
TS(LS, 4) = TE(LE, 6)
End If: Next LE
With Me.ListObjects("Table2")
If .ListRows.Count > LS Then .ListRows(LS + 1).Range.Resize(.ListRows.Count - LS).Delete xlShiftUp
.DataBodyRange.Resize(LS).Value = TS: End With
End Sub