Function FiltreBD(BD As Range, colCrit1, critere1, ColResult, Optional colcrit2, Optional critere2, Optional ColTri)
a = BD
k = 1
Dim b(): ReDim b(LBound(a) To Application.Caller.Rows.Count, 1 To UBound(ColResult) - LBound(ColResult) + 1)
If IsMissing(colcrit2) Then colcrit2 = colCrit1: critere2 = critere1
For i = LBound(a, 1) To UBound(a, 1)
If UCase(a(i, colCrit1)) = UCase(critere1) And UCase(a(i, colcrit2)) = UCase(critere2) Then
For c = LBound(ColResult) To UBound(ColResult)
col = ColResult(c, 1)
b(k, c) = a(i, col)
Next c
k = k + 1
End If
Next i
If IsMissing(ColTri) Then ColTri = 1
Call TriCol(b, LBound(b), k - 1, ColTri)
' Supprime les 0 du tableau
For i = 1 To UBound(b)
If b(i, 2) = 0 Then b(i, 2) = ""
Next i
FiltreBD = b
End Function