Cela fait déjà quelques heures que je suis bloqué sur une formule toute bête mais qui ne me retourne jamais le résultat souhaité.
J'ai deux colonnes d'entrée AA et B.
Je souhaite savoir si la valeur existante en AA n'existe pas déjà en B lors d'une mise à jour de mon fichier.
Les valeurs possibles en AA sont ma valeur existante, rien ou 0. Du coup, j'ai réalisé ma formule ainsi, afin qu'elle me réponde une valeur différente selon chaque cas :
Normalement, si j'ai une valeur en AA et qu'elle existe en B, ceci devrait me répondre 0, si j'ai une valeur en AA mais qu'elle n'existe pas dans la colonne B, ceci devrait me répondre 1, si j'ai rien en AA, ceci devrait me répondre -2 et si j'ai 0 en AA, ceci devrait me répondre -1.
Au début, j'avais des résultats totalement bizarres, par exemple 1 sur toutes les lignes résultantes ! Après renseignements, j'ai mis la formule de façon matricielle :
{=SI($AA5="";-2;SI($AA5=0;-1;SI(NB.SI($B$6:$B$1000;$AA5)=0;1;0)))}
Les résultats semblaient plus cohérents mais cela ne me donne toujours pas le bon résultat.
Auriez-vous une idée sur le pourquoi du non fonctionnement de cette formule ?
=SI(EQUIV(B:B;AA:AA;0)=LIGNE(); ""; 0)
ou
=SI(EQUIV(AA:AA;B:B;0)=LIGNE(); ""; 0)
dans ce cas il faudra compléter avec une gestion d'erreur enfin d'après ce que j'ai compris
=SIERREUR(SI(EQUIV(AA:AA;B:B;0)=LIGNE(); ""; 0);"")
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Effectivement, ça semble fonctionner, sur ma version allégée. Je vais regarder ça plus en détail car je ne vois pas pourquoi cela ne fonctionnerait pas sur l'original.
Est-ce que le fait que dans l'original, B et AA ne soient pas dans la même feuille peut y jouer ?
PS : Les noms des feuilles ont bien été précisés devant AA et devant B, dans l'original.
Merci, je suis sur la bonne voie.
Je ne connaissais pas du tout, EQUIV et LIGNE.
Je donne la priorité à AA car je cherche l'existence des valeurs de AA dans la colonne B.
Est-ce que le premier "" de ta formule correspondrait chez moi au -2 ?
D'autre part, je ne vois pas comment avoir mon cas avec la réponse égale à 1 si la valeur n'existe pas dans ma colonne B mais existe dans ma colonne AA.
Peux-tu m'éclairer ou m'indiquer à quelle partie de ma formule correspond ton code =SIERREUR(SI(EQUIV(AA:AA;B:B;0)=LIGNE();"";0)"") ?
Es-tu sûr de celle-ci ?
Le problème de cette formule, je pense, c'est que j'ai des cellules vides, que ce soit dans la colonne AA ou dans la colonne B. Comme cette formule semble prendre toute la colonne à chaque fois, il me trouve les espaces et cela ne me retourne pas le bon résultat.
A la place du NB.SI(...;0), j'ai mis NB.SI(...,$AA_numeroLigneAdapté) et le résultat obtenu est -2 quand je devrais avoir 1 et 0 sinon. Et quand je mets un numéro dans AA qui n'existe pas dans B, il me retourne quand même -2.
Oui enfin je suis sur si j'ai bien compris ?
d'après ta demande
Normalement, si j'ai une valeur en AA et qu'elle existe en B, ceci devrait me répondre 0, si j'ai une valeur en AA mais qu'elle n'existe pas dans la colonne B, ceci devrait me répondre 1, si j'ai rien en AA, ceci devrait me répondre -2 et si j'ai 0 en AA, ceci devrait me répondre -1"
on teste la colonne AA et la colonne B si elles contiennent la valeur 0 la formule retourne 0
si il y a un 0 en AA et rien en B la formule retourne 1
et si il n'y a pas de valeur 0 en AA la formule retourne -2
Merci à vous deux pour votre aide. Il s'avère que ma formule fonctionnait. Alors pourquoi ne fonctionnait-elle pas hier ? Mystère et boule de gomme... Sans doute la fatigue de fin de journée, aussi.
En tout cas, merci. J'ai appris à me servir de EQUIV et LIGNE, du coup. :)
NB : Pour ceux qui passeraient plus tard sur ce forum, le lien posté sur cjoint.com est volontairement mort.
=SIERREUR(SI(EQUIV(B:B;AA:AA;0)=LIGNE();0; 1);-2)