Récupérer le nombre de critères sélectionné dans 1 filtre

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.

Dans le code ci-dessous, j'ai mis en commentaires les lignes qui font planter ma Function

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

bonjour,

une correction de ton code

Function nbCriteresActifs()
    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

ps : merci à l'avenir d'utiliser le bouton </> pour mettre tout ou parties de ton code sur le forum. pour ce message j'ai fait la correction pour toi.

Merci effectivement ta correction fonctionne.

Je profite de ton aide juste pour te signaler que cette fonction fonctionne uniquement lorsque je double clique sur la cellule contenant la fonction, autrement dit le résultat de la fonction ne se fait pas automatiquement.

As-tu une explication (fichier ci-joint) ?

11classeur1.xlsm (18.15 Ko)

Bonjour,

C'est normal, la fonction (UDF) corrigée proposée par h2so4 n'est pas "volatile", càd. qu'elle ne s'exécute que quand ses paramètres sont actualisés. Or elle n'a aucun paramètre à part la cellule dans laquelle elle se trouve. Qui ne s'actualise que lorsque vous la double cliquez.

Pour "corriger" cela, on peut indiquer la fonction comme volatile, il faut ajouter "Application.Volatile" en première ligne de la fonction.

Mais ce n'est pas suffisant ! Votre classeur est en calcul manuel, les fonctions ne sont évaluées QUE si vous recalculez le classeur avec le bouton en bas à gauche. Pour activer le calcul automatique allez dans Formules > Calcul > Options de Calcul > Automatique.

Ci-après le fichier tel qu'indiqué, avec UDF volatile et calculs automatiques.

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
11classeur1.xlsm (17.32 Ko)

Merci ça fonctionne parfaitement :-)

La tête dans le guidon je n'avais pas vu l'absence de l'argument Volatile..

Bien vu et encore merci à vous 2 .

Je clôture le ticket.

Rechercher des sujets similaires à "recuperer nombre criteres selectionne filtre"