En fait, je n’arrive pas à voir comment je peux organiser une « recherchev » un peu particulière, de telle sorte que si la valeur cherchée égale à une valeur précise "nnnn" je change de colonne index pour faire la recherche en fonction de la bonne valeur.
Par exemple:
Un code article français a un code data 1
Un code article chinois a un code data 2 et vu que cet aricle a été livré par un français dans ma base de donnée j'ai un data1. Or moi je cherche à voir le code chinois!
donc comment faire pour récupérer le pays qui correspond au bon code?
En fait, je n'arrive pas à comprendre ce qu elle fait ta formule? Peux tu s il te plait me l expliquer avec des commentaires?
Qu'est ce que tu veux dire par "Rendre cette formule matricielle" et comment?
Lorsque je l'adopte à mon fichier, j'ai une erreur de valeur !
Si tu ne veux pas passer par une formule Matricielle tu peux utiliser en C14 a étirer vers le bas :
Code:
=SI(NON(ESTERREUR(RECHERCHEV(A14;schema!$A$2:$E$6;4;FAUX)));RECHERCHEV(A14;schema!$A$2:$E$6;4;FAUX);INDEX(schema!D:D;EQUIV('table à remplir'!A14;schema!E:E;0)))
ici on lance la rechercheV() si elle n'est pas en erreur et si elle est en ereur on se sert de la fonction INDEX(EQUIV()) qui fonction pratiquement comme la rechercheV mais la valeur a trouver peut se situer a droite
A la base je voulais écrire Mettre cette formule ou un truc dans le genre.
Une formule matricielle, c'est pas compliqué, après avoir finit de la taper (tu n'as pas appuyé encore sur ENTREE), tu appuies sur CTRL + MAJ (juste au dessus de CTRL) + ENTREE simultanément. Tu auras alors le résultat à la place de #VALEUR!.
Pour ce qui est du fonctionnement :
INDEX(#plage; #ligne ; #colonne) renvoie la valeur situé à l'intersection de la #ligne et de la #colonne de la #plage. S'il n'y a qu'une seule ligne ou une seule colonne, l'argument correspondant peut etre omis (ici j'ai omis colonne).
Ensuite EQUIV est une fonction de recherche. Elle se présente comme ceci :
EQUIV(#valeur ; #plage ;#type) Elle renvoie l'ordre de la #valeur dans la #plage. Le #type va permettre de sélectionner pa valeur inf, sup ou égales.
Donc ici, INDEX(schemaD2: D6;EQUIV(A14;...)) va permettre de chercher la valeur en A14 dans la plage à définir et de renvoyer la valeur correspondante de la plage schema!D2: D6.
Pour définir la plage, j'utilise la fonction SUBSTITUE() qui va remplacer les "xx" par des zéros dans la plage de code DATA1
(d'ailleurs tu n'en as pas besoin si tu supprimes les "xx").
(J'ai émis l'hypothèse qu'aucun code n'est nul).
Puis j'ai sommé cette plage de code ainsi obtenue avec la plage DATA12. Ceci consitue la plage de recherche.
(deuxième hypothèse, il n'y a pas à la fois un code DATA1 et un code DATA12 sur la même ligne.)
Je me permet de revenir sur ce fil, car le code que j'ai dû utiliser hier impose que le fichier soit ouvert à chaque fois!! et dans mon cas c'est un peut génant (meme si on veut faire un filtre je dois l'ouvrir si non il y a un "#Valeur!" !!!
Comment faire pour eviter ceci?