Option Explicit
Sub RecopiePlageFiltrée()
Dim derLigA As Long
Dim derLigI As Long
Dim plgSource As Range
Dim plgFiltree As Range
'
' Desactiver le filtrage s'il existe
AutoFilter = False
'Récupérer la derniere ligne dans Tableau1 colonne A
derLigA = Cells(Cells.Rows.Count, "A").End(xlUp).Row
'Récupérer la derniere ligne dans Tableau2 colonne I
derLigI = Cells(Cells.Rows.Count, "I").End(xlUp).Row
'Définir la plage source
Set plgSource = Range("A" & derLigA & ":E" & derLigI)
'Appliquer un filtre sur la plage source
plgSource.AutoFilter
plgSource.AutoFilter Field:=1, Criteria1:= _
">=" & [G2], Operator:=xlAnd, Criteria2:="<=" & [G5]
'Récupérer le resultat du filtrage
plgFiltree = plgSource.Offset(1).SpecialCells(xlCellTypeVisible)
'Atrribution des valeurs du Tableau2
'I = G2 : DateDébut
Range("I" & derLigI).Resize(plgFiltree.Rows.Count) = [G2]
'J = G5 : DateFin
Range("J" & derLigI).Resize(plgFiltree.Rows.Count) = [G5]
'K = B : Nom
Range("K" & derLigI).Resize(plgFiltree.Rows.Count) = plgFiltree.Column(1)
'L = E : %
Range("L" & derLigI).Resize(plgFiltree.Rows.Count) = plgFiltree.Column(5)
'M = Formule = G8 * L : Gain périodique
Range("M" & derLigI).Resize(plgFiltree.Rows.Count) = [G2] * Range("L" & derLigI).Resize(plgFiltree.Rows.Count) 'plgFiltree.Column(1)
'N = Formule = =SOMMEPROD(($K$2:$K2=$K2)*($M$2:$M2)): Gain total individuel
Range("M" & derLigI).Resize(plgFiltree.Rows.Count).Formula = "SUMPRODUCT(($K$2:K" & derLigI & ") * ($M$2:$M" & derLigI & "))"
End Sub