Rechercher : dans
Par :

[EXCEL] possible de faire 2 recherchev ?

Dernière réponse le 26 oct 2007 à 15:41:35 boeno, le 23 aoû 2006 à 10:44:41 
 Signaler ce message aux modérateurs

Bonjour,
en faite j'ai écris ca :

=SI(ESTERREUR(RECHERCHEV($A5;[nomenfants.xls]Feuil1!$B4:$B4;­0;FAUX)=$A5);DATE([nomenfants.xls]Feuil1!$F4;[nomenfants.xls­]Feuil1!$G4;[nomenfants.xls]Feuil1!$H4);"")

j'aimerai savoir si c'est possible de mettre deux recherchev dans le SI pour verifier que le résultat du premier est correct ...

merci d'avance
boeno

1

gbinforme, le 24 aoû 2006 à 11:02:17

Bonjour

il est effectivement possible de mettre plusieurs recherchev,
mais je crois que tu n'utilises pas la bonne fonction.

SI(ESTERREUR(RECHERCHEV($A5;[nomenfants.xls]Feuil1!$B4:$B4;0­;FAUX)=$A5)

peut s'écrire : SI([nomenfants.xls]Feuil1!$B4=$A5)
car recherchev est une fonction qui recherche sur une plage,
et tu ne l'utilises que sur une cellule.

ai-je compris ?

toujours zen

Répondre à gbinforme

2

boeno, le 25 aoû 2006 à 10:00:31

Et bien en faite j'aimerai juste savoir si on peut faire deux recherche à la suite .. il me manque juste la synthaxe . en faite j'aimerai prendre en compte le resultat des deux recherche pour afficher le resultat final

Répondre à boeno

3

gbinforme, le 25 aoû 2006 à 17:30:18

Bonjour

et bien en faite j'aimerai juste savoir si on peut faire deux recherche à la suite

J'ai bien compris que tu veux absolument utiliser recherchev,
même si cela ne sert apparemment à rien, comme j'ai dit.

Alors tu peux en empiler plusieurs, il suffit de "concatener" :

= RECHERCHEV($A5;[nomenfants.xls]Feuil1!$B4:$B40;0;FAUX)&RECHERCHEV($A5;[nomenfants.xls]Feuil2!$B4:$B40;0;FAUX)&RECHERCHEV($A5;[nomenfants.xls]Feuil3!$B4:$B40;0;FAUX)(

c'est le caractère "&" qui concatène les résultats.

Tu peux aussi bien sûr, auparavent, contrôler le résultat : SI(ESTERREUR(...
et tu nous informes de la formule obtenue pour que j'arrive à comprendre le motif.

Bon courage

toujours zen

Répondre à gbinforme

4

boeno, le 28 aoû 2006 à 12:24:42

En faite j'ai une liste de nom et prenom dans un premier tableau .
genre en A j'ai les matricule, en B le nom et en C le prénom ..

dans un autre tableau j'ai quasiment la meme chose sauf qu'ne plus j'ai la date de naissance de chaque personne.

Le probleme est que dans le premier tableau c'est sous cette forme:

colonne A colonne B colonne C

0001 TOTO Albert
0001 Henry
0002 TATA Jean
0002 Frederic
0002 Magali
0002 Jerome

en faite j'ai le nom de l'enfant qui apparait sous celui de son père (ou mère).
Donc dans l'exemple Henry est le fils de Albert TOTO et Jean,Frederic,Magali et Jerome sont les enfants de Jean TATA

le deuxieme tableau (ou il y a les dates de naissances) est sous cette forme:

colonneA colonneB colonneC colonneD

0001 TOTO Henry 27/01/1992
0002 TATA Frederic 15/05/1972
0002 TATA Magali 17/10/1979
0002 TATA Jerome 09/02/2000


et moi j'aimerai rajouter les dates de naissances sur le premiere tableau pour que ca deviennent :

colonneA colonneB colonneC colonneD

0001 TOTO Albert
0001 Henry 27/01/1992
0002 TATA Jean
0002 Frederic 15/05/1972
0002 Magali 17/10/1979
0002 Jerome 09/02/2000

si vous avez une idée depuis vendredi je galère un peu, faut t'il mieux utiliser les fonctions ou faire un macros ... :s

merci d'avance
Boeno

Répondre à boeno

5

gbinforme, le 28 aoû 2006 à 18:15:16

Bonjour

Si tu pouvais nous mettre un exemple sur : http://cjoint.com/

et nous donner l'adresse résultante, ce serai plus simple.


toujours zen

Répondre à gbinforme

6

JvDo, le 1 sep 2006 à 22:18:55

Bonsoir,

une proposition en cellule D2 :

=SI(SOMMEPROD(($H$2:$H$23=A2)*($J$2:$J$23=C2))=1;INDEX($K$2:­$K$23;SOMMEPROD(($H$2:$H$23=A2)*($J$2:$J$23=C2)*(LIGNE($J$2:­$J$23)-1)));"")
les données sont en A2:C7, les dates rapatriées seront en D2:D7, la base "date de naissance" est en H2:K23

cordialement

Répondre à JvDo

7

guilders, le 25 oct 2007 à 10:55:01

Bonjour,
Existe-t-il une formule permettant de tester plusieurs recherchev et s'arrêter à la première qui renvoie un résultat ?
Je recherche dans une table au format base de données un résultat qui dépend de plusieurs conditions, que je dois vérifier dans un ordre de priorité. J'ai en tout 9 conditions, la 9e renvoyant tjs un résultat.
Pour le moment ma formule fait ceci: SI(ESTNUM(RECHERCHEV(1econdition)),1econdition;SI(ESTNUM(REC­HERCHEV(2econdition)),2econdition;....
Cela fonctionne, bien que ça fasse une formule à rallonge, mais je ne sais pq au-delà de la 7e condition, excel n'accepte plus la formule (bien qu'elle ne soit pas trop longue).
Je pourrais diviser ma longue formule en deux et ensuite retester dans une 3e colonne si la 1e formule donne un resultat sinon prendre celui de la 2e colonne mais cela me fait en tout 3 colonnes au lieu de 1 et je n'ai pas envie de jouer avec 2 colonnes cachées.
J'espère avoir été clair, si qqun a une meilleur idée?
Merci.

Répondre à guilders

8

gbinforme, le 25 oct 2007 à 19:02:34

Bonjour

mais je ne sais pq au-delà de la 7e condition,

Tout simplement parce que Excel n'accepte que 7 niveaux de fonctions enfin, du moins dans les versions jusqu'à 2003 car la récente version 2007 en accepte 84.

Sans utiliser d'autres colonnes tu peux scinder virtuellement ta formule en deux paquets, c'est-à-dire qu'au lieu d'empiler linéairement tes conditions tu termines tes niveaux et tu en reprends une autre série dans la même formule.

Personnellement, j'essaie de concevoir mon classeur de façon à éviter ce problème car de grandes formules alourdissent le classeur et diminuent fortement sa réactivité en raison de la lourdeur des calculs.

Cependant il n'est pas toujours facile d'avoir le temps de simplifier...


toujours zen

Répondre à gbinforme

9

 guilders, le 26 oct 2007 à 15:41:35

Bonjour,

Merci pour ta réponse.

Peux me donner plus d'info sur la manière de procéder ?

Voici actuellement ma formule, répartie dans 3 colonnes:

1e colonne:
=IF(ISNUMBER(VLOOKUP($A$2&D7&"A",output!$H:$N,7,FALSE)),VLOOKUP($A$2&D7&"A",output!$H:$N,7,FALSE),IF(ISNUMBER(VLOOKUP($A$2&D7&"T",output!$H:$N,7,FALSE)),VLOOKUP($A$2&D7&"T",output!$H:$N,7,FALSE),IF(ISNUMBER(VLOOKUP($A$2&E7&"A",output!$H:$N,7,FALSE)),VLOOKUP($A$2&E7&"A",output!$H:$N,7,FALSE),IF(ISNUMBER(VLOOKUP($A$2&E7&"T",output!$H:$N,7,FALSE)),VLOOKUP($A$2&E7&"T",output!$H:$N,7,FALSE),IF(ISNUMBER(VLOOKUP($D$2&D7&"A",output!$H:$N,7,FALSE)),VLOOKUP($D$2&D7&"A",output!$H:$N,7,FALSE),IF(ISNUMBER(VLOOKUP($D$2&D7&"T",output!$H:$N,7,FALSE)),VLOOKUP($D$2&D7&"T",output!$H:$N,7,FALSE),))))))

2e colonne:
=IF(ISNUMBER(VLOOKUP($D$2&E7&"A",output!$H:$N,7,FALSE)),VLOOKUP($D$2&E7&"A",output!$H:$N,7,FALSE),IF(ISNUMBER(VLOOKUP($D$2&E7&"T",output!$H:$N,7,FALSE)),VLOOKUP($D$2&E7&"T",output!$H:$N,7,FALSE),))

3e colonne (qui affiche le résultat):
=IF(IF(F7<>0,F7,IF(G7<>0,G7,VLOOKUP("100"&D7&"A",output!$H:$N,7,FALSE)))<1,IF(F7<>0,F7,IF(G7<>0,G7,VLOOKUP("100"&D7&"A",output!$H:$N,7,FALSE)))*VLOOKUP("100"&D7&"A",output!$H:$N,7,FALSE),IF(F7<>0,F7,IF(G7<>0,G7,VLOOKUP("100"&D7&"A",output!$H:$N,7,FALSE))))

Répondre à guilders