Recherchev particulière (gauche droite)!

shmider

XLDnaute Occasionnel
Bonjour.

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?

voir Pièce jointe s'il vous plait.

@+
 

Pièces jointes

  • test recherchev.xls
    20.5 KB · Affichages: 63
  • test recherchev.xls
    20.5 KB · Affichages: 63
  • test recherchev.xls
    20.5 KB · Affichages: 68

liloucmoi

XLDnaute Occasionnel
Re : Recherchev particulière (gauche droite)!

Hello Shmider,

Un petit essai : Rendre cette formule matricielle en C14 (valider par CTRL + ALT + ENTREE)
Code:
=INDEX(schema!$D$2:$D$6;EQUIV(A14;(SUBSTITUE(schema!$A$2:$A$6;"xx";0)+schema!$E$2:$E$6);0))

Xldment.
 

shmider

XLDnaute Occasionnel
Re : Recherchev particulière (gauche droite)!

Bonjour le forum, Bonjour liloucmoi ;)

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 !

@+ et merci beaucoup.
 

Jocelyn

XLDnaute Barbatruc
Re : Recherchev particulière (gauche droite)!

Bonjour le Forum,
Bonjour shmider, liloucmoi,

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

Jocelyn
 

Tibo

XLDnaute Barbatruc
Re : Recherchev particulière (gauche droite)!

Bonjour,

Une autre formule non matricielle en C14 :

Code:
=INDEX(schema!$D$2:$D$6;SI(NB.SI(schema!$A$2:$A$6;'table à remplir'!A14)>0;
EQUIV(A14;schema!$A$2:$A$6;0);EQUIV(A14;schema!$E$2:$E$6;0)))

à recopier vers le bas

@+

re,

une autre formule un peu plus courte :

Code:
=INDEX(schema!$D$2:$D$6;EQUIV(A14;DECALER(schema!$A$2:$A$6;;
(NB.SI(schema!$A$2:$A$6;'table à remplir'!A14)=0)*4););0)

@+
 
Dernière édition:

liloucmoi

XLDnaute Occasionnel
Re : Recherchev particulière (gauche droite)!

Hello Shmider,

Un petit essai : Rendre cette formule matricielle en C14 (valider par CTRL + ALT + ENTREE)
Code:
=INDEX(schema!$D$2:$D$6;EQUIV(A14;(SUBSTITUE(schema!$A$2:$A$6;"xx";0)+schema!$E$2:$E$6);0))

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.)

ex : DATA1 = {1;1;"xx";3;"xx"}
DATA12={"";"";2;"";2}
SUBSTITUE(DATA1) = {1;1;0;3;0}
SUBSTITUE(DATA1)+DATA12 = {1;1;2;3;2}

(Cette méthode n'est pas applicable aux plages d'à côté comprenant des lettres.)

Xldment.
 

shmider

XLDnaute Occasionnel
Re : Recherchev particulière (gauche droite)!

Re-Bonjour liloucmoi,
Bonjour Tibo,
Bonjour Jocelyn,
Re-Bonjour le forum, :p

C'est résolu, grace à la formule de tibo que j'arrive à comprendre et expliquer plus facilement !

Les autres sont nickel chrome aussi :eek:

Mais pour ne pas me faire coincer, je prefere celle que j'arriverai à interpreter correctement !

voilà tout ;)

je vous adore ;)

@+


Bonjour,

Une autre formule non matricielle en C14 :

Code:
=INDEX(schema!$D$2:$D$6;SI(NB.SI(schema!$A$2:$A$6;'table à remplir'!A14)>0;
EQUIV(A14;schema!$A$2:$A$6;0);EQUIV(A14;schema!$E$2:$E$6;0)))

à recopier vers le bas

@+

re,

une autre formule un peu plus courte :

Code:
=INDEX(schema!$D$2:$D$6;EQUIV(A14;DECALER(schema!$A$2:$A$6;;
(NB.SI(schema!$A$2:$A$6;'table à remplir'!A14)=0)*4););0)

@+
 

shmider

XLDnaute Occasionnel
Re : Recherchev particulière (gauche droite)!

:eek:Bonjour tout le monde,

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?

Note: je suis entrain de tester les autres codes?

@+ ;)
 

Discussions similaires

Réponses
22
Affichages
3 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 165
Messages
2 085 880
Membres
103 009
dernier inscrit
dede972