Fonction rechercheh

Fermé
clem - 29 juin 2010 à 10:20
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 - 29 juin 2010 à 23:25
Bonjour,

J'utilise la fonction rechercheh sur excel 2003, je m'en sert pour recuperer des données sur un autre fichier, avec cette syntaxe :
=RECHERCHEH(1555;'[fichier_affaire.xls]feuil1'!$C$3:$G$6;4;0)
cette fonction marche correctement mais je voudrais maintenant m'en servir pour rechercher la meme chose sur toutes les feuilles de mon fichier

quelqu'un peut il m'aider?

A voir également:

6 réponses

Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
29 juin 2010 à 15:55
Bonjour clem.

Si j'ai à peu près compris, tu es dans la cellule B2 de la Feuil5 et tu veux lire la donnée placée à la quatrième (et dernière) ligne de la plage C3:G6 de la Feuil1, dans la colonne qui contient 1555 en ligne 3. C'est bien ça ?

Ensuite tu veux en faire de même pour Feuil2, Feuil3 et Feuil4 : C'est ça ?

Le mieux est de donner à la plage C3:G6 le nom Plage1 et d'écrire ta formule
=RECHERCHEH(1555;Plage1;4;0) ;
dans Feuil2 tu fais de même, donner à la plage C3:G6 le nom Plage2 et ainsi de suite.

De retour dans Feuil5, tu utilises 4 cellules avec
=RECHERCHEH(1555;Plage1;4;0)
=RECHERCHEH(1555;Plage2;4;0)
=RECHERCHEH(1555;Plage3;4;0)
=RECHERCHEH(1555;Plage4;4;0)

ou encore en A2 tu insères une liste déroulante de cellule te permettant de choisir entre Plage1, Plage2, Plage3 et Plage4, avec une formule unique en B2 =RECHERCHEH(1555;A2;4;0)

Tu as bien compris qu'il n'y a pas moyen d'avoir d'un seul coup les résultats de la recherche sur plusieurs tableaux dispersés dans plusieurs feuilles ... Alors réfléchis : N'est-il pas possible de créer un tableau récapitulatif ?
1
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
29 juin 2010 à 16:04
Bonjour mon ami Raymond
peut être pourras tu combler une lacune dans mon bien maigre savoir, car pour moi il n'y a pas moyen d'utiliser un nom de plage d'un autre classeur?
Or il semble ici que si les feuilles sont toutes dans le même la rechercher et dans un autre.
Toutefois, je crois me souvenir d'avoir vu passer une solution dans ce cas, mais je ne suis sur de rien.
Bien amicalement
0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
29 juin 2010 à 23:14
Ouais ... je ne sais plus très bien, moi non plus, et je ne sais pas où chercher (sauf à faire appel à m@rina).
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
29 juin 2010 à 23:25
Re le forum

Raymond, j'ai posté juste un peu avant ton message une solution de recherche...

Mytå
0
Dans la partie tableau tu met la fonction "et(...;...;...)"
a la place des points tu indique le fichier la feuille et la zone pour chaque zone, je suppose que tu as une plage/zone par feuille donc en gros tu fais en fonction du nombre de feuilles.
ca donnera a peu près ca:

=RECHERCHEH(1555;et('[fichier_affaire.xls]feuil1'!$C$3:$G$6;'[fichier_affaire.xls]feuil2'!$C$3:$G$6; etc.);4;0)

j'ai pas tester mais ca devrait fonctionner tient nous au courant ;)
0
xkristi Messages postés 4264 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 19 août 2022 564
29 juin 2010 à 13:04
=RECHERCHEH(1555;'[fichier_affaire.xls]feuil1'!$C$3:$G$6;4;0)
Bonjour remplace la valeur 1555 par la cellule (ou est 1555) exemple en B2
et tu incrémentes


