Fonction cherche avec plusieurs conditions [Résolu/Fermé]

- - Dernière réponse :  docteurdam - 25 nov. 2019 à 22:33
Bonjour,

Dans la colonne A, j'ai plusieurs millier de cellules avec du texte. Quand je demande à excel de me signaler si le terme D1 existe dans la celulle j'écris =cherche("D1",A1) et il me met un nombre s'il trouve le terme D1 dans A1. Après je filtre toutes les cellules contenant un nombre ce qui me donne toutes les cellules possédant D1 dans leur texte.

Maintenant, si je demande à excel de me mettre un nombre s'il trouve D1 ou D2 dans la cellule, ca ne marche plus. J'ai essayé =cherche(ou("D1";"D2"),A1) et d'autres techniques mais ca ne fonctionne pas.

Quelqu'un a t'il une solution ?

Cordialement
Afficher la suite 

10 réponses

Meilleure réponse
approuvée par Jean-François Pillou
Messages postés
24730
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 décembre 2019
4909
3
Merci
Bonjour

si vous avez un nombre important de texte de référence à chercher, vous pouvez:
faire de D1 à D10 par exemple, la liste de ces référents (sans cellule vide)

en C1, la formule à tirer sur la hauteur utile

=SOMMEPROD((NB.SI(A1;"*"&$D$1:$D$10&"*"))*1)

qui vous renvoie 1 si A contient u n texte de D1:D10 ou 0 sinon.

attention à tous les signes


crdlmnt

Dire « Merci » 3

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 65034 internautes nous ont dit merci ce mois-ci

Impécable, problème réglé, merci !
Je ne sais pas comment ça marche mais ça marche parfaitement. Ça fait juste par contre la somme si la cellule contient plusieurs critères mais c'est facilement récupérable ça.
merci+++
Messages postés
3341
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
450
0
Merci
Bonjour,

Une proposition
=OU(SIERREUR(CHERCHE("D1";A2);0);SIERREUR(CHERCHE("D2";A2);0))

A+
0
Merci
J'essai maintenant la formule suivante à partir de vos indications:

=SOMMEPROD(OU(SIERREUR(CHERCHE("CJD";Extraction!$A$2:$A$10000);0);SIERREUR(CHERCHE("MES";Extraction!$A$2:$A$10000);0))*(Extraction!$B$2:$B$10000={"DB"."CO"."DF"}))

Mais malheureusement cela ne fonctionnement pas.

Je souhaitrai que le nombre de cellule de A2 à A10000 contenant CJD ou MES dans les cellule de B2:B10000 contenant DB ou CO ou DF apparaisse.

Cette formule fonctionne très bien pour une simple condition de la fonction cherche mais pour 2, cela marche pas.

Je pensais que ma première demande de départ suffirai mais je me rend compte que non.

Pouvez vous m'aider ?

Cordialement
Messages postés
50449
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
2 décembre 2019
11354
0
Merci
Salut Erakmur.

Je crois que ça chauffe trop, et que tu n'as même pas le temps de te relire ...
Que voulais-tu dire par "Je souhaitrai que le nombre de cellule de A2 à A10000 contenant CJD ou MES dans les cellule de B2:B10000 contenant DB ou CO ou DF apparaisse" ?
Serait-ce "Je souhaiterais savoir le nombre de cellules de la colonne A contenant CJD ou MES, avec la cellule voisine en colonne B contenant DB, CO ou DF" ?

