Recherche sur plusieurs feuilles

Résolu/Fermé
Melycea - 3 mai 2011 à 16:19
 Melycea - 4 mai 2011 à 14:36
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 :

=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



5 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 4/05/2011 à 12:38
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?
0
Merci pour la réponse rapide.
J'ai pas trop le temps donc je m'y attarderai plus longuement demain matin.
Je vous tiendrai au courant.

Merci encore
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 4/05/2011 à 12:36
OK
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
0
N'ayant pas compris la deuxième proposition, j'ai essayé d'adapter la première en faisant la formule :

=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
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
4 mai 2011 à 11:49
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
0
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???
0
Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
Modifié par Vaucluse le 4/05/2011 à 13:06
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?
0

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 :
=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
0