Recherche sur plusieurs feuilles
Résolu
Melycea
-
Melycea -
Melycea -
Bonjour à tous,
Je travaille sur Excel 2007.
J'ai une feuille1 d'un classeur A dont la colonne D se remplit à partir d'une autre feuille1 d'un classeur B.
Et pour cela, j'ai la formule :
Mon problème est que maintenant, j'ai plusieurs feuilles dans le classeur B, qui ont toutes la même structure et donc je ne sais pas comment faire la recherche dans toutes ces feuilles???
Au cas où je n'aurai pas donner des explications assez claires, je joint mes deux classeurs.
Classeur A : http://cjoint.com/?AEdqsv6E5HS
Classeur B : http://cjoint.com/?AEdqtcTZK5Z
Merci d'avance
Je travaille sur Excel 2007.
J'ai une feuille1 d'un classeur A dont la colonne D se remplit à partir d'une autre feuille1 d'un classeur B.
Et pour cela, j'ai la formule :
=SIERREUR(INDEX([ClasseurB.xls]Feuil1!$C:$C;EQUIV(Feuil2!C2&C2;[ClasseurB.xls]Feuil1!$D:$D;0))&"";"")
Mon problème est que maintenant, j'ai plusieurs feuilles dans le classeur B, qui ont toutes la même structure et donc je ne sais pas comment faire la recherche dans toutes ces feuilles???
Au cas où je n'aurai pas donner des explications assez claires, je joint mes deux classeurs.
Classeur A : http://cjoint.com/?AEdqsv6E5HS
Classeur B : http://cjoint.com/?AEdqtcTZK5Z
Merci d'avance
A voir également:
- Recherche sur plusieurs feuilles
- Comment faire un livret avec des feuilles a4 - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
- Rechercher ou entrer l'adresse mm - recherche google - Guide
- Bruler des feuilles de laurier - Guide
5 réponses
Bonjour
ça risque d'étre coton en formule si vous avez beaucoup de feuille
essayez quand même
=SI(NB.SI([ClasseurB.xls]Feuil1!$D:$D;C2&C2)>0;(INDEX([ClasseurB.xls]Feuil1!$C:$C;EQUIV(C2&C2;[ClasseurB.xls]Feuil1!$D:$D;0));SI(NB.SI([ClasseurB.xls]Feuil2!$D:$D;C2&C2)>0;(INDEX([ClasseurB.xls]Feuil2!$C:$C;EQUIV(C2&C2;[ClasseurB.xls]Feuil2!$D:$D;0));SI(NB.SI([ClasseurB.xls]Feuil3!$D:$D;C2&C2)>0;(INDEX([ClasseurB.xls]Feuil3!$C:$C;EQUIV(C2&C2;[ClasseurB.xls]Feuil3!$D:$D;0));etc.... avec le nombre de parenthéses pour fermer en proportion du nombre de SI
crdlmnt
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
ça risque d'étre coton en formule si vous avez beaucoup de feuille
essayez quand même
=SI(NB.SI([ClasseurB.xls]Feuil1!$D:$D;C2&C2)>0;(INDEX([ClasseurB.xls]Feuil1!$C:$C;EQUIV(C2&C2;[ClasseurB.xls]Feuil1!$D:$D;0));SI(NB.SI([ClasseurB.xls]Feuil2!$D:$D;C2&C2)>0;(INDEX([ClasseurB.xls]Feuil2!$C:$C;EQUIV(C2&C2;[ClasseurB.xls]Feuil2!$D:$D;0));SI(NB.SI([ClasseurB.xls]Feuil3!$D:$D;C2&C2)>0;(INDEX([ClasseurB.xls]Feuil3!$C:$C;EQUIV(C2&C2;[ClasseurB.xls]Feuil3!$D:$D;0));etc.... avec le nombre de parenthéses pour fermer en proportion du nombre de SI
crdlmnt
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
N'ayant pas compris la deuxième proposition, j'ai essayé d'adapter la première en faisant la formule :
Mais, la partie soulignée ne s'exécute jamais...
Je viens de passer la matiné à chercher mais je ne comprend pas d'où vient l'erreur
=SIERREUR(SI(NB.SI([ClasseurB.xls]Feuil1!$B:$B;C2)>0;INDEX([ClasseurB.xls]Feuil1!$C:$C;EQUIV(Feuil2!C2&C2;[ClasseurB.xls]Feuil1!$D:$D;0));SI(NB.SI([ClasseurB.xls]Feuil2!$B:$B;C2)>0;INDEX([ClasseurB.xls]Feuil2!$C:$C;EQUIV(Feuil2!C2&C2;[ClasseurB.xls]Feuil2!$D:$D;0));""));"")
Mais, la partie soulignée ne s'exécute jamais...
Je viens de passer la matiné à chercher mais je ne comprend pas d'où vient l'erreur
Bonjour
je pensais que la seconde serait plus simple
quant à celle ci, vous remarquerez que je n'ai pas reconduit le SIERREUR en tête de formule, étant donné que c'est le code NB.SI qui détecte à chaque changement si la formule correspondante doit être appliquée ou pas.
Réalignez donc la formule sur l'exemple et, si besoin pour éviter FAUX, terminer avant la dernière parenthèse par ;""
bonne chance, n'hésitez pas si problème.
pour la seconde solution, ,je vous prépare un petit modèle pour info (entre feuille sans changement de classeur)
A+
Crdlmnt
je pensais que la seconde serait plus simple
quant à celle ci, vous remarquerez que je n'ai pas reconduit le SIERREUR en tête de formule, étant donné que c'est le code NB.SI qui détecte à chaque changement si la formule correspondante doit être appliquée ou pas.
Réalignez donc la formule sur l'exemple et, si besoin pour éviter FAUX, terminer avant la dernière parenthèse par ;""
bonne chance, n'hésitez pas si problème.
pour la seconde solution, ,je vous prépare un petit modèle pour info (entre feuille sans changement de classeur)
A+
Crdlmnt
Sans le "SIERREUR", les cellules dont la valeur est dans [ClasseurB.xls]Feuil1 s'affiche bien mais pour les autres j'ai l'erreur #NA
J'ai pas trop compris ce que c'était comme erreur???
J'ai pas trop compris ce que c'était comme erreur???
Votre formule n'est encore pas au point selon ma proposition:
NB.SI.... >0 sert à détecter si la référence cherchée est présente dans la colonne où va s"appliquer le code EQUIV qui suit.
Il faut donc que la référence cherchée et la colonne où s'applique NB.SI soit les mêmes que dans l'item EQUIV qui suit.
Or là, vous cherchez la présence de C2 dans la colonne B pour ensuite appliquer EQUIV en cherchant C2&C2 dans la colonne D
Les codes NB.SI doivent se rapporte au champ du EQUIV correspondant, soit pour le classeur 1:
NB.SI([classeur1.xls]Feuil1!D:D;C2&C2) et idem pour les autres
comme indiqué dans ma proposition.
bonne chance
ps ci joint un fichier avec les deux modèles de solution, ceci vous aidera peut être
bien entendu, ce fichier travaille sur les feuilles d'un même classeur, il faut intégrer dans les adresses le libellé correspondant aux classeurs.
http://www.cijoint.fr/cjlink.php?file=cj201105/cijAfncd61.xls
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
NB.SI.... >0 sert à détecter si la référence cherchée est présente dans la colonne où va s"appliquer le code EQUIV qui suit.
Il faut donc que la référence cherchée et la colonne où s'applique NB.SI soit les mêmes que dans l'item EQUIV qui suit.
Or là, vous cherchez la présence de C2 dans la colonne B pour ensuite appliquer EQUIV en cherchant C2&C2 dans la colonne D
Les codes NB.SI doivent se rapporte au champ du EQUIV correspondant, soit pour le classeur 1:
NB.SI([classeur1.xls]Feuil1!D:D;C2&C2) et idem pour les autres
comme indiqué dans ma proposition.
bonne chance
ps ci joint un fichier avec les deux modèles de solution, ceci vous aidera peut être
bien entendu, ce fichier travaille sur les feuilles d'un même classeur, il faut intégrer dans les adresses le libellé correspondant aux classeurs.
http://www.cijoint.fr/cjlink.php?file=cj201105/cijAfncd61.xls
Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci beaucoup pour le petit fichier. ça m'a beaucoup aidé.
Malgré une bonne persévérance, je n'arrive toujours pas à appliquer à mon cas la formule avec la fonction Indirect.
Mais ça a très bien marché avec les NB.SI, donc je pense que je vais m'en contenter.
Si ça peut servir à quelqu'un d'autre, ma formule est :
Merci encore
Malgré une bonne persévérance, je n'arrive toujours pas à appliquer à mon cas la formule avec la fonction Indirect.
Mais ça a très bien marché avec les NB.SI, donc je pense que je vais m'en contenter.
Si ça peut servir à quelqu'un d'autre, ma formule est :
=SI(NB.SI([ClasseurB.xls]Feuil1!$D:$D;Feuil2!C2&C2)>0;INDEX([ClasseurB.xls]Feuil1!$C:$C;EQUIV(Feuil2!C2&C2;[ClasseurB.xls]Feuil1!$D:$D;0));SI(NB.SI([ClasseurB.xls]Feuil2!$D:$D;Feuil2!C2&C2)>0;INDEX([ClasseurB.xls]Feuil2!$C:$C;EQUIV(Feuil2!C2&C2;[ClasseurB.xls]Feuil2!$D:$D;0));SI(NB.SI([ClasseurB.xls]Feuil3!$D:$D;Feuil2!C2&C2)>0;INDEX([ClasseurB.xls]Feuil3!$C:$C;EQUIV(Feuil2!C2&C2;[ClasseurB.xls]Feuil3!$D:$D;0));"")))
Merci encore
J'ai pas trop le temps donc je m'y attarderai plus longuement demain matin.
Je vous tiendrai au courant.
Merci encore
peut être plus simple selon ce que vous avez comme feuille:
dans une cellule hors champ exemple à adapter basé sur
code à chercher en classeur1 Feuil2,Feuil2,Feuil3,Feuil4
édition à ressortir de la colonne B dans chacune des feuilles
valeur à chercher :C2&C2 de classeur1 en D:D sur classeur 2
Dans une cellule hors champ sur classeur 2 (X1 pour l'exemple), la formule
=SI(NB.SI('[classeur2.xls]Feuil1!'!D:D;C2$C2)>0;"'[classeur2.xls]Feuil1!'";SI(NB.SI('[classeur2.xls]Feuil1!'!D:D;C2&C2)>0;"'[classeur2.xls]Feuil2!'";SI(NB.SI('[classeur2.xls]Feuil3!'!D:D;C2&C2)>0;"'[classeur2.xls]Feuil3!'"SI(NB.SI('[classeur2.xls]Feuil4!'!D:D;C2&C2)>0;"'[classeur2.xls]Feuil4!'"))))
en fait cette formule doit vous afficher dans la cellule X1 le libellé complet du nom du classeur et de la feuille, en incluant les apostrophes et point d'exclamation. C'est à dire strictement conforme au libellé complet avant l'adresse du champ dans les formules.
La formule d'édition à partir d'une référence à trouver entrée en A2 classeur 1 devient alors plus simplement:
=INDEX(INDIRECT($X$1&"B:B";EQUIV(C2&C2;INDIRECT($X$1&"D:D");0);1)
le code indirect renverra à l'adresse indiquée en X1
ce sera mis lourd comme formule, et en prime X1 vous donne le nom de lafeuille où se trouve la valeur cherchée.
si le nombre de feuille est trop important et nécessite trop de si, on peut définir l'adresse de la feuille à partir d'un tableau et d'une recherche. Revenez si nécessaire
bon courage
crdlmnt