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

  • Initiateur de la discussion Initiateur de la discussion rafi93
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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

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é)
 
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 ?
 
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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour