Sub Filtre()
Dim ncol%, crit1$, crit2$, crit3$, crit4$, tablo, i&, n&, j%
ncol = 13 'nombre de colonnes étudiées
With Sheets("Page d'accueil")
crit1 = .[B7]: crit2 = .[D7]: crit3 = .[F7]: crit4 = .[H7]
If Trim(crit1) = "" Then crit1 = "*"
If Trim(crit2) = "" Then crit2 = "*"
If Trim(crit3) = "" Then crit3 = "*"
If Trim(crit4) = "" Then crit4 = "*"
tablo = [Balance_propriétaire].Resize(, ncol) 'matrice, plus rapide
For i = 1 To UBound(tablo)
If tablo(i, 1) Like crit1 And tablo(i, 3) Like crit2 And tablo(i, 5) Like crit3 And tablo(i, 7) Like crit4 Then
n = n + 1
For j = 1 To ncol
tablo(n, j) = tablo(i, j) 'copie la ligne
Next j
End If
Next i
'---restitution---
If .FilterMode Then .ShowAllData 'si la feuille est filtrée
With .[B10] '1ère cellule de destination
If n Then .Resize(n, ncol) = tablo
.Offset(n).Resize(Rows.Count - n - .Row + 1, ncol).ClearContents 'RAZ en dessous
End With
End With
End Sub