Alternatives aux imbrications SI et SUBSTITUE

Résolu/Fermé
ImaSTAT Messages postés 21 Date d'inscription vendredi 19 avril 2013 Statut Membre Dernière intervention 2 septembre 2016 - 17 févr. 2016 à 17:25
Raymond PENTIER Messages postés 58731 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 23 novembre 2024 - 18 févr. 2016 à 02:32
Bonjour,

J'aimerais savoir s'il existe un moyen plus élégant (sans utiliser VBA) de simplifier une formule d'imbrications SI, sachant qu'il existe une limite dans le nombre d'imbrications. Également, le nombre de cellules à retourner dans mon résultat est assez grand.

Voici mon cas:

J'ai divers valeurs étendues sur environ 600 colonnes (prenons la première ligne seulement, et 26 colonnes à titre d'exemple). En fonction de la valeur qui est en A1, je veux que B1 affiche séparé par des virgules un nombre X de valeurs parmi C1 à Z1. Le problème, c'est qu'en A1 il existe 200 possibilités (appelons les: conf1 à conf200).

Donc, si nous suivons la logique d'un SI imbriqué traditionnel, je mettrais en B1:

=SI(A1="conf1";C1&","&D1&","&R1;SI(A1="conf2";C1&","&H1;[...];SI(A1="conf200";C1&","&Y1&","&Z1&","&L1;""))[...])

Ça fait un peu gros à traîner, et je ne pense pas que Excel va supporter 200 imbrications. De plus, n'oubliez pas que pour chaque imbrication, il pourrait y avoir environ 600 résultat dépendamment de la condition de A1.

Est-ce qu'il existe une façon plus simple d'accomplir cela ?

Également, un peu le même principe pour la fonction SUBSTITUE. Dans mon exemple ci-haut, le résultat dans la cellule B1 doit éliminé tout accents qui se trouvaient dans les 600 autres cellules, et mettre le tout en majuscule.

Donc:

=MAJUSCULE(SUBSTITUE(SUBSTITUE(SUBSTITUE([...]SUBSTITUE(SI(A1="conf1";C1&","&D1&","&R1;SI(A1="conf2";C1&","&H1;[...];SI(A1="conf200";C1&","&Y1&","&Z1&","&L1;""))[...]);"É";"E");"È";"E")[...]))

Je peux me rendre à 9 imbrications de SUBSTITUE avant que Excel m'arrête. Présentement, la seule manière que j'ai trouvé c'est d'utiliser plus de cellules, et de référé la précédente à la suivante pour continuer les vérifications d'accents.

Des idées pour simplifié mes formules ?

Merci beaucoup de votre aide !
A voir également:

2 réponses

via55 Messages postés 14496 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 22 novembre 2024 2 735
17 févr. 2016 à 17:43
Bonjour

Peut être une alternative : faire un tableau (sur la même feuille ou un autre) avec en 1ere colonne config1, config 2 ... et en 2eme colonne =C1&","&D1&","&R1 etc
Ensuite la formule se réduit à une simple RECHERCHEV de A1 dans le tableau

Cdlmnt
Via

1
ImaSTAT Messages postés 21 Date d'inscription vendredi 19 avril 2013 Statut Membre Dernière intervention 2 septembre 2016
17 févr. 2016 à 19:10
Bonjour,

Ce n'est pas fou, mais je ne crois pas que RechercheV m'aidera dans ce cas-ci car je dois vérifier la valeur sur plusieurs lignes. Ça me demanderait de faire une feuille de vérification par ligne (selon ma compréhension). J'ai trouvé une solution par contre. Dans une nouvelle feuille, je fais comme tu dis et identifie en B tous les cellules qui doivent être récupérées en fonction de ce qui est en A (conf1, conf2, etc.) Voici comment j'ai procédé:

Feuille "principale" contient en A1 à A1000 le choix de conf par l'utilisateur (liste déroulante conf1 à conf200). Les cellules B1 à ZZ1000 contiennent des valeurs quelconques.

Feuille "validation" contient un tableau de A1 à B200 avec les cellules à recueillir selon la type de conf choisi (en A conf1, conf2, conf3 et en B les valeurs recueillis et séparés par des virgules provenant de la feuille principale).

Ensuite, dans la feuille "résultat" il suffit de chercher la valeur de principale!A1 dans le tableau validation!A1:B200 et retourner la valeur associée en validation!B1. On drag down ensuite sur 1000 lignes et je retrouve mes résultats. Je met le tout en majuscule.

Soit:

=MAJUSCULE(INDEX(validation!$A$1:$B$200;EQUIV(principale!A1;validation!$A$1:$A$1000;0);2))

Donc maintenant j'ai mes résultats finaux dans les cellules resultat!A1;A1000, il faut maintenant que je trouve un moyen de remplacer tous les accents dans ces dernières cellules, si possible sans avoir à utiliser plusieurs colonnes avec des imbrications de SUBSTITUE.

Merci de ton aide
0