Excel - fonctions recherche

Bonjour,

J’aimerais de l’aide pour ce problème pas forcement compliqué (long texte car je veux bien me faire comprendre)

J’ai 3 fichiers Excel :
1- Formule.xls => Fichier à éditer
2- 173.xls => tableau avec une colonne “référence”
3- 177.xls => ableau avec une colonne “référence”

Dans mon fichier “formule.xls” je veux entrer :

  • Dans une cellule : Le nom du fichier souhaité (soit 00177, soit 00173).
  • Dans une autre cellule : Une référence

De ce fait, je veux récupérer des données de mes fichiers excel automatiquement en entrant le nom du fichier et la référence souhaité.

Petit exemple pour illustrer :

Dans le fichier “00173.xls”, j’ai la référence 5987 dans la cellule A1 et 12 dans la cellule B1
Dans le fichier “00177.xls”, j’ai la référence 7589 dans la cellule A1 et 18 dans la cellule B1

Quand je tape 00173 dans la cellule A1 et 5987 dans la cellule B1 de mon fichier “formule.xls”, j’aimerai récupérer 12 dans la cellule C1
Quand je tape 00177 dans la cellule A1 et 7589 dans la cellule B1 de mon fichier “formule.xls”, j’aimerai récupérer 18 dans la cellule C1

Je test plein de truc avec la fonctione RECHERCHEV et INDIRECT mais je m’arrache les cheveux…

Je pense que le fais d’arriver à mettre une valeur de fichier aléatoire dans un INDIRECT m’aiderai déjà beaucoup
Voici la formule actuellement utilisée : =RECHERCHEV(B1;INDIRECT("’[00173.XLS]00173 2008-09-10-11’!B1:M100");2;0)
Cette formule fonctionne mais le problème c’est que j’aimerai que le 00173 puisse être changé facilement par 00177 et donc que 00173 soit en faite la valeur de la cellule A1 de mon fichier “formule.xls”.

J’ai du mal à comprendre comment ta formule fonctionne.
Si j’ai bien compris le début de ton post, tu cherches dans la colonne B de 173.xls (177.xls) la valeur correspondant à une référence contenue en colonne A
Or la plage que tu décris dans ton rechercheV (B1:M100) ne contient pas la colonne A …

Pour ce qui est de rendre variable la feuille dans laquelle tu recherches, il suffit normalement de remplacer le 00173 (de 000173.xls) par la référence de la cellule qui le contient (A1) , et de concaténer avec des &.
Je n’ai pas testé mais ça devrait marcher

Effectivement c’est une faute de frappe c’est bien A1 et non B1.

J’ai tenté de concaténer mais rien n’y fait… J’ai mis le chemin du fichier en dur (car je vais devoir changer de dossier de temps en temps) et quand je concatène ma cellule, il me demande d’aller rechercher le fichier que je veux cibler… j’ai pourtant mis le chemin d’accès et le nom du fichier, c’est incroyable !

Du coup j’ai une formule qui ressemble à sa : =RECHERCHEV(B1;’\*****\Archivage[&O14&.XLS]feuille1’!A1:M100;2;0)

Quand je valide le &O14& il me demande de rechercher le fichier, par contre si je change la cellule O14 après, il ne me demande pas d’aller rechercher le fichier (A la rigueur ce serai mieux)

Normal qu’il te pose cette question, rien ne lui dit que &014& doit être interprété comme une référence et non en littéral
Il faut que tu travailles avec une chaine de caractères délimitée par des guillemets.
Et dans le coup, tu es obligé de passer ensuite par indirect()

=RECHERCHEV(B1;INDIRECT("’["&A1&".XLS]00173 2008-09-10-11’!B1:M100");2;0)

Attention à bien “sortir” &A1& de la chaine de caractères en fermant les guillemets avant et en les rouvrant après

A mon avis, la recherche ne fonctionnera que si tes fichiers 014.xls, 173.xls, 177.xls sont ouverts, sinon tu vas te retrouver avec des #N/A, voire des #REF. Ca risque de poser problème si tu en as des dizaines.

Et tout ça ce n’est que de la théorie, ça reste à confirmer sur les fichiers réels

Bon sa ne fonctionne pas… pourtant ton idée est bonne mais je pense qu’on a atteint une limite de la fonction rechercheV ou indirect…

Par contre si tu as un autre moyen, soit qu’il suffit de cliquer sur un bouton qui nous demande le fichier dans lequel on veut prendre les données. Soit par marco, soit pas je ne sais quoi… je suis ouvert à toute proposition :stuck_out_tongue:

Bizarre que ca ne marche pas
Tu as quoi comme message d’erreur ?
Je me suis peut être trompé dans la syntaxe.
Je vais faire un essai et je te redis

Edit :
Tu peux donner exactement la formule que tu as rentrée et qui ne fonctionne pas ?
Edité le 22/09/2011 à 15:47

=RECHERCHEV(B1;INDIRECT("’["&A1&".XLS]00173 2008-09-10-11’!A1:M100");2;0)

Je pense qu’excel ne prend pas en compte la recherche dans un fichier via une variable (celle avec le nom du fichier).

Je vais réessayer demain au boulot avec un fichier simple et avec seulement les valeurs utiles car pour le moment j’ai de gros fichiers avec des gros tableaux ^^.

Je te tiens au courant ! Merci de l’aide !

Je viens d’essayer en créant un fichier 173.xls et un fichier 177.xls, et en mettant dedans les valeurs que tu préconises plus haut (plus d’autres)
Et chez moi ça fonctionne.
Par contre je confirme : il faut bien que le fichier dans lequel s’effectue la recherche soit déjà ouvert, sinon on a la réponse #REF

Ok j’ai surement merdé quelque pars, je vais réessayer demain. Un grand merci !

Bon j’ai essayé, sa marche mais pas avec ma formule complète avec des rajouts…
J’ai abandonné l’idée de le faire en formule, je me suis lancé dans une macro qui est mieux car les fichiers n’ont pas besoin d’être ouvert et c’est invisible.

Pour le moment sa marche, il me suffit juste de réussir, en VB, de :
1 - Dire que je veux me situer dans la 1er feuille du fichier 00173 (ou 00177) car d’un fichier à l’autre elle a un autre nom
2 - Utiliser la fonction recherche précédemment utilisé dans la macros

J’ai posté dans la section programmation une demande, je te remercie gcc !