Chercher valeur exacte

Bonjour à tous,

Sur XL 2007:

J'ai une cellule qui contient des infos séparées par des virgules, du type :

"toto, tata, adm, global_adm"

J'ai besoin de savoir si la cellule contient "adm", j'ai donc créé dans A3 la formule :

=if(iserror(search(A1,A2),"KO","OK"))

avec A1 = adm et A2 = liste des infos ("toto, tata, adm, global_adm")

Le problème, c'est que "global_adm" contient "adm".

Donc si ma cellule ne contient que "toto,tata, global adm" et pas adm, ma formule va quand même me dire OK.

Je voudrais donc savoir comment demander à ce que la valeur exacte "adm" soit recherchée svp. Comme ça, si "adm" n'est pas exactement dans ma liste, alors la formule me renverra KO.

Merci d'avance pour votre aide

PS: Au pire je splite le contenu de ma cellule dans des cellules différentes, si elle en contient 3 alors ces valeurs seront réparties dans 3 cellules, puis hlookup (rechercheh) avec valeur exacte grâce au 0 à la fin, mais c'est assez lourd, je préférerai éviter !

Merci encore

Bonjour Pierrot,

chercher "adm" ici revient à chercher " adm," d'ou :

=SI(NB.SI(A2;"* " & A1 & ",*")=1;"OK";"KO")

Cordialement

Jules

-- 23 Juin 2011, 17:16 --

oups, j'ai répondu un peu vite, je n'avais pas envisagé le cas ou adm débute ou finit la chaîne :

=SI(SI(NB.SI(A2;"* " & A1 & ",*")=1;1;0)+SI(DROITE(A2;NBCAR(A1)+2)=", " & A1;1;0)+SI(GAUCHE(A2;NBCAR(A1)+1)=A1 & ",";1;0)>0;"OK";"KO")

Bonsoir Jules,

Merci d'avoir pris le temps de m'aider.

Après traduction (version anglaise), la première formule marche !

J'ai remarqué le pb si adm en début ou fin, j'essaie la 2ème demain.

Il me reste juste à te remercier, et à comprendre ! Notamment, à quoi sert le & ? (le symbole du "et") stp ??

le & sert à concatener.

A1 & A2 est équivalent à CONCATENER(A1;A2). Cordialement

Jules

Bonjour Jules,

J'ai traduit la deuxième formule que tu m'as présentée et que je colle ici :

=SI(SI(NB.SI(A2;"* " & A1 & ",*")=1;1;0)+SI(DROITE(A2;NBCAR(A1)+2)=", " & A1;1;0)+SI(GAUCHE(A2;NBCAR(A1)+1)=A1 & ",";1;0)>0;"OK";"KO")

Ce qui donne après traduction en anglais :

=IF(IF(COUNTIF(A2,"*"&A1&"*,*")=1,1,0)+IF(RIGHT(A2,LEN(A1)+2)=", "&A1,1,0)+IF(LEFT(A2,LEN(A1)+1)=A1&",",1,0)>0,"OK","KO")

J'ai peut-être commis une erreur car avec cette formule en anglais, si j'ai "ADM" en A1 et "XWB_900C,XWB_XWB,GLOBAL_ADM,XWB_FUS_CAB" par exemple en A2, alors le résultat est OK, alors que "ADM" uniquement ne fait pas partie de la liste des valeurs dans A2 !

D'où ces questions :

