Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Erreur Calc avec Filtre

  • Initiateur de la discussion Initiateur de la discussion eric72
  • 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 !

eric72

XLDnaute Accro
Bonjour à tous,
Je m'en remets une nouvelle fois à votre savoir pour régler un petit problème d'erreur Calc qui me renvoie un "1" quand il ne trouve pas de correspondance.
Voilà la formule employée:
VB:
NBVAL(UNIQUE(FILTRE(TbSaisieFormations[NOM - PRENOM];(TbSaisieFormations[SEXE]=L$1)*(TbSaisieFormations[CSP]="ALTERNANT")*(TbSaisieFormations[DATE DE FIN]>=$K3)*(TbSaisieFormations[DATE DE FIN]<=DATE(ANNEE($K3)+1;1;0)))))
J'ai bien essayé avec "SIERREUR", avec "SI(ESTERREUR" mais rien n'y fait.
Merci beaucoup pour un petit coup de main et votre dévouement.
Bonne journée.
 

Pièces jointes

Solution
Bonjour,
"normal" ! Quand il n'y a pas de correspondance, FILTRE renvoie "#CALC!" qui est une valeur d'erreur, mais une valeur quand même et donc qui compte pour 1. Essaie :

VB:
=LET(flt;FILTRE(TbSaisieFormations[NOM - PRENOM];(TbSaisieFormations[SEXE]=L$1)*(TbSaisieFormations[CSP]="ALTERNANT")*(TbSaisieFormations[DATE DE FIN]>=$K3)*(TbSaisieFormations[DATE DE FIN]<=DATE(ANNEE($K3)+1;1;0));"");SI(flt="";0;NBVAL(UNIQUE(flt))))

Code:
=LET(flt;FILTRE(TbSaisieFormations[NOM - PRENOM];(TbSaisieFormations[SEXE]=L$1)*(TbSaisieFormations[CSP]="ALTERNANT")*(TbSaisieFormations[DATE DE FIN]>=$K2)*(TbSaisieFormations[DATE DE FIN]<=DATE(ANNEE($K2)+1;1;0));"");SI(PRENDRE(flt;1)="";0;NBVAL(UNIQUE(flt))))

Daniel
Bonjour,
"normal" ! Quand il n'y a pas de correspondance, FILTRE renvoie "#CALC!" qui est une valeur d'erreur, mais une valeur quand même et donc qui compte pour 1. Essaie :

VB:
=LET(flt;FILTRE(TbSaisieFormations[NOM - PRENOM];(TbSaisieFormations[SEXE]=L$1)*(TbSaisieFormations[CSP]="ALTERNANT")*(TbSaisieFormations[DATE DE FIN]>=$K3)*(TbSaisieFormations[DATE DE FIN]<=DATE(ANNEE($K3)+1;1;0));"");SI(flt="";0;NBVAL(UNIQUE(flt))))

Code:
=LET(flt;FILTRE(TbSaisieFormations[NOM - PRENOM];(TbSaisieFormations[SEXE]=L$1)*(TbSaisieFormations[CSP]="ALTERNANT")*(TbSaisieFormations[DATE DE FIN]>=$K2)*(TbSaisieFormations[DATE DE FIN]<=DATE(ANNEE($K2)+1;1;0));"");SI(PRENDRE(flt;1)="";0;NBVAL(UNIQUE(flt))))

Daniel
 
Dernière édition:
Bonjour Danielco,
Merci pour la réponse, cela parait efficace par contre je suis incapable de le reproduire, est-il possible d'avoir des explications?
Merci beaucoup
 
Bonjour Danielco,
Merci pour la réponse, cela parait efficace par contre je suis incapable de le reproduire, est-il possible d'avoir des explications?
Merci beaucoup
Pour le filtre, j'ai ajouté à la fin le paramètre "" qui renvoie une chaîne vide i FILTRE ne trouve pas de correspondance. J'ai appelé le filtre "flt" au moyen de LET pour éviter de le recalculer deux fois. Ensuite, j'ai testé si la première valeur du filtre est "" (quand il n'y a pas de correspondance). Dans ce cas, la formule renvoie "0" sinon, elle renvoie le nombre trouvé :




Daniel
 
Ah Ok je comprends mieux comme cela.
Merci beaucoup encore une fois et bonne journée.
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…