Excel Fonctions SI + OU

Fermé
services15 - 10 févr. 2011 à 11:00
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 21 févr. 2011 à 17:17
Bonjour,

Je cherche à faire une formule qui soit du type:

Si cellule O4 contient mot1 ou mot2 ou mot3 alors afficher resultat1
sinon
si cellule O4 contient mot5 ou mot6 ou mot7 alors afficher resultat2
sinon
si cellule O4 contient mot9 ou mot10 ou mot11 alors afficher resultat3
sinon afficher "a vérifier"

Merci beaucoup de votre aide

J'ai cherché par moi meme mais je galère !!
(excel 2007 FRANCAIS)
A voir également:

30 réponses

melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 févr. 2011 à 11:13
Bonjour,

ta formule :

=si(Ou(O4="mot1";O4="mot2";O4="mot3")=vrai;"resultat1";si(Ou(O4="mot5";O4="mot6";O4="mot7")=vrai;"resultat1";si(ou(O4="mot9";O4="mot10";O4="mot11")=vrai;"resultat1";"a verifier")))
2
Melanie: Merci ça fonctionne sauf que !!

Sauf que dans la cellule o4 de référence il n'y a pas qu'un seul mot mais plusieurs . Excel ne doit pas s'attendre a trouver uniquement "mot1", "mot2"... Mais une phrase contenant "mot1" ou "mot2"...

Merci beauco^p
0
masirkkisoi Messages postés 97 Date d'inscription vendredi 14 janvier 2011 Statut Membre Dernière intervention 3 janvier 2013 2
10 févr. 2011 à 11:10
Salut !