Dans ce cas, une solution serait =ET( OU(SIERREUR(CHERCHE("CJD";A:A);0)>0; SIERREUR(CHERCHE("MES";A:A);0)>0) ; OU(SIERREUR(CHERCHE("DB";B:B);0)>0; SIERREUR(CHERCHE("CO";B:B);0)>0;SIERREUR(CHERCHE("DF";B:B);0)>0)

Cordialement.
C'est bien, la retraite ! Surtout aux Antilles ... :-)
Raymond (INSA, AFPA, CF/R)
Raymond PENTIER
Messages postés
50449
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
2 décembre 2019
11354 -
... il suffit de mettre cette formule dans toutes les cellules d'une colonne disponible et de totaliser le nombre de "VRAI".
Mytå
Messages postés
2995
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
720 -
Salut le Forum

Ou comme formule en A2 à recopier vers le bas
=(SOMMEPROD((A2={"CJD"."MES"})*1)+SOMMEPROD((B2={"BD"."CO"."DF"})*1))=2

Mytå
Raymond PENTIER
Messages postés
50449
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
2 décembre 2019
11354 -
... ça affiche FAUX partout !
Raymond PENTIER
Messages postés
50449
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
2 décembre 2019
11354 -
Ah ! Je crois que tu n'as pas bien lu la question d'Erakmur :
Les cellules ne doivent pas contenir les mots CJD, MES, BE, CO ou DF ; mais ces groupes de lettres doivent faire partie des données de ces cellules, comme CJD025, DEMESURE, POUBELLE, COBALT ou 56DF97.
Messages postés
2995
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
720
0
Merci
Re le Forum

J'avais vraiment mal lu, formule corrigée selon le principe de Vaucluse
=ET(SOMMEPROD((NB.SI(A2;"*"&{"CJD"."MES"}&"*")))>0;SOMMEPROD((NB.SI(B2;"*"&{"BD"."CO"."DF"}&"*")))>0)

Mytå
Je ne vois pas ta formule en entier j'ai juste
=ET(SOMMEPROD((NB.SI(A2;"*"&{"CJD"."MES"}&"*")))>0;SOMMEPROD((NB.SI(B2;"*"&
tontong
Messages postés
2286
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
29 novembre 2019
760 -
Le curseur n'est peut-être pas là pour rien. ;-)
0
Merci
Bonjour,

Voici le fichier joint (j'aurai du commencer par là dès le début).

http://cjoint.com/?DIdllgh0PyW

Dans les calculs, je n'arrive pas à compter le EXT puisque c'est le seul qui inclu plusieurs paramètres dans l'onglet extraction comme CDJ, MES, LOG, ACC, MAF dans la colonne A.

C'est un nombre qu'il me faut.

Cordialement
Messages postés
2286
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
29 novembre 2019
760
0
Merci
Bonjour,
Le OU se traduit par un + en matricielle.
Essayez une formule du style:
=SOMMEPROD(((ESTNUM(CHERCHE("CDJ";A2:A1000))+ESTNUM(CHERCHE("MES";A2:A1000))>0)*(F2:F1000)))

nota: j'ai réduit et simplifié les arguments pour faciliter la lecture.
Le >0 est là pour ne compter qu'une valeur de F même si A contient CDJ zzzzMESxxxx.

Si chaque cellule ne peut contenir qu'une valeur:
=SOMMEPROD(((ESTNUM(CHERCHE({"CDJ"."MES"."LOG"};A2:A1000)))*(F2:A1000)))
À vérifier!
Bonjour,
Ta formule me marque une erreur. De toute manère, il manque les paramètres de la colonne F. Le CO, DB, DF ect... Le but est de calculer le nombre qui vas bien et de le mettre en G3, G4 de l'onglet calcul en prenant comme exemple les formules des cases adjacentes qui fonctionnent très bien mais avec une seule condition.

Le but et d'avoir une formule comme =SOMMEPROD(NON(ESTERREUR(CHERCHE({"CDJ"."MES"};Extraction!$A$2:$A$10000)))*(MOIS(Extraction!$C$2:$C$10000)=1)*(Extraction!$F$2:$F$10000={"DB"."CO"."DF"})) mais cela ne fonctionne pas. Le {"CDJ"."MES"} excel ne reconnais pas la multi condition de chercher.
0
Merci
La formule suivant fonctionne:

=SOMMEPROD(NON(ESTERREUR(CHERCHE("CJD";Extraction!$A$2:$A$10000)))*(MOIS(Extraction!$C$2:$C$10000)=1)*(Extraction!$F$2:$F$10000={"DB"."CO"."DF"}))+SOMMEPROD(NON(ESTERREUR(CHERCHE("MES";Extraction!$A$2:$A$10000)))*(MOIS(Extraction!$C$2:$C$10000)=1)*(Extraction!$F$2:$F$10000={"DB"."CO"."DF"}))+SOMMEPROD(NON(ESTERREUR(CHERCHE("ACC";Extraction!$A$2:$A$10000)))*(MOIS(Extraction!$C$2:$C$10000)=1)*(Extraction!$F$2:$F$10000={"DB"."CO"."DF"}))+SOMMEPROD(NON(ESTERREUR(CHERCHE("MAF";Extraction!$A$2:$A$10000)))*(MOIS(Extraction!$C$2:$C$10000)=1)*(Extraction!$F$2:$F$10000={"DB"."CO"."DF"}))+SOMMEPROD(NON(ESTERREUR(CHERCHE("LOG";Extraction!$A$2:$A$10000)))*(MOIS(Extraction!$C$2:$C$10000)=1)*(Extraction!$F$2:$F$10000={"DB"."CO"."DF"}))+SOMMEPROD(NON(ESTERREUR(CHERCHE("EXT";Extraction!$A$2:$A$10000)))*(MOIS(Extraction!$C$2:$C$10000)=1)*(Extraction!$F$2:$F$10000={"DB"."CO"."DF"}))

Mais vous vous rendez compte qu'elle sera extrêment lourde surtout qu'il y aurait encore des conditions à rajouter. Je la répète constemment en changeant la condition. Je souhaite une formule plus simple.
Raymond PENTIER
Messages postés
50449
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
2 décembre 2019
11354 -
Déjà, si tu définis les noms
"EA" pour la plage Extraction!$A$2:$A$10000
"EC" pour la plage Extraction!$C$2:$C$10000
"EF" pour la plage Extraction!$F$2:$F$10000
ta formule de 876 caractères se réduit à 480 caractères :
=SOMMEPROD(NON(ESTERREUR(CHERCHE("CJD";EA)))*(MOIS(EC)=1)*(EF={"DB"."CO"."DF"}))+SOMMEPROD(NON(ESTERREUR(CHERCHE("MES";EA)))*(MOIS(EC)=1)*(EF={"DB"."CO"."DF"}))+SOMMEPROD(NON(ESTERREUR(CHERCHE("ACC";EA)))*(MOIS(EC)=1)*(EF={"DB"."CO"."DF"}))+SOMMEPROD(NON(ESTERREUR(CHERCHE("MAF";EA)))*(MOIS(EC)=1)*(EF={"DB"."CO"."DF"}))+SOMMEPROD(NON(ESTERREUR(CHERCHE("LOG";EA)))*(MOIS(EC)=1)*(EF={"DB"."CO"."DF"}))+SOMMEPROD(NON(ESTERREUR(CHERCHE("EXT";EA)))*(MOIS(EC)=1)*(EF={"DB"."CO"."DF"}))
Messages postés
2286
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
29 novembre 2019
760
0
Merci
En un peu plus court:
=SOMMEPROD((ESTNUM(CHERCHE({"CJD"."MES"."ACC"."MAF"."EXT"."LOG"};Extraction!$A$2:$A$10000))*(MOIS(Extraction!$C$2:$C$10000)=1)*((Extraction!$F$2:$F$10000="DF")+(Extraction!$F$2:$F$10000="CO")+(Extraction!$F$2:$F$10000="DB"))))

Il serait avantageux de mettre les n° des mois dans des cellules pour rendre la formule copiable.
Merci tongtong, cette fois si, mon problème est définitivement réglé et j'ai appris quelque chose en plus sur Excel. Ta formule m'a fait comprendre que mon idée de départ, a savoir le cherche avec les acolades fonctionnent mais que excel ne comprend pas plusieurs conditions définit avec des acolades en même temps. Il faut donc choisir. Tu as décomposé la colonne F et garder les acolades pour la colonne A. On ne peut pas mettre des acolades sur la colonne F et A en même temps, il faut décomposer l'un des 2.
Messages postés
3
Date d'inscription
mercredi 3 septembre 2014
Statut
Membre
Dernière intervention
3 septembre 2014
0
Merci
Bonjour,

ce serait, je pense mieux d'écrire :
=cherche("D1";A1)+cherche("D2";A1)
l'addition des 2 ...