Bonjour,
Le filtre d'une feuille de calcul Excel s'appelle autofilter, l'aide d'Excel fournit un exemple de la modification des filtres avec du VBA.
Pour chaque colonne, le filtre est composé de 3 valeurs : un critère N°1 , un opérateur logique, un critère N°2
J'ai utilisé l'exemple de l'aide pour construire une fonction qui renvoie un tableau contenant les paramètres de filtre de chaque colonne pour une feuille de calcul donnée :
Utilisation : Si la feuille qui contient ton filtre s'appelle "Feuil1", dans une sub tu déclare un variant
dim mesfiltres as variant
mesfiltres=GetCriteresDeMafeuille("Feuil1")
...ton code ...
tu peux ainsi connaitre les paramètres de filtre de chaque colonne avec ce tableau :
mesfiltres(1,1) contient le "Critere N°1" de la première colonne
mesfiltres(3,2) contient l'Opérateur logique de la troisième colonne etc...
Par contre la difficulté est que la modification des filtres ne déclenche aucun évennement par elle même,
tu ne peux donc pas réagir immédiatement lorsque l'utilisateur modifie le filtre
Mais bon c'est déjà bien !!
LA FONCTION ----------------------------------------------------------------
Private Function GetCriteresDeMafeuille(sh As Worksheet)
Dim w As Worksheet
Dim filterArray() ' un tableau à deux dimentions pour stocker les paramètres des filtres
Dim currentFiltRange As String
Set w = Application.ActiveSheet
With w.AutoFilter
currentFiltRange = .Range.Address
With .Filters
ReDim filterArray(1 To .Count, 1 To 3)
For f = 1 To .Count
With .Item(f)
If .On Then
filterArray(f, 1) = .Criteria1 'premier paramètre
If .Operator Then
filterArray(f, 2) = .Operator 'deuxième paramètre
filterArray(f, 3) = .Criteria2 ' troisième paramètre
End If
End If
End With
Next
End With
End With
GetCriteresDeMafeuille = filterArray
End Function
Jcbé[^]