- Pour la formule "DROITE", tu écris SI(DROITE(A2;NBCAR(A1)+2)=", "

or, il n'y a pas d'espace entre les valeur de la liste A2. Faut-il passer à SI(DROITE(A2;NBCAR(A1)+1)="," ?

- La première formule SI(NB.SI(A2;"* " & A1 & ",*")=1;1;0) est-elle toujours nécessaire ? Si oui, quelle est désormais son utilité ?

- Enfin, le plus important, pourquoi "OK" en réponse alors qu'il n'y a pas "ADM" uniquement dans la liste des valeurs ?

Merci, j'ai hâte de lire les explications !

Crdt,

Pierrot

-- 28 Juin 2011, 11:11 --

Bonjour Jules,

Grâce à ton aide, je pense avoir trouvé une formule qui fonctionne :

=IF(IF(ISERROR(SEARCH(","&A1&",",A2)),0,1)+IF(RIGHT(A2,LEN(A1)+1)=","&A1,1,0)+IF(LEFT(A2,LEN(A1)+1)=A1&",",1,0)=1,"OK","KO")

En français :

==SI(SI(ESTERR(CHERCHE(","&A1&",";A2));0;1)+SI(DROITE(A2;NB.SI(A1)+1)=","&A1;1;0)+SI(GAUCHE(A2,NB.SI(A1)+1)=A1&",";1;0)=1;"OK";"KO")

Résultat, si dans la liste en A2 j'ai :

GLOBAL_ADM,ADM

ADM,GLOBAL_ADM

TOTO,ADM,GLOBAL_ADM ça me donne OK

En revanche, si je n'ai pas ADM, même si j'ai GLOBAL_ADM dans la liste, ça me donne KO.

C'est le résultat dont j'ai besoin. Si tu ne vois pas de faille, je vais utiliser cette dernière formule, mais j'aimerais bien que tu la valides avant.

En tout cas merci encore, je n'y serai pas arrivé sans ton aide !

Bien cordialement,

•°o.O ⓟⓘⓔⓡⓡⓞⓣ O.o°•

-- 28 Juin 2011, 11:15 --

Pardon je crois que les formules sont coupées sur le forum, je refais :

=IF(IF(ISERROR(SEARCH(","&A1&",",A2)),0,1)+IF(RIGHT(A2,LEN

(A1)+1)=","&A1,1,0)+IF(LEFT(A2,LEN(A1)+1)=A1&",",1,0)=1,"OK","KO")

Merci encore, bonne journée !

ⓟⓘⓔⓡⓡⓞⓣ

Bonsoir Pierrot,

J'ai peut-être commis une erreur car avec cette formule en anglais, si j'ai "ADM" en A1 et "XWB_900C,XWB_XWB,GLOBAL_ADM,XWB_FUS_CAB" par exemple en A2, alors le résultat est OK, alors que "ADM" uniquement ne fait pas partie de la liste des valeurs dans A2 !

Il y a en effet des erreurs dans ta traduction, mes
"* " et ",*"

se sont transformés en

"*" et "*,*"

Pour la formule "DROITE", tu écris SI(DROITE(A2;NBCAR(A1)+2)=", "

or, il n'y a pas d'espace entre les valeur de la liste A2. Faut-il passer à SI(DROITE(A2;NBCAR(A1)+1)="," ?

Dans ton premier message, tous les mots sont séparés par des espaces, il aurait fallut que tu le précises ou que tu donnes deux exemples représentatifs des données sources possibles.

La première formule SI(NB.SI(A2;"* " & A1 & ",*")=1;1;0) est-elle toujours nécessaire ? Si oui, quelle est désormais son utilité ?

Cette partie intercepte les cas ou adm est précédé d'un espace et suivi d'une virgule. A toi de voir selon tes données, dois je comprendre qu'en fait il n'y a jamais d'espace ou que cela varie ?

- Enfin, le plus important, pourquoi "OK" en réponse alors qu'il n'y a pas "ADM" uniquement dans la liste des valeurs ?

Voir premier paragraphe, la formule donne bien KO chez moi.

Par contre il y avait bien une faille dans ma formule, je n'avais pas prévu adm tout seul!

C'est le résultat dont j'ai besoin. Si tu ne vois pas de faille, je vais utiliser cette dernière formule, mais j'aimerais bien que tu la valides avant.

Dans l'hypothèse ou les espaces ont définitivement disparus : si ta formule passe les tests OK pour "adm", "tota,adm", "adm,toto" "toto,adm,toto" et les tests KO pour "admi", "tota,admi", "admi,toto" "toto,admi,toto" "tota,readm", "readmi,toto" "toto,readmi,toto" ça devrait être bon.

Cordialement

Jules

Oui c'est bon, car dans mon modèle, ADM doit toujours être suivi d'autres valeurs, donc si ADM est seule (ce qui est déjà peu probable), j'aurais KO pour ADM mais vu qu'il faudra refaire toute la liste, ce n'est pas un problème.

A nouveau, merci beaucoup Jules !

J'ai passé ce post en résolu.

Bonne journée.

Crdt,

Pierrot

Rechercher des sujets similaires à "chercher valeur exacte"