Formule en fonction de texte (inclure et exclure)

Résolu
hadescedric Messages postés 38 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 12 avril 2024 - 12 avril 2024 à 09:18
danielc0 Messages postés 842 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 2 mai 2024 - 12 avril 2024 à 14:43

Bonjour,

Je cherche une formule qui me permettrait de donner un résultat suivant le texte qu'il contient ET ne contient pas.

Par exemple, en colonne A je peux avoir:

A
A-B
A-B-C
A-B-D
A-B-C-D
A-C
A-B-C-D-E-F
A-B-C-D-D

Je souhaiterais qu'en colonne B il y ait écrit

"pif" si j'ai A seulement

"paf" si j'ai A et B seulement

"boum" si j'ai A et C minimum sans D

"plouf" si j'ai A et D minimum

Merci pour votre aide !

A voir également:

2 réponses

danielc0 Messages postés 842 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 2 mai 2024 74
12 avril 2024 à 10:07

Bonjour,

Avec Excel 365 (si tu as une autre version, dis-le, c'est peut-être possible aussi) :

=LET(tbl;FRACTIONNER.TEXTE(A1;"-";);SI(A1="a";"pif";SI(ET(NBVAL(tbl)=2;INDEX(tbl;1)="a";INDEX(tbl;2)="b");"paf";SI(ET(ESTNUM(EQUIVX("a";tbl));ESTNUM(EQUIVX("c";tbl))*ESTNA(EQUIVX("d";tbl)));"boum";SI(ET(NBVAL(tbl)=2;INDEX(tbl;1)="a";INDEX(tbl;2)="b");"paf";SI(ET(ESTNUM(EQUIVX("a";tbl));ESTNUM(EQUIVX("d";tbl)));"plouf";""))))))

1
hadescedric Messages postés 38 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 12 avril 2024
Modifié le 12 avril 2024 à 11:47

J'ai effectivement 365, j'ai oublié de préciser. Merci pour ta formule ça fonctionne parfaitement !!! Ce qui est dommage c'est que je n'y comprends rien et que je ne saurai le modifier si besoin de rajouter un critère ...

0
danielc0 Messages postés 842 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 2 mai 2024 74 > hadescedric Messages postés 38 Date d'inscription lundi 25 juin 2012 Statut Membre Dernière intervention 12 avril 2024
12 avril 2024 à 14:43

La formule s'articule autour de la fonction FRACTIONNER.TEXTE qui découpe la  chaîne de texte en autant de cellules :

La fonction LET me permet d'affecter la formule :

FRACTIONNER.TEXTE(A1;"-";)

A la valeur "tbl". J'emploie ensuite "tbl" pour éviter de répéter la formule.

Après, j'use les fonctions classiques. Pour savoir si "A" est dans cette matrice de cellules, j'utilise EQUIVX. Si la valeur est trouvée, cette fonction renvoie une valeur numérique et #NA! autrement etc.

Daniel

0
danielc0 Messages postés 842 Date d'inscription mardi 5 juin 2018 Statut Membre Dernière intervention 2 mai 2024 74
12 avril 2024 à 11:17

Sinon, pour Excel 2013 et versions postérieures :

=SI(A1="a";"pif";SI(ET(NBVAL(FILTRE.XML("<M><R>"&SUBSTITUE(A1;"-";"</R><R>")&"</R></M>";"//R"))=2;INDEX(FILTRE.XML("<M><R>"&SUBSTITUE(A1;"-";"</R><R>")&"</R></M>";"//R");1)="a";INDEX(FILTRE.XML("<M><R>"&SUBSTITUE(A1;"-";"</R><R>")&"</R></M>";"//R");2)="b");"paf";SI(ET(ESTNUM(EQUIVX("a";FILTRE.XML("<M><R>"&SUBSTITUE(A1;"-";"</R><R>")&"</R></M>";"//R")));ESTNUM(EQUIVX("c";FILTRE.XML("<M><R>"&SUBSTITUE(A1;"-";"</R><R>")&"</R></M>";"//R")))*ESTNA(EQUIVX("d";FILTRE.XML("<M><R>"&SUBSTITUE(A1;"-";"</R><R>")&"</R></M>";"//R"))));"boum";SI(ET(NBVAL(FILTRE.XML("<M><R>"&SUBSTITUE(A1;"-";"</R><R>")&"</R></M>";"//R"))=2;INDEX(FILTRE.XML("<M><R>"&SUBSTITUE(A1;"-";"</R><R>")&"</R></M>";"//R");1)="a";INDEX(FILTRE.XML("<M><R>"&SUBSTITUE(A1;"-";"</R><R>")&"</R></M>";"//R");2)="b");"paf";SI(ET(ESTNUM(EQUIVX("a";FILTRE.XML("<M><R>"&SUBSTITUE(A1;"-";"</R><R>")&"</R></M>";"//R")));ESTNUM(EQUIVX("d";FILTRE.XML("<M><R>"&SUBSTITUE(A1;"-";"</R><R>")&"</R></M>";"//R"))));"plouf";"")))))

Daniel


0