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
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
A voir également:
- Fonction rechercheh
- Fonction si et - Guide
- Fonction moyenne excel - Guide
- Fonction somme excel - Guide
- Fonction remplacer word - Guide
- Fonction ms dos non valide - Forum Windows 8 / 8.1
6 réponses
Raymond PENTIER
Messages postés
58808
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
13 janvier 2025
17 266
29 juin 2010 à 15:55
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 ?
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 ?
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 ;)
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 ;)
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
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
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
Raymond PENTIER
Messages postés
58808
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
13 janvier 2025
17 266
29 juin 2010 à 15:34
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 !
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 !
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 419
Modifié par Vaucluse le 29/06/2010 à 15:50
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?
.... 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?
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
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
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
Mytå
Messages postés
2973
Date d'inscription
mardi 20 janvier 2009
Statut
Contributeur
Dernière intervention
20 décembre 2016
950
Modifié par Mytå le 29/06/2010 à 23:23
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
Fonction aussi bien en RechercheV et RechercheH en adaptant les plages.
Mytå
Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
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)]
29 juin 2010 à 16:04
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
29 juin 2010 à 23:14
29 juin 2010 à 23:25
Raymond, j'ai posté juste un peu avant ton message une solution de recherche...
Mytå