XL 2010 table de correspondance : quand un texte contient certains caractères alors...

Caroline ;-))

XLDnaute Junior
Bonjour,

Je reçois des tableaux provenant de différentes personnes qui adoptent des libellés diverses pour des mêmes régions.

certaines écrivent "la réunion" (avec accent) ou "réunion" (sans le « la ») ou encore "REUNION" (majuscule) etc…

Mon objectif : harmoniser ces différentes sources : si 3 caractères sont contenus dans leur libellé, alors j’affiche mon libellé « correcte »

J’ai créé dans un onglet « nom_Ac », ma table de correspondance qui reprend dans les colonnes :
-Colonne F : le libellé « correcte », en tout cas celui que je souhaite afficher
-Colonne G : les 3 caractères qui peuvent distinguer chaque région (ces 3 caractères ne contiennent pas d’accent et sont uniques)

Mes tests :
-J’arrive à réaliser mon objectif quand il s’agit de rester sur un même onglet (voir l’onglet « nom_Ac »)
-Mais je n’arrive pas à le faire quand il s’agit d’onglet différent (ex : onglet 1)

J'ai déjà utilisé les formules avec :

SI et NB.SI
INDEX et EQUIV

Pouvez-vous m'aider ? Merci !
 

Pièces jointes

  • fichier_forum.xlsm
    19.7 KB · Affichages: 27

Caroline ;-))

XLDnaute Junior
Bonjour Dugenou, Bonjour Jocelyn,

Merci Jocelyn : ta formule fonctionne parfaitement. Merci beaucoup !
Mais pourrais-tu me donner quelques explications sur ta formule qui est bien complexe.
Ainsi, pourquoi prend-on le champ (Onglet1!$F$2:$F$37) car il s'agit de variable qui ne mentionne pas de nom de région, et également que réalise la fonction PETITE.VALEUR(SI(ESTNUM(CHERCHE ?

Si tu pouvais m'expliciter ta formule, ce serait super !

En tout cas, déjà un grand merci pour ta solution !
 

Jocelyn

XLDnaute Barbatruc
re,

Bon un essai d'explication

1) dans la formule la partie "Onglet1!$F$2:$F$37" est a remplacer par "nom_Ac!$F$2:$F$37" l'erreur est du a une mauvaise manipulation elle n'a pas d'importance dans l'exemple puisque la plage démarre en ligne 2 et fini en ligne 37 mais bon.

2) petite.valeur va servir à déterminer le numéro de ligne a prendre en compte pour renvoyer la valeur de "nom_Ac!$F$2:$F$37"

Donc :

=SIERREUR(INDEX(nom_Ac!$F$2:$F$37;PETITE.VALEUR(SI(ESTNUM(CHERCHE(nom_Ac!$G$2:$G$37;A2));LIGNE(nom_Ac!$F$2:$F$37)-1);1));"")

PETITE.VALEUR(SI(ESTNUM(CHERCHE(nom_Ac!$G$2:$G$37;A2));LIGNE(nom_Ac!$F$2:$F$37)-1);1)

on recherche une petite valeur dans les numéros de ligne "LIGNE(nom_Ac!$F$2:$F$37)-1 " en sachant que si l'on veut récupérer suivant ton exemple la valeur en "nom_Ac!$F$2" premier valeur de l'index le premeir numéro de ligne de la plage "LIGNE(nom_Ac!$F$2:$F$37)-1 " sera 2 donc nous ajoutons derriere "LIGNE(nom_Ac!$F$2:$F$37)-1"-1 si cette plage avait démarré en F3 nous aurions mis -2 etc.... en fin de petite.valeur le 1 permet de dire il faut la première petite.valeur

ensuite cette valeur ne sera prise que si ESTNUM(CHERCHE(nom_Ac!$G$2:$G$37;A2) on trouve une valeur de la plage nom_Ac!$G$2:$G$37 dans la cellule A2 si on la trouve cette valeur le renvoie sera numérique d'ou le ESTNUM donc si c'est la troisième valeur de la plage nom_Ac!$G$2:$G$37 qui est trouvée dans A2 la petite.valeur renverra le numéro de cette ligne soit 4 puisque la 3 ieme valeur se trouve sur la ligne 4 vu que la plage commence en ligne 2 donc LIGNE(nom_Ac!$F$2:$F$37)-1 = 4-1 =3 INDEX(nom_Ac!$F$2:$F$37 va donc renvoyer la 3 ième valeur de la plage nom_Ac!$F$2:$F$37

Voila j'espère que c'est a peut près clair sinon n'hésite pas

Cordialement
 

Statistiques des forums

Discussions
303 823
Messages
2 014 444
Membres
219 929
dernier inscrit
Driceros