SI imbriqué renvoi #VALEUR! sur Excel 2013

Bonjour,

Je suis désolé si un sujet similaire a déjà été posté mais je n'ai trouvé aucune réponse pertinente. Voilà mon soucis:

J'ai une colonne avec une centaine de Codes Tarifaires commençant soit par Cxxxxx, Gxxxx, OxxxBKG, OxxxEXP, Pxxxx, Lxxxx.

Je souhaite créer un nouvelle colonne dans laquelle figurera en face de chaque Code Tarifaire, sa catégorie, c'est à dire Corporate pour C, Group pour G, Booking.com pour Oxxx BKG, Expedia pour OxxxEXP, Public pour Pxxxx et Loyalty pour Lxxxx.

Travaillant sur la version 2013 d'Excel, je me suis aperçu que j'étais contraint d'utiliser des SI imbriqués. Ainsi ma formule ressemble à cela:

=SI(ET(TROUVE("O";E2;1);TROUVE("BKG";E2;1);"BOOKING");
SI(TROUVE("C";E2;0);"CORPO";
SI(TROUVE("L";E2;0);"LOYALTY";
SI(TROUVE("G";E2;0);"GROUP";
SI(TROUVE("P";E2;0);"PUBLIC";
SI(ET(TROUVE("O";E2;1);TROUVE("EXP";E2;1));"EXPEDIA"))))))

Dans chaque cellule, le résultat est le même: #VALEUR!. Or, j'ai vérifié, toutes mes formules fonctionne individuellement...

Vous m'avez débugger déjà tellement de fois, je vous remercie par avance pour vos réponses.

Toto Le Stagiaire

Hello,

Je dirais que tu as mal refermé une parenthèse. Tu n'as pas fermé le ET au bon endroit :

=SI(ET(TROUVE("O";E2;1);TROUVE("BKG";E2;1));"BOOKING";
SI(TROUVE("C";E2;0);"CORPO";
SI(TROUVE("L";E2;0);"LOYALTY";
SI(TROUVE("G";E2;0);"GROUP";
SI(TROUVE("P";E2;0);"PUBLIC";
SI(ET(TROUVE("O";E2;1);TROUVE("EXP";E2;1));"EXPEDIA"))))))

Bonjour,

Merci pour votre réponse. Mais maintenant, il me renvoi soit BOOKING pour les OxxxBKG (donc très bien), soit #VALEUR! pour les autres. Il a l'air de prendre en compte seulement le premier argument, pas les autres :/.

Vous auriez une explication ?

Merci.

Toto Le Stagiaire

Bonjour,

S'il était possible d'avoir un extrait du fichier, avec des données représentatives mais non confidentielles, ça serait plus simple.

Bonjour à tous,

une alternative aux Si() :

=CHOISIR(EQUIV(SI(GAUCHE(A2;1)="O";DROITE(A2;3);GAUCHE(A2;1));{"C";"G";"BKG";"EXP";"P";"L"};0);"Corporate";"Group";"Booking.com";"Expedia";"Public";"Loyalty")

Tu n'aurais pas des espaces devant tes données des fois ?
eric

Voici l'extrait du fichier. Merci pour votre temps.

eriiic:

J'ai essayé votre formule, mais Excel me renvoi Corporate dans chaque cellule.

Et je n'ai pas d'espace avant mes données. En quoi cela aurait un impact sur les formules/données ?

Merci.

Hello,

En fait, la fonction TROUVE renvoie un numéro si elle trouve une correspondance, et un message d'erreur sinon. Donc quand la 1ère condition du SI est trouvée, super, ça fonctionne, sinon on se retrouve avec un message d'erreur.

Une des idées (il y en certainement d'autres) pourrait être d'imbriquer une fonction ESTERR, qui teste si le résultat d'une fonction est une erreur (et renvoie VRAI ou FAUX), et la fonction NON, pour inverser le résultat. Bref, ça donnerait ça :

=SI(NON(ESTERR(TROUVE("BKG";B2;1)));"BOOKING";SI(NON(ESTERR(TROUVE("C";B2;1)));"CORPO";SI(NON(ESTERR(TROUVE("L";B2;1)));"LOYALTY";SI(NON(ESTERR(TROUVE("G";B2;1)));"GROUP";SI(NON(ESTERR(TROUVE("P";B2;1)));"PUBLIC";SI(NON(ESTERR(TROUVE("EXP";B2;1)));"EXPEDIA";"PB"))))))

Mais il y a peut-être plus simple.

Bonjour

Je suis encore en train d'essayer de comprendre ce qu'il faut faire ?

=SI(ET(TROUVE("O";E2;1);TROUVE("BKG";E2;1));"BOOKING" ..... pourquoi trouve "O" et aprés trouve "BKG ? on peut trouver un BKG sans O ?

J'ai viré les ET pour ma part. Je suis parti du principe que non.

eriiic: votre formule fonctionne en fait, j'étais en Manuel... Mais j'ai un problème sur les cellules qui commencent par "O". Merci tout de même de m'avoir aiguiller dans une bonne direction. Je vais continuer de creuser.

JoyeuxNoel: Votre formule marche parfaitement. J'avoue que j'imaginais une formule plus courte pour une si petite requête. Merci des explications sur la fonction TROUVE.

Xmenpl: Pour simplifier, je veux, dans une autre cellule, afficher une chaine de caractère en fonction de la première lettre d'une autre cellule de la même ligne. Or, pour la première lettre O, je souhaite afficher 2 résultats différents en fonction ce qui est après la lettre "O", sans avoir une position donnée.

Merci pour votre investissement.

Je laisse encore le sujet ouvert pour voir si quelqu'un a une solution plus simple.

La formule serait plus courte si tu avais une liste exhaustive des codes que tu peux trouver. Tu fais une table de correspondances et un simple rechercheV ou index+Equiv suffit.

Mais j'ai l'impression que ce n'est qu'un extrait et tu as déjà 46 codes différents...

Bien évidemment que tu as des pb avec les O.

Ma formule est correcte pour ce que tu as demandé, mais tu as des caractères non annoncés derrière "BKG" et "EXP", forcément ça marche moins bien.
Ca devient donc :

=CHOISIR(EQUIV(SI(GAUCHE(B2;1)="O";STXT(B2;5;3);GAUCHE(B2;1));{"C";"G";"BKG";"EXP";"P";"L"};0);"Corporate";"Group";"Booking.com";"Expedia";"Public";"Loyalty")

Edit : ah non, je viens de voir que tu as aussi des "BKG" et "EXP" en 5ème position au lieu de 4ème.
Et même un ORPHHRS dont on ne sait que faire
Recense donc tous les formats sans exception et on verra ce qui est faisable à ce moment là

Bien vu, j'ai également un code HRS dans ce fichier.

Merci pour votre aide je vais essayer de me débrouiller avec toutes ces informations.

Il fallait lire "des "BKG" et "EXP" en 7ème position au lieu de 5ème", tu avais corrigé de toi même je pense

Rechercher des sujets similaires à "imbrique renvoi valeur 2013"