XL 2021 Créer une fonction qui renvoie le nombre de critères sélectionné dans 1 filtre

Johann RSW

XLDnaute Nouveau
Bonjour,
Je cherche à créer un fonction (Function) qui me permettrait de récupérer pour la colonne 3 de mon filtre automatique, le nombre de critères sélectionnés.
"Ai-je aucun critère, 1, ou plusieurs critères ?"
Voici la fonction que j'ai essayé de mettre en place en bricolant une function existante.

Quelqu'un voit-il mon erreur ?
Merci.

Function nbCriteresActifs()
Dim Sh As Worksheet
Application.Volatile
If ActiveSheet.Name = "Feuil1" Then
Set Sh = Application.ThisCell.Parent
If Not Sh.AutoFilter Is Nothing Then ' il y a un filtre sur la feuille
If Sh.FilterMode Then 'Il y a des données filtrées
' Criter1 = Sh.AutoFilter.Filters(3).Criteria1
' Criter2 = Sh.AutoFilter.Filters(3).Criteria2
' If Criter1 = "" And Criter2 = "" Then nbCriteresActifs = 0
' If Criter1 <> "" And Criter2 = "" Then nbCriteresActifs = 1
' If Criter1 = "" And Criter2 <> "" Then nbCriteresActifs = 1
' If Criter1 <> "" And Criter2 <> "" Then nbCriteresActifs = 2
End If
End If
End If
End Function
 
Dernière édition:

Johann RSW

XLDnaute Nouveau
Je fais ma propre réponse pour tenter de faire avancer la résolution de mon problème. Je viens "d'améliorer" ma Function, et voilà où elle bloque : au niveau des 3 lignes que je j'ai mis en commentaires.
J'y suis presque, mais je ne vois pas mon erreur...

Function nbCriteresActifs()
With Worksheets("Feuil1")
If .AutoFilterMode Then
With .AutoFilter.Filters(3)
If .On Then
Crit = .Criteria1
' If Crit(1) = "" And Crit(2) = "" Then nbCriteresActifs = 0
' If Crit(1) <> "" And Crit(2) = "" Then nbCriteresActifs = 1
' If Crit(1) <> "" And Crit(2) <> "" Then nbCriteresActifs = 2
End If
End With
End If
End With
End Function
 
Dernière édition:

Johann RSW

XLDnaute Nouveau
Voici la solution (qui n'est pas de moi), si elle peut servir à d'autres :
Function nbCriteresActifs()
Application.Volatile ' non présent initialement
With Worksheets("Feuil1")
If .AutoFilterMode Then
With .AutoFilter.Filters(3)
If .On Then
nbCriteresActifs = .Count
End If
End With
End If
End With
End Function
 

Discussions similaires

Statistiques des forums

Discussions
315 090
Messages
2 116 107
Membres
112 661
dernier inscrit
ceucri