Fonction SI et OU imbriquées avec une notion contient

Bonjour à tous,

Je suis débutant en fonction excel.
N’ayant trouvé que partiellement une réponse, je vous soumets ma demande.

je voudrais trouver la formule permettant d’afficher un résultat dans une cellule selon le contenu partiel d’une autre cellule.

Si A1 contient les chiffres 1234 consécutifs, la cellule B2 affiche ABC sinon B2 reste vide.
ex : la cellule A1 = AZE1234, la cellule B2 doit afficher ABC
J’ai saisi dans la cellule B2 la formule suivante qui fonctionne :
=SI(ESTNUM(CHERCHE(“1234”;A2));“ABC”;"")

Cela se complique pour moi lorsque je veux imbriquer la fonction OU.

Si la cellule A1 contient 1234 , afficher ABC dans B2 “OU” si A1 contient 5678 afficher XYZ toujours en B2 (si ni 1234 ni 5678 ne sont en A1, B2 reste vide).

J’ai donc rajouté la fonction OU mais çela ne fonctionne pas.

=SI(OU(ESTNUM(CHERCHE(“1234”;A2);“ABC”);SI(ESTNUM(CHERCHE(“5678”;A2);“XYZ”;"")))

J’ai le message suivant: “vous avez tapé un nombre trop important d’arguments pour cette fonction”

Pouvez vous m’indiquer l’erreur ET surtout me l’expliquer ?

Deuxième problème, si A1 devait contenir 1234 et 5678, quel serait le résultat ?

Merci à vous :grinning:

Bonsoir @excel11,
Peux-tu nous fournir un fichier avec les exemples attendus.

@+
Cordialement.

Voici le fichier

fonction SI et OU imbriquées.xlsx (8,5 Ko)

par contre, il ne faut pas prendre en compte la cellule A1 mais A2 dans mon message initial.
Désolé de l’erreur

Re @excel11,

Dans ce cas, la fonction « OU » est inutile.

En « B2 »

=SI(ESTNUM(CHERCHE("1234";A2));"ABC";SI(ESTNUM(CHERCHE("5678";A2));"XYZ";""))

Et bien comme on cherche la valeur numérique dans la formule, et bien tu obtiendras soit ABC, soit XYZ.

Ton fichier en retour ICI==> excel11 V1.xlsx (12,0 Ko)

Cordialement.

1 « J'aime »

Merci mdo100, cela correspond à ce que je recherchais.

Pour la deuxième question, j’ai rentré les deux valeurs 12345678 ou 56781234 en A2, il en ressort à chaque fois ABC en B2.

Je pense que la première condition (1234) de la formule étant trouvée, il affiche systématiquement le résultat de celle-ci.
Pour trouver XYZ, il m’a fallu laisser des espaces comme par exemple 1 23 4 5678.

Bonjour @excel11,

Voir cette nouvelle proposition, résultats en colonne “D” où “E” où “F”:

En “D2”

=SIERREUR(SI(CNUM(STXT(A2;4;4))=1234;"ABC";SI(CNUM(STXT(A2;4;4))=5678;"XYZ";SI(GAUCHE(A2;4)*1=1234;"ABC";SI(GAUCHE(A2;4)*1=5678;"XYZ";""))));"")

Fichier exemple joint ICI==> excel11 V2.xlsx (12,5 Ko)

J’ai utilisé la fonction “CNUM” dans la première partie de la formule et “*1” dans la seconde partie de la formule, cela revient au même puisque l’on cherche la valeur numérique de la donnée.

La formule peut s’écrire comme ça:

En “E2”

=SIERREUR(SI(CNUM(STXT(A2;4;4))=1234;"ABC";SI(CNUM(STXT(A2;4;4))=5678;"XYZ";SI(CNUM(GAUCHE(A2;4))=1234;"ABC";SI(CNUM(GAUCHE(A2;4))=5678;"XYZ";""))));"")

Ou encore comme ça:

En “F2”

=SIERREUR(SI(STXT(A2;4;4)*1=1234;"ABC";SI(STXT(A2;4;4)*1=5678;"XYZ";SI(GAUCHE(A2;4)*1=1234;"ABC";SI(GAUCHE(A2;4)*1=5678;"XYZ";""))));"")

Cordialement.

Bonjour mdo100,

effectivement, le nouveau fichier est mieux.

Par contre, les fonctions SIERREUR, CNUM, *1 ne me parlent pas.
Le ;" ") en fin de formule me surprend aussi pour le moment.
Je vais essayer de comprendre leur signification.