je pense que c'est quelque chose qui ressemble à ça :
(j'appelle ta cellule 04 "A4")

=SI((A4="mot1")OU(A4="mot2")OU(A4="mot3");"resultat1";SI((A4="mot5")OU(A4="mot6")OU(A4="mot7");"resultat2";SI((A4="mot9")OU(A4="mot10")OU(A4="mot11");"resultat3";"a vérifier")))

je ne suis pas sure de la syntaxe des OU.
0
Hello et merci !

ça ne fonctionne pas, excel propose comme correction des * avant chaque "ou"

=SI((O4="mot1")*OU(O4="mot2")*OU(O4="mot3");"resultat1";SI((O4="mot5")*OU(O4="mot6")*OU(O4="mot7");"resultat2";SI((O4="mot9")*OU(O4="mot10")*OU(O4="mot11");"resultat3";"a vérifier")))

Mais si les mots recherchés sont présent le résultat 1 2 ou 3 ne s'affichent pas, mais s'affiche "a vérifier" !

Donc ça ne donne pas le resultat escompté

Merci d'avance
0
A Melanie: Merci ça fonctionne sauf que !!

Sauf que dans la cellule o4 de référence il n'y a pas qu'un seul mot mais plusieurs . Excel ne doit pas s'attendre a trouver uniquement "mot1", "mot2"... Mais une phrase contenant "mot1" ou "mot2"...

Merci beauco^p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 févr. 2011 à 11:45
Bonjour,


=si(Ou(si(esterreur(trouve("mot1";O4;1));"";1)=1;si(esterreur(trouve("mot2";O4;1));"";1)=1;si(esterreur(trouve("mot3";O4;1));"";1)=1)=vrai;"resultat1";si(Ou(si(esterreur(trouve("mot5";O4;1));"";1)=1;si(esterreur(trouve("mot6";O4;1));"";1)=1;si(esterreur(trouve("mot7";O4;1));"";1)=1)=vrai;"resultat1";si(ou(si(esterreur(trouve("mot9";O4;1));"";1)=1;si(esterreur(trouve("mot10";O4;1));"";1)=1;si(esterreur(trouve("mot11";O4;1));"";1)=1)=vrai;"resultat1";"a verifier")))
0
Coucou,

Merci ça fonctionne !! mais nouveau problème :

j'ai ajouté pas mal de lignes (voir ci dessous) et maintenant Excel me met une boite d'erreur indiquant:
"Impossible d'entrer la formule spécifiée car elle utilise plus de niveaux d'imbrication que ne l'autorise le format de fichier actuel"

le format en question est du .xls.

Que puis je faire pour résoudre ce problème et allonger ma formule ?


Voici la formule, ou j'en suis (pas fini, il en manque) et c'est déjà trop long
=SI(OU(SI(ESTERREUR(TROUVE("misuse";O4;1));"";1)=1;
SI(ESTERREUR(TROUVE("quote";O4;1));"";1)=1;
SI(ESTERREUR(TROUVE("cab";O4;1));"";1)=1;
SI(ESTERREUR(TROUVE("trade";O4;1));"";1)=1)=VRAI;"Misuse";
SI(OU(SI(ESTERREUR(TROUVE("kci";O4;1));"";1)=1)=VRAI;"KCI";
SI(OU(SI(ESTERREUR(TROUVE("ntf";O4;1));"";1)=1)=VRAI;"NTF";
SI(OU(SI(ESTERREUR(TROUVE("ano";O4;1));"";1)=1;
SI(ESTERREUR(TROUVE("mismatch";O4;1));"";1)=1)=VRAI;"Anomaly at Repair Line";

SI(OU(SI(ESTERREUR(TROUVE("mot9";O4;1));"";1)=1;SI(ESTERREUR(TROUVE("mot10";O4;1));"";1)=1;SI(ESTERREUR(TROUVE("mot11";O4;1));"";1)=1)=VRAI;"resultat1";
"a verifier"))))

Merci beaucoup
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
10 févr. 2011 à 12:41
bonjour,

excusez l'incruste
debut de la formule:
=SI(NB.SI(A2;"*mot1*")+NB.SI(A2;"*mot2*")+NB.SI(A2;"*mot3*")>0;"résultat1";Si(NB.SI(A2;"*mot5*")+NB.SI(A2;"*mot6*")+NB.SI(A2;"*mot7*")>0;"rés.....etc..;"à verifier")))


j'essaie un autre truc peut-^tre que...
0
Hello Michel, j'ai essayé ton idée:

=SI(NB.SI(O2;"*cab*")+NB.SI(O2;"*misuse*")+NB.SI(O2;"*trade*")>0;"misuse";Si(NB.SI(O2;"*def*")+NB.SI(O2;"*col>0;"Defective Collect ";"à verifier")))
ça ne fonctionne pas chez moi. (erreur dans la formule et je ne suis malheuresement pas suffisemment bon pour savoir ou est le problème).
Petit rappel, dans la cellule o4 de référence il n'y a pas qu'un seul mot mais plusieurs . Excel ne doit pas s'attendre a trouver uniquement "mot1", "mot2"... Mais une phrase contenant "mot1" ou "mot2"...



Si tu jettes un oeil à mon message juste au dessus du tien, la formule que j'ai insérée (avec l'aide de Melanie) fonctionne mais elle n'est pas supportée par excel car elle devient trop longue. (et je dois encore en rajouter)

Comment l'optimiser ou faire différemment pour que je puisse l'allonger davantage ?

Merci beaucoup en tout cas
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 févr. 2011 à 13:48
il manque une aprenthèse à ta formule, essaie ca :
=SI(NB.SI(O2;"*cab*")+NB.SI(O2;"*misuse*")+NB.SI(O2;"*trade*")>0;"misuse";Si(NB.SI(O2;"*def*")+NB.SI(O2;"*col)>0;"Defective Collect ";"à verifier")))
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 févr. 2011 à 13:36
Malheureusement, tu ne peux rien faire.
essaie l'astuce de michel pour voir :
=SI(NB.SI(A2;"*mot1*")+NB.SI(A2;"*mot2*")+NB.SI(A2;"*mot3*")>0;"résultat1";Si(NB.SI(A2;"*mot5*")+NB.SI(A2;"*mot6*")+NB.SI(A2;"*mot7*")>0;"rés.....etc..;"à verifier")))

Sinon, il faudrait exprimer ton beosin pour qu'on trouve une autre solution.
0
Je réessaye l'astuce de Michel,

Je tappe ça
=SI(NB.SI(O2;"*misuse*")+NB.SI(O2;"*trade*")+NB.SI(O2;"*quote*")>0;"Misuse";
Si(NB.SI(O2;"*def*")+NB.SI(O2;"*col*")>0;"Defective Collect;"a verifier")))
ça m'indique qu'il y a une erreur dans la formule

une idée ?

Merci beaucoup Mélanie
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 févr. 2011 à 13:49
Il manque une formule dans celle que tu as écrite, essaie ca :

=SI(NB.SI(O2;"*cab*")+NB.SI(O2;"*misuse*")+NB.SI(O2;"*trade*")>0;"misuse";Si(NB.SI(O2;"*def*")+NB.SI(O2;"*col)>0;"Defective Collect ";"à verifier")))
0
ça indique "defective collect" dans tous les cas, y compris s'il y a pas les éléments requis sur les lignes (def ou col).

Je peux loader un fichier .xls sur ce forum pour que visuellement ce soit plus clair pour vous ?
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 févr. 2011 à 14:07
Je pense que ce sera le mieux et indique tes règles clairement.
ci-joint.fr pour télécharger ton fichier.
0
OK en fait ça fonctionne tel que ci dessous grâce à votre aide précieuse :

= SI(NB.SI(O3;"*kci*")>0;"KCI";
SI(NB.SI(O3;"*NTF*")>0;"NTF";
SI(NB.SI(O3;"*ano*")+NB.SI(O3;"*mismatch*")>0;"Anomaly at Repair Line";
SI(NB.SI(O3;"*cab*")+NB.SI(O3;"*misuse*")+NB.SI(O3;"*quote*")+NB.SI(O3;"*trade*")+NB.SI(O3;"*mr*")>0;"misuse";
SI(NB.SI(O3;"*def*")>0;"Defective Collect";
SI(NB.SI(O3;"*short*")+NB.SI(O3;"*ets*")+NB.SI(O3;"*reactive*")+NB.SI(O3;"*delay*")+NB.SI(O3;"*eta*")>0;"Shortage at Repair Line";
SI(NB.SI(O3;"*complaint*")+NB.SI(O3;"*equivalence*")+NB.SI(O3;"*buyback*")+NB.SI(O3;"*elevation*")+NB.SI(O3;"*compensation*")+NB.SI(O3;"*cplt*")+NB.SI(O3;"*esca*")>0;"Complaints";
"à verifier"))


Nouvelle question !
Je voudrais rajouter à la ligne ci dessous :
si O2 contient sh et si (en même temps, et uniquement dans ce cas) K2 contient "condition sinéquanone" alors ok: indiquer comme pour le groupe ci dessous"Shortage at repair line

Endroit de la formule où je souhaite l'inclure (car ça concerne la même chose)
SI(NB.SI(O3;"*short*")+NB.SI(O3;"*ets*")+NB.SI(O3;"*reactive*")+NB.SI(O3;"*delay*")+NB.SI(O3;"*eta*")>0;"Shortage at Repair Line";



J'ai uploadé un extrait du fichier en question ici: (avec votre formule colonne Q)
http://www.cijoint.fr/cjlink.php?file=cj201102/cijIeApSDW.xls

Merci beaucoup !
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 févr. 2011 à 14:41
Coucou,

je en suis pas sure d'avoir bien compris ta demande mais ca devrait t'aider :
=si(et(nb.si(o2;"*sh*")>1;k2="condition sinéquanone")=vrai;"shortage at repair Line";"")
0
Je pense que tu as parfaitement compris ça m'a tout l'air d'être ça !!

Par contre on revient au problème de tout à l'heure:

"impossible d'entrer la formule spécifiée car elle utilise plus de niveaux d'imbrication que ne l'autorise le format de fichier actuel

j'en suis la et bloqué: (et j'en ai encore pas mal avec des conditions du type de la dernière que tu m'as gentiment fournie !!)

=SI(NB.SI(O2;"*kci*")>0;"KCI";
SI(NB.SI(O2;"*NTF*")>0;"NTF";
SI(NB.SI(O2;"*ano*")+NB.SI(O2;"*mismatch*")>0;"Anomaly at Repair Line";
SI(NB.SI(O2;"*cab*")+NB.SI(O2;"*misuse*")+NB.SI(O2;"*quote*")+NB.SI(O2;"*trade*")+NB.SI(O2;"*mr*")>0;"misuse";
SI(NB.SI(O2;"*def*")>0;"Defective Collect";
SI(NB.SI(O2;"*short*")+NB.SI(O2;"*ets*")+NB.SI(O2;"*reactive*")+NB.SI(O2;"*delay*")+NB.SI(O2;"*eta*")>0;"Shortage at Repair Line";
si(et(nb.si(o2;"*sh*")>1;k2="condition sinéquanone")=vrai;"shortage at repair Line";"")
SI(NB.SI(O2;"*complaint*")+NB.SI(O2;"*equivalence*")+NB.SI(O2;"*buyback*")+NB.SI(O2;"*elevation*")+NB.SI(O2;"*compensation*")+NB.SI(O2;"*cplt*")+NB.SI(O2;"*esca*")>0;"Complaints";
"à verifier"))


Merci encore ... !!
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 févr. 2011 à 15:28
j'ai compris ton besoin mais tu as beaucoup trop de paramètres pour le faire à l'aide d'une formule.
juste par curiosité tu cherches combien de mots?
0
Je sais pas trop, peut être encore une dizaine facilement.

Si je ne peux pas le faire avec une formule, comment puis je faire ?

Une macro enregistrée, faisant enchainant les filtres, si ça peut fonctionner ? ou autres .. !!

Merci !
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 févr. 2011 à 15:39
Reprends ton fichier et dans une autre feuille, mets moi le tableau suivant:
colonne a : tes mots recherchés
colonne b : ce qu'il doit t'afficher
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
10 févr. 2011 à 15:39
c faisable?
0
ok je vais essayer :)
0
http://www.cijoint.fr/cjlink.php?file=cj201102/cijMuIUDHP.xlsx

http://www.cijoint.fr/cjlink.php?file=cj201102/cijQIPlomt.xlsx

Voila les fichiers, dans l'un il ya le fichier dans lequel je dois travailler, un peu différent et plus complet que précédemment. (la formule est la pour remplir la colonne U, qui est remplie pour l'exemple)

Dans l'autre fichier, c'est les éléments a faire apparaitre avec les différentes conditions sinnéquanonnes.
Certaines cases sont vides, sous entendu aucune autre condition
(exemple ligne 27: tout ce qui est en statut trans et avec la lettre H colonne L doivent mentionner Collect issue)

Merciiii Mélanie !!
0
Est ce que tu as un feedback ?

Merci d'avance :)
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
11 févr. 2011 à 11:14
Pour l'isntant, non, je n'ai pas pu travailler sur ton fichier.
Je pense que je ne pourrais pas avant demain.
0
Pas de problèmes, merci de ta réponse, on en reparle tranquillement quand tu as eut le temps !

Bonne journée Mélanie !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
11 févr. 2011 à 12:17
Bonjour,
Excusez encore 1 fois l'incruste

j'essaie du VBA pour résoudre ton pb
dans ton tableau des conditions, s'agit-il de "OU" ou de "ET"
en effet
dans le post 24
tout ce qui est en statut trans et avec la lettre H colonne L doivent mentionner Collect issue)
dans tes premiers post, tu parles de telle condition OU telle condition?
c'est important pour l'algo

petit détail traduction de "à vérifier" en anglais ?
0
Hello Michel et merci de t'interresser à mon problème !

Pour répondre à ta question: dans le post ou je donne les 2 liens vers pièces jointes: lorsque dans le fichier avec les conditions, si plusieurs colonnes sont remplies, (et seulement dans ce cas) il faut que s'affiche le résultat lié.

Exemple:
&SI(ET(NB.SI(O3;"*sh*")>1;K3="RCV/HOLD/REPAIRED")=VRAI;"shortage at repair Line";"")

Sauf que dans le cas de la formule ci dessous, elle ne fonctionne pas, je ne sais pas pourquoi (peut être que je ne l'ai pas insérée correctement dans la formule globale ci dessou).

Pour essaye de contrer les limites d'excel j'ai concaténé les formules au lieu de les imbriquer (mais j'ai peut etre fait des erreurs aussi, n'hésitez pas à les pointer du doigt !!)


=SI(NB.SI(O3;"*kci*");"KCI";"")&SI(NB.SI(O3;"*NTF* ");"NTF";"")&SI(NB.SI(O3;"*ano*")+NB.SI(O3;"*misma tch*")>0;"Anomaly at Repair Line";"")&SI(NB.SI(O3;"*cab*")+NB.SI(O3;"*misuse*" )+NB.SI(O3;"*quote*")+NB.SI(O3;"*trade*")+NB.SI(O3 ;"*mr*")>0;"misuse";"")&SI(NB.SI(O3;"*def*")>0;"De fective Collect";"")&SI(NB.SI(O3;"*short*")+NB.SI(O3;"*ets *")+NB.SI(O3;"*reactive*")+NB.SI(O3;"*delay*")+NB. SI(O3;"*eta*")>0;"Shortage at Repair Line";"")&SI(ET(NB.SI(O3;"*sh*")>1;K3="RCV/HOLD/REPAIRED")=VRAI;"shortage at repair Line";"")&SI(NB.SI(O3;"*complaint*")+NB.SI(O3;"*eq uivalence*")+NB.SI(O3;"*buyback*")+NB.SI(O3;"*elev ation*")+NB.SI(O3;"*compensation*")+NB.SI(O3;"*cpl t*")+NB.SI(O3;"*esca*")>0;"Complaints";"")

Par ailleurs il manque à la fin: si, rien de toutes les conditions indiquées: alors marquer "a vérifier manuellement" (par exemple).

coté VBA, je suis aussi évidemment preneur !!

Encore merci à vous !!
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
11 févr. 2011 à 14:28
Bonjour,

J'ai posé ce fichier :
http://www.cijoint.fr/cjlink.php?file=cj201102/cijKPWNZWa.xls

Il contient une macro.
Pour marcher :
tu dois mettre une feuille chercher. tu peux modifier le nom, il faudra alors modifier la macro. Pour cela, Outils, macro, vba :

Sub cherche()

i = 2
Do While Cells(i, 15) <> "" 'va balayer ta colonne O
b = 2
Do While Sheets("cherche").Cells(b, 1) <> "" 'va balayer la feuille cherche, modifie cherche par ton nom de feuille si tu le modifies
a = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 1) & "*")
If Sheets("cherche").Cells(b, 2) = "" Then
If a >= 1 Then
Cells(i, 22) = Sheets("cherche").Cells(b, 4)
b = 1000

End If
Else
If Sheets("cherche").Cells(b, 3) = "" Then
c = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 2) & "*")
If a >= 1 And c >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
Else
d = Application.WorksheetFunction.CountIf(Cells(i, 15), "*" & Sheets("cherche").Cells(b, 3) & "*")
If a >= 1 And c >= 1 And d >= 1 Then
Cells(a, 22) = Sheets("cherche").Cells(b, 4)
b = 1000
End If
End If
End If




b = b + 1

Loop
i = i + 1
Loop
End Sub
0
melanie1324 Messages postés 1505 Date d'inscription vendredi 25 mai 2007 Statut Membre Dernière intervention 31 janvier 2018 154
11 févr. 2011 à 14:36
Pour l'instant, ma macro copie les resultats dans la colonne à droite que tu as mise en jaune.
Si ca te convient :
remplaces partout :
cells(i,22) par cells(i,21).
0
Coucou !!

Merci beaucoup !!

J'ai encore une question, j'ai ajouté des lignes du coté des conditions comme du côté du fichier principal mais par exemple, je n'ai aucune "Delivery issue" ni "Collecte issue" (40 réponses normalement juste pour Collecte issue).

Voila le fichier !

http://www.cijoint.fr/cjlink.php?file=cj201102/cij3oFuxPt.xls

Merci beaucoup !!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 11/02/2011 à 17:24
Re à tous
A la bourre, mais d'autres occupations...
Ci joint maquette
http://www.cijoint.fr/cjlink.php?file=cj201102/cijevmL3b5.xlsm

J'ai réuni les 2 feuilles dans un seul classeur pour faciliter l'étude on pourra le faire sans grosse difficulté (utilisation de variables tableaux) si tu le désires mais...

la restitution se fait conne W pour comparer avec l'original: il y a quelques discordances que je vais regarder...


Michel
0