Excel Fonction RechercheV avec chemin relatif

Résolu/Fermé
Hasaran - 31 déc. 2009 à 13:06
 Hasaran - 8 janv. 2010 à 09:00
Bonjour,

J'aimerais utiliser la fonction Recherchev de excel en appelant une matrice par un chemin relatif.
RECHERCHEV(variable;'C:\chemin\[fichier.xls]Onglet1'!$C$4:$N$499;10;FAUX)

J'ai créé une macro qui me donne dans la cellule A1 l'emplacement de ma feuille de calculs (gâce à ActiveWorkbook.Path).

Je concatène ensuite ce résultat (C:\chemin) de cette façon :
CONCATENER("'";A1;"\[fichier.xls]onglet1'!$C$4:$N$499")
dans la cellule A2.

Mais quand je réécris ma fonction Recherchev de cette façon :
RECHERCHEV(variable;A2;10;FAUX)
la cellule affiche #N/A

Comment pourrais-je résoudre ce problème ?
A voir également:

4 réponses

Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
6 janv. 2010 à 16:43
Bonjour,
Merci pour les informations.

Dans le sens ou les deux classeurs sont dans le même dossier, utilisez votre formule :
RECHERCHEV (variable;'C:\chemin\[fichier.xls]Onglet1'!$C$4:$N$499;10;FAUX), qui fonctionnera même su le classeur source est fermé.

L’autre solution avec la fonction [INDIRECT ] impose que le classeur source soit aussi ouvert. Si non ouvert en mémoire, la fonction renvoie une valeur d'erreur # REF !
Pour utiliser cette possibilité :
Sur le classeur cible mettre sous format texte dans une cellule :
A1=C:\chemin\[fichier.xls]Onglet1
A2 = C4:N499
et la fonction indirect à insérer dans RECHERCHEV devient : INDIRECT("'"& A1 &"'!"&A2)
1
Ca y est, ça marche !

Dommage qu'INDIRECT ne fonctionne pas avec le fichier de base de données fermé ....

Merci de votre aide
0
Raymond PENTIER Messages postés 58388 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 17 avril 2024 17 088
31 déc. 2009 à 13:20
Peut-être avec la fonction INDIRECT ?
0
J'essaie d'utiliser la fonction INDIRECT :
RECHERCHEV(variable;INDIRECT($A$3);10;FAUX)
en mettant dans A3 la référence de la cellule où j'ai mon chemin concaténé (A2).

Même résultat .... (ça fonctionne en dehors de la fonction RECHERCHEV)

à moins qu'il n'y ait une autre façon d'utiliser la fonction INDIRECT ....
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
5 janv. 2010 à 23:22
Bonjour,
A vous lire, la cellule [A2] contient le chemin de votre matrice, alors mettez directement : INDIRECT($A$2) !

Est-ce que la matrice ('C:\chemin\[fichier.xls]Onglet1'!$C$4:$N­$499) est toujours la même ?

Est-ce que votre formule : RECHERCHEV(variable;'C:\chemin\[fichier.xls]Onglet1'!$C$4:$N­$499;10;FAUX)
fonctione Oui ou Non ?
0
Bonjour,

En mettant INDIRECT($A$2), la cellule affiche #REF! aussi bien en intégrant cette fonction dans RECHERCHEV que indépendamment.

La matrice ('C:\chemin\[fichier.xls]Onglet1'!$C$4:$N­$499) est toujours la même.

Ma formule : RECHERCHEV(variable;'C:\chemin\[fichier.xls]Onglet1'!$C$4:$N­­$499;10;FAUX) fonctionne bien.
0
Raymond PENTIER Messages postés 58388 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 17 avril 2024 17 088
5 janv. 2010 à 23:57
Bonjour.

Si j'ai tout suivi, la matrice contenant les données n'est pas dans le même dossier (fichier) que la feuille où se trouve la formule de recherche ? Dans ce cas, rappelons qu'il est IMPÉRATIF que ce premier soit ouvert pour que la recherche s'effectue.

Je n'ai pas compris pourquoi tu écris INDIRECT($A$3) alors que le contenu de A3 semble être =A2 ... Il n'y aurait alors qu'à écrire INDIRECT(A2) !

Quant au contenu de A2, je n'ai pas trop compris ce que tu as voulu faire : je ne vois pas la signification de 'A1\ dans 'A1\[fichier.xls]onglet1'!$C$4:$N$499
Mais puisque tu dis que "ça fonctionne en dehors de la fonction RECHERCHEV", je dois supposer que c'est correct ...

Dernière observation : on a toujours intérêt à donner un nom à la matrice de données ; ainsi si tu donnes le nom "Matr" à la plage C4:N499 de la feuille onglet1 du dossier fichier.xls, l'écriture de ta formule se simplifie en 'A1\[fichier.xls]Matr
0
Bonjour.

La matrice contenant les données est dans mon cas dans le même dossier mais pas dans le même fichier que la feuille où se trouve la formule de recherche.
La recherche s'effectue bien quand le fichier contenant les données est fermé, la seule différence que j'ai constatée est que Excel me demande de mettre à jour le fichier quand celui contenant les données est fermé.

Ecrire INDIRECT(A2) ne fonctionne pas, j'obtiens l'affichage #REF! dans la cellule aussi bien en intégrant INDIRECT à RECHERCHEV qu'en mettant INDIRECT dans une cellule à part.

Mon premier objectif est de pouvoir travailler dans le même dossier contenant les fichiers de données et de travail quelque-soit l'emplacement de ce dossier sur le disque dur.
Je cherche dans un premier temps à séparer les étapes :
- n'ayant pas trouvé de formule toute faite pour utiliser un chemin relatif dans la fonction RECHERCHEV, j'ai trouvé que la fonction ActiveWorkbook.Path utilisée dans une macro me permettait d'obtenir le chemin absolu du dossier dans lequel je travaille. J'ai fait afficher ce chemin dans la cellule A1.
Cette cellule A1 contient alors C:\chemin.
- il me faut le chemin complet de la matrice pour l'insérer dans la fonction RECHERCHEV. Comme le fichier contenant la matrice est dans le même dossier que le fichier dans lequel j'utilise RECHERCHEV, il suffit d'ajouter le bout de chemin qui, lui, sera toujours le même : \[fichier.xls]onglet1'!$C$4:$N$499. Je le concatène donc avec le contenu de la cellule A1.
A ce stade j'ai dans la cellule A2 le chemin complet de ma matrice, quelque-soit mon dossier de travail : 'C:\chemin\[fichier.xls]onglet1'!$C$4:$N$499 (j'ai dû en plus ajouter un apostrophe au début)
- je remplace alors le chemin complet de la matrice dans la fonction RECHERCHEV par A2 qui contient ce chemin.

Quant à l'attribution d'un nom à la matrice, j'aimerais si ce n'est pas gênant pour ce premier objectif que je me fixe, l'oublier car il me pose problème.
0