Merci

Bonne journée

Bonjour mdo100,

j’ai recherché et à peu près compris la signification des fonctions sierreur et cnum, stxt prises individuellement mais regroupées je ne comprends pas.

=SIERREUR(SI(CNUM(STXT(A2;4;4))=1234;“ABC”;SI(CNUM(STXT(A2;4;4))=5678;“XYZ”;SI(GAUCHE(A2;4)*1=1234;“ABC”;SI(GAUCHE(A2;4)*1=5678;“XYZ”;""))));"")

Je ne comprends pas non plus le (A2;4;4) particulièrement le 4;4, le (A2;4)*1 ni le rôle et le positionnement du ;"") en fin de formule.

Comment devrais-je lire (en français :grinning:) cette formule ?

Merci

Bonsoir @excel11,

Alors en Français :wink:

On va décomposer la formule.

Le SIERREUR va avec les guillemets en fin de formule, si il n’y a pas de valeur en “A2” alors cette fonction écrit “Vide” dans “D2”.

Tu peux essayer de mettre entre les guillemets “Pas de données” et donc à la place du vide, tu auras ( Pas de données ).

En ce qui concerne CNUM(STXT(A2;4;4))

En “A2” tu as écris AZE1234 pour l’utilisation dans la formule nous recherchons 1234
CNUM(STXT(A2;4;4)) veut dire que CNUM la valeur numérique STXT(A2;4;4) représente le texte ou la référence à une cellule contenant le texte à extraire a partir du 4ème caractères sur 4 caractères, donc nous obtenons le nombre 1234

Enfin GAUCHE(A2;4)*1 veut dire exactement la même chose que l’explication ci-dessus.
A savoir nous recherchons le nombre 1234 ou 5678 extrait de AZE1234 ou AZE5678 multiplié *1 pour obtenir la valeur numérique.

Cela répond t-il à te questions :interrobang:

Cordialement.

Bonjour mdo100

Oui et non.
C’est plus clair sauf pour le *1, je ne comprends pas ce que tu veux dire par “multiplié *1 pour obtenir la valeur numérique”.
Est-ce parce que 1234 est considéré comme du texte de par sa position à gauche dans la cellule ?

En D5, j’ai retiré une partie de la formule ce qui donne =SIERREUR(SI(GAUCHE(A5;4)*1=1234;“ABC”;SI(GAUCHE(A5;4)*1=5678;“XYZ”;""));"") mais cela donne XYZ et affiche l’icone en forme de losange jaune avec le point d’exclamation. En cliquant sur la flèche, il est indiqué “formule incohérente”.

Peux-tu m’expliquer ?

Merci

Bonjour @excel11,

Pour moi en « D5 » la formule:

=SIERREUR(SI(GAUCHE(A5;4)*1=1234;"ABC";SI(GAUCHE(A5;4)*1=5678;"XYZ";""));"")
me donne bien XYZ.

Tu peux l’écrire aussi comme ça.

=SIERREUR(SI(CNUM(GAUCHE(A5;4))=1234;"ABC";SI(CNUM(GAUCHE(A5;4))=5678;"XYZ";""));"")

Oui, si tu écris =GAUCHE(A5;4) tu verras que le résultat s’écrit à gauche de la cellule, ce qui veut dire que 5678 est du texte, donc pour avoir sa valeur numérique soit tu le *1, =GAUCHE(A5;4)*1, soit tu écris =CNUM(GAUCHE(A5;4)) et là tu verras que le résultat s’écrit à droite dans la cellule, ce qui veut dire que son format est numérique.

Est-ce plus clair maintenant ! :thinking:

Cordialement.

Oui, pour le moment.

Je suis en train de faire des essais en rajoutant la fonction “ET” mais ca n’est pas concluant.

Si je ne trouve pas, je joindrais un fichier.

Merci