Function FiltrerTab(FullTab() As Variant, Critère As String, ColCrit As Integer) As Boolean 'filtre le FullTab selon UN critère sur UNE colonne et renvoie vrai ou faux si le tableau a été filtré
Dim b() As Variant
Critère = "*" & UCase(Critère) & "*"
n = 0
NbCol = UBound(FullTab, 2)
For i = LBound(FullTab, 1) To UBound(FullTab, 1)
If UCase(FullTab(i, ColCrit)) Like Critère Then 'si la ligne répond au critère
n = n + 1: ReDim Preserve b(1 To NbCol, 1 To n) 'on dimensionne le tablo résultat b
For K = 1 To NbCol: b(K, n) = FullTab(i, K): Next K 'on remplit la nouvelle ligne
End If
Next i
If n > 0 Then
FullTab = Application.WorksheetFunction.Transpose(b)
FiltrerTab = True
Else 'aucune ligne ne répond au critère
FiltrerTab = False 'le tableau FullTab n'a pas été modifié==> il contient toujours TOUTES les données non filtrées
End If
End Function
Function FiltrerTabMultiCrit(FullTab() As Variant, Critère As Variant, ColCrit As Variant) As Boolean 'filtre le FullTab selon PLUSIEURS critères sur PLUSIEURS colonnes et renvoie vrai ou faux si le tableau a été filtré
'Peut remplacer la fonction FiltrerTab (à condition de déclarer les paramètres d'appel en array)
Dim b() As Variant
Dim i As Long
Dim LigToKeep As Boolean
Dim n As Long
n = 0
NbCol = UBound(FullTab, 2)
For i = LBound(FullTab, 1) To UBound(FullTab, 1)
LigToKeep = True
For IndCrit = LBound(Critère) To UBound(Critère)
Crit = "*" & UCase(Critère(IndCrit)) & "*"
If Not (UCase(FullTab(i, ColCrit(IndCrit)))) Like Crit Then 'si la ligne répond au critère
LigToKeep = False
Exit For
End If
Next IndCrit
If LigToKeep Then
n = n + 1: ReDim Preserve b(1 To NbCol, 1 To n) 'on dimensionne le tablo résultat b
For K = 1 To NbCol: b(K, n) = FullTab(i, K): Next K 'on remplit la nouvelle ligne
End If
Next i
If n > 0 Then
FullTab = Application.WorksheetFunction.Transpose(b)
FiltrerTabMultiCrit = True
Else 'aucune ligne ne répond au critère
FiltrerTabMultiCrit = False 'le tableau FullTab n'a pas été modifié==> il contient toujours TOUTES les données non filtrées
End If
End Function