Microsoft 365 nb.si.ens cellules visibles sur plage filtrée

rafi93

XLDnaute Occasionnel
bonjour à tous

je souhaite utiliser la formule nb.si.ens sur les cellules visibles d'une plage filtrée

cf exemple joint : si je filtre en conservant la valeur "toto", le résultat de la formule ne change pas (devrait etre zéro)

malgré plusieurs recherches un peu partout, je n'ai pas trouvé de solution sans passer par vba, ou sans rajouter de colonne

est ce possible ?

merci !!
 

Pièces jointes

  • test nb_si filtré.xlsx
    9.9 KB · Affichages: 9

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

en rajoutant une colonne (nommée 'Visible' dans le fichier joint) à votre tableau avec la formule : =AGREGAT(3;7;[@colA])=1
vous pourrez prendre en compte la visibilité de la ligne dans vos formule Nb.Si.Ens.

Par contre vos critères ne sont pas très précis: une cellule de ColA doit-elle être compté 1 fois pour les 'i' et 1 fois pour les 'r' ou une seule fois pour les deux ?

La formule suivante ne compte que les cellules visibles qui contiennent à la fois au moins un i et un r :
=NB.SI.ENS(Tableau1[visible];VRAI;Tableau1[colA];"=*i*";Tableau1[colA];"=*r*")

Cordialement
 

Pièces jointes

  • test nb_si filtré.xlsx
    10.2 KB · Affichages: 24

rafi93

XLDnaute Occasionnel
merci pour la réponse
j'avais bien vu qu'en rajoutant une colonne je pouvais y arriver, mais je cherchais une solution sans cela. donc impossible semble t il.
merci quand même

question subsidiaire : si je passe par une formule vba, est ce qu'elle peut se mettre à jour en temps réel (càd sans la
bonjour à tous

je souhaite utiliser la formule nb.si.ens sur les cellules visibles d'une plage filtrée

cf exemple joint : si je filtre en conservant la valeur "toto", le résultat de la formule ne change pas (devrait etre zéro)

malgré plusieurs recherches un peu partout, je n'ai pas trouvé de solution sans passer par vba, ou sans rajouter de colonne

est ce possible ?

merci !!

lancer à la demande)?

(pour les critères, c'est bien ceux que j'ai codé)
 

rafi93

XLDnaute Occasionnel
Re,


Oui,



Ce sont ceux-ci qui n'étaient pas très clairs pour moi, d'autant que votre formule donnait 32 au lieu de 5 !!!! 3+2 (=5) est différent de 3 & 2 qui donne 32 en texte.
en fait, c'est une formule qui me permet de tester plusieurs conditions en même temps : combien de lignes sont de type "i" & combien "r", sous forme d'une chaîne texte.

pour le code vba, il faut utiliser les "événements" je suppose pour qu'elle se mette à jour ?
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

sont de type "i" & combien "r", sous forme d'une chaîne texte.
"riri" est de type i ou de type r ?

pour le code vba, il faut utiliser les "événements" je suppose pour qu'elle se mette à jour ?

Non pas besoin, écrivez une fonction normale, rajouter lui Application.Volatile (aide ms) en première lnstruction si vous avez besoin que la formule soit recalculée à chaque calcul de n'importe quelle cellule de la feuille (c'est plutôt lourd... à éviter donc)

Mais ce ne sera pas suffisant pour détecter le filtrage. Et pour ça il n'y a pas d' événement non plus.
L'ajout d'une colonne (qui peut être masquée) est bien plus simple à mettre en oeuvre.

Exemple de fonction simple faisant le job sur une plage :
VB:
Function NbSiVisible(Plage As Range, masque As String) As Long
    Dim rng As Range, c As Range
    Set rng = Plage.SpecialCells(xlCellTypeVisible)
    For Each c In rng
         NbSiVisible = NbSiVisible - (c.EntireRow.Hidden = False And c.Text Like masque)
    Next
End Function

Cordialement
 

Pièces jointes

  • test nb_si filtré.xlsm
    16.2 KB · Affichages: 7
Dernière édition:

Discussions similaires

Réponses
3
Affichages
104

Membres actuellement en ligne

Statistiques des forums

Discussions
313 077
Messages
2 095 073
Membres
106 166
dernier inscrit
anesalis