=SI(ESTERREUR(RECHERCHEV(B2;'[fichier_affaire.xls]feuil1'!$C$3:$G$6;4;FAUX));0; RECHERCHEV(B2;'[fichier_affaire.xls]feuil1'!$C$3:$G$6;4;FAUX))

J'utilise de préférence RECHERCHEV que RECHERCHEH



0
Raymond PENTIER Messages postés 58389 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 18 avril 2024 17 090
29 juin 2010 à 15:34
Je m'adresse à Slif.

Tu devrais tester, parce que les matrices fractionnées, ça ne plaît pas trop à Excel, et que la fonction ET n'est valide que dans des formules conditionnelles, ce qui n'est pas le cas ici.
Ton approche aurait pu s'organiser autour de la concaténation (&) ou du nom à attribuer à une plage discontinue ... mais sans garantie du résultat !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 394
Modifié par Vaucluse le 29/06/2010 à 15:50
Bonjour tous
.... et un bonjour particulier à xkristi qui nous revient efficacement de temps en temps, ce qui nous fait bien plaisir! :-)

La solution de xkristi fonctionne très bien, mais risque d'être un peu laborieuse si le nombre de feuilles à traiter est important.

On peut en voir une petite variante:
pour l'exemple à adapter:
_en colonne A d'une feuille résultat, à partir de A2:
_En texte,les noms des feuilles et les limites de champ:
(donc feuille1:, champ A3 G6, entrer, avec toute la ponctuation:

[Fichier_affaire.xls]feuille1!$A$3:$G$6

et créer ainsi une liste avec les noms correspondants aux feuilles

réserver la ligne 1 à partir de B pour entrer les valeurs à trouver.
en B2
=SI(ESTERREUR(RECHERCHEH(B$1;INDIRECT($A2);4;0);"";RECHERCHEV(B$1;INDIRECT($A2);4;0))
tirer cette formule sur la hauteur de la liste des classeurs et sur la longueur nécessaire aux valeurs à trouver.(attention à la position des blocages)
Ainsi, la valeur trouvée s'affichera sur la ligne correspondante à la feuille où elle se trouve.(et éventuellement plusieurs fois si valeur identiques dans feuilles différentes)

Toutefois:
*1°)cette solution ne fonctionne que si les deux classeurs sont ouverts (sauf erreur) sinon affiche #REF

*2°) pour simplifier la fonction INDIRECT il est préférable de disposer de nom de feuilles et de classeur sans blancs dans le texte, qui perturbent excel (exemple: Feuille_1 plutôt que Feuille 1)
Au cas où ce problème soit incontournable:
_ entrer les noms dans la liste A en plaçant une apostrophe derrière le nom de la feuille, juste avant le point d'exclamation
(exemple: [Fichier affaire.xls]Feuille1'!
_Compléter le code indirect avec au début une apostrophe entre guillemets, suivi de &
soit:
INDIRECT("'"&A2)
Bonne chance

Crdlmnt


Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
0
xkristi Messages postés 4264 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 19 août 2022 564
29 juin 2010 à 17:56
Bonjour à toi Vaucluse et à Raymond
toujours fidèles au poste à ce que je vois.

J'ai mal lu , je n'avais pas vu toutes les feuilles ...
Sans un bout de son fichier , difficile de savoir s'il y a une autre solution ! lol
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 942
Modifié par Mytå le 29/06/2010 à 23:23
Salut le forum

Les deux classeurs doivent être ouverts.

Recherche valeur de A2 sur les feuilles 1 à 4 du fichier Essai.xls
Dans la Plage A2:A6 et retourne la valeur de la Plage B2:B6

=SOMMEPROD(SOMME.SI(INDIRECT("[Essai.xls]Feuil"&LIGNE(1:4)&"!A2:A6");$A$2;INDIRECT("[Essai.xls]Feuil"&LIGNE(1:4)&"!B2:B6")))

Fonction aussi bien en RechercheV et RechercheH en adaptant les plages.

Mytå
Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
0