Private Sub Worksheet_Activate()
'Feuil1 et Feuil2 sont les CodeNames des feuilles
Dim filtre As Range, t, ncol%, n&, i&, j%
'---critères de filtrage---
Set filtre = Feuil2.Range("D3", Feuil2.Range("D" & Rows.Count).End(xlUp))
Application.ScreenUpdating = False
Cells.Delete 'RAZ
'---test de sécurité---
If filtre.Row < 3 Or Feuil1.UsedRange.Count = 1 Then Exit Sub
'--tableau des résultats---
t = Feuil1.UsedRange
ncol = UBound(t, 2)
n = 1
For i = 2 To UBound(t)
If Application.CountIf(filtre, t(i, 3)) Then 'NB.SI
n = n + 1
For j = 1 To ncol
t(n, j) = t(i, j)
Next
End If
Next
'---restitution---
[A1].Resize(n, ncol) = t
Columns.AutoFit 'ajustement de la largeur des colonnes
Rows(1).Font.Bold = True 'police en gras
End Sub