[Excel] integrer un nom de fichier variable dans un RECHERCHEV

integrer un nom de fichier variable dans un RECHERCHEV [Excel] - VB/VBA/VBS - Programmation

Marsh Posté le 06-11-2007 à 12:18:45    

Bonjour,
 
Je dispose d'un fichier Excel principal (principal.xls), et d'une liste de fichiers 'enfants' horodatés contenant des données (fichier_du_01112007.xls, fichier_du_02112007.xls, fichier_du_03112007.xls, fichier_du_04112007.xls, etc..)
 
Dans mon fichier principal.xls, je souhaite récupérer des valeurs spécifiques de mes fichiers enfants via la fonctione RECHERCHEV, afin d'obtenir un tableau comme suit  :
 
Ligne 1 : __Date__ | 01112007 | 02112007| 03112007 | 04112007 | ...
Ligne 2 : Mavaleur  | ... (valeur récupérée par RECHERCHEV dans chacun des fichiers)  
 
Voila pour les explications "préliminaires"  
 
Dans mon fichier principal, j'ai 2 choses à l'heure actuelle :  
- La formule de recherche qui fonctionne : =RECHERCHEV(A2;'\\chemin\vers\mon\fichier\[fichier_du_01112007.xls]Feuil1'!$C$1:$L$84;4;FAUX)
- La formule pour fabriquer le nom du fichier en fonction de la date
 
La ou je cale, c'est pour intégrer ce nom variable dans ma cellule RECHERCHEV :  
Si par exemple le nom de mon fichier est dans la cellule C3, comment puis je faire pour "fabriquer" la formule :  
=RECHERCHEV(A2;'<C3>Feuil1'!$C$1:$L$84;4;FAUX)
 
Merci d'avance pour votre aide

Reply

Marsh Posté le 06-11-2007 à 12:18:45   

Reply

Marsh Posté le 06-11-2007 à 12:31:24    

Dans le principe, ça m'a l'air correct, check plutôt du coté de la syntaxe
(Genre, est-ce qu'il manquerait pas des crochets par exemple ?)
Pour faire tes tests, tu fais dans une cellule ta fonction "en dur", et sur une feuille de papier ou un autre fichier, tu prends bien ce que tu écris concaténé à la valeur de ta cellule, puis tu compares :)

Reply

Marsh Posté le 06-11-2007 à 13:01:19    

Ben oui c'est bien mon problème, la syntaxe !
En d'autres termes, comment je fais pour faire interpréter la valeur de ma cellule contenant la variable, dans ma cellule contenant la formule
 
J'ai fait 2 tests depuis tout à l'heure :
 
1er test : Mettre "tout" dans la cellule C3 :  
C3 = \\Cheminfichier\[fichier]Feuil1'!$C$1:$L$84
Donc ma rechercheV devient qqch comme  
=RECHERCHEV(A2;C3;4;FAUX)
=> La le problème c'est qu'il pense que la table matrice c'est C3 et non le contenu de C3, bref raté...
 
2eme test : Mettre le minimum dans la cellule C3 :  
C3 = nomfichier
et le problème dans ma rechercheV c'est qu'il me garde des double quotes (" ) autour de mon expression, donc il ne l'interprète pas correctement non plus...
 
Ca me bouffe la rate de coincer sur un truc comme ca ! :)
 
PS, comme je suis dans le forum VBS : je fais tout uniquement dans les formules des cellules, pas en macro

Reply

Marsh Posté le 06-11-2007 à 17:25:11    

Cherche la formule INDIRECT() dans l'aide, encore que ta référence est externe au fichier en cours et je ne sais pas si cette fonction le gère.


Message édité par tegu le 06-11-2007 à 17:25:26
Reply

Marsh Posté le 07-11-2007 à 09:33:44    

Ouais, tegu a raison çà fonctionne en utilisant INDIRECT(), je viens de tester.
 
Tu indiques le chemin de ta plage de donnée dans une cellule :[fichier_du_01112007.xls]Feuil1!$C$1:$L$84
et ta formule devient : RECHERCHEV(A2;INDIRECT(cellule_qui_contient_le_nom_du_fichier);4;FAUX)  
 
Par contre il va te falloir créer une cellule pour chaque nom de fichier.

Reply

Marsh Posté le 12-11-2007 à 12:26:53    

Bonjour,
 
Merci pour vos réponses
J'avais commencé à chercher du coté de la fonction INDIRECT effectivement, sans succès
Je viens de retester avec la formule que vous avez donnée et je viens de comprendre le pourquoi du comment :
 
Il faut que le fichier soit ouvert dans excel !! !! (j'ai bien les boules vu que je cherche à intégrer les données de plusieurs dizaines de fichiers sources)
En effet, sans le fichier ouvert => Erreur #REF!
Avec le fichier ouvert => Ok j'ai la valeur souhaitée...
 
Y'a t'il un moyen de s'affranchir de cette limite, ou est elle inhérente à excel ?
 
Merci

Reply

Marsh Posté le 12-11-2007 à 16:30:09    

Je crains qu'il s'agisse d'une limite d'Excel, mais sans absolue certitude.
Un RECHERCHEV sur un fichier fermé, ça marche.
Mais en passant par le INDIRECT ça ne marche plus.
Je ne connais pas de syntaxe pour passer outre, mais je laisse le soin à d'autres de conclure sur ce point.

Reply

Marsh Posté le 07-02-2008 à 15:53:12    

Nico4664 a écrit :

Ouais, tegu a raison çà fonctionne en utilisant INDIRECT(), je viens de tester.
 
Tu indiques le chemin de ta plage de donnée dans une cellule :[fichier_du_01112007.xls]Feuil1!$C$1:$L$84
et ta formule devient : RECHERCHEV(A2;INDIRECT(cellule_qui_contient_le_nom_du_fichier);4;FAUX)  
 
Par contre il va te falloir créer une cellule pour chaque nom de fichier.


 
 
Bonjour,
 
Je rencontre le même problème, et en essayant cette méthode, le INDIRECT à l'intérieur du RECHERCHEV ne marche pas... J'ai une erreur de type #REF!
 
Voila ce que j'ai fait dans un fichier tata.xls :
$A1 = '[toto.xls]Feuille1'!$A$1:$B$20
$A2 = RECHERCHEV(B2;INDIRECT(A1);2;FAUX)
 
Je ne comprends pas ce qui ne marche pas  [:theepsilon]
 
Merci de votre aide !

Reply

Marsh Posté le 07-02-2008 à 20:20:52    

ton fichier toto.xls est il bien ouvert ?

Reply

Marsh Posté le 08-02-2008 à 16:22:03    


Il fallait rajouter "=" devant !
Ce qui donne :
 

="'[toto.xls]Feuille1'!$A$1:$B$20"


 
au lieu de  


'[toto.xls]Feuille1'!$A$1:$B$20

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed