Récupérer les données d'un classeur dont le nom est variable

Le
Oscar57 offline Hors ligne
Bonjour à tous,

Il est facile de faire un lien à une cellule dans un autre classeur. Mais qu'en est-il lorsqu'un lien se créer automatiquement grâce aux valeurs contenues dans deux cellules différentes afin de pouvoir récupérer les informations à l'intérieur d'un dossier.

Je m'explique :

1) Fichier récupérant les données

Cellule A1 : Nom du client : Dupont
Cellule B1 : Numéro du document : Doc0001
Cellule C1 : information recherchée

La formule dans la cellule C1 donnerait approximativement :
='[A1&"-"&A5&"xlsx"]Feuil1'!A1

2) La donnée à récupérer se trouve dans Documents, le fichier est Dupont-Doc0001.xlsx, l'information à récupérer se trouve dans la cellule A1 de Feuil1.

Et bien cela ne fonctionne après multiples essais, soit il me mets : #REF! soit #N/A, soit il m'ouvre une fenêtre afin que je lui montre le fichier cible, sauf que je souhaiterais que cela se fasse automatiquement sans que je sois contraint de lui montrer le chemin.

Est-ce quelqu'un pourrais me donner un coup de main sur ce qui m'échappe ? Peut-être est-ce possible en VBA ?

Je vous en remercie.
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
oscar57 offline Hors ligne
Le #26573401
Le mardi 11 Mai 2021 à 16:38 par Oscar57 :
Bonjour à tous,

Il est facile de faire un lien à une cellule dans un autre classeur.
Mais qu'en est-il lorsqu'un lien se créer automatiquement grâce
aux valeurs contenues dans deux cellules différentes afin de pouvoir
récupérer les informations à l'intérieur d'un
dossier.

Je m'explique :

1) Fichier récupérant les données

Cellule A1 : Nom du client : Dupont
Cellule B1 : Numéro du document : Doc0001
Cellule C1 : information recherchée

La formule dans la cellule C1 donnerait approximativement :
='[A1&"-"&A5&"xlsx"]Feuil1'!A1

2) La donnée à récupérer se trouve dans Documents,
le fichier est Dupont-Doc0001.xlsx, l'information à
récupérer se trouve dans la cellule A1 de Feuil1.

Et bien cela ne fonctionne après multiples essais, soit il me mets :
#REF! soit #N/A, soit il m'ouvre une fenêtre afin que je lui montre le
fichier cible, sauf que je souhaiterais que cela se fasse automatiquement sans
que je sois contraint de lui montrer le chemin.

Est-ce quelqu'un pourrais me donner un coup de main sur ce qui m'échappe
? Peut-être est-ce possible en VBA ?

Je vous en remercie.


Finalement, j'ai trouvé, la formule est :
=INDIRECT("'["&A1&"-"&B1&.xlsx]Feuil1'!A1")

Mais le problème restant est que la valeur ne s'actualise pas lorsque le fichier est fermé il m'affiche #REF!

(Désolé, il y avait un erreur dans l’énoncé il fallait lire B1 et non A5)
MichD
Le #26573404
Le 11/05/21 Í  10:38, Oscar57 a écrit :
Bonjour Í  tous,
Il est facile de faire un lien Í  une cellule dans un autre classeur. Mais qu'en
est-il lorsqu'un lien se créer automatiquement grÍ¢ce aux valeurs contenues dans
deux cellules différentes afin de pouvoir récupérer les informations Í 
l'intérieur d'un dossier.
Je m'explique :
1) Fichier récupérant les données
Cellule A1 : Nom du client : Dupont
Cellule B1 : Numéro du document : Doc0001
Cellule C1 : information recherchée
La formule dans la cellule C1 donnerait approximativement :
='[A1&"-"&A5&"xlsx"]Feuil1'!A1
2) La donnée Í  récupérer se trouve dans Documents, le fichier est
Dupont-Doc0001.xlsx, l'information Í  récupérer se trouve dans la cellule A1 de
Feuil1.
Et bien cela ne fonctionne après multiples essais, soit il me mets : #REF! soit
#N/A, soit il m'ouvre une fenêtre afin que je lui montre le fichier cible, sauf
que je souhaiterais que cela se fasse automatiquement sans que je sois contraint
de lui montrer le chemin.
Est-ce quelqu'un pourrais me donner un coup de main sur ce qui m'échappe ?
Peut-être est-ce possible en VBA ?
Je vous en remercie.


Bonjour,
Ce que tu veux faire est réalisable seulement si le classeur source est
ouvert, on doit alors utiliser la fonction "Indirect()".
Cela donne ceci Í  titre d'exemple :
=INDIRECT("'[" & $A$2 & "]" & $B$2 & "'!" & C2)
A2 contient le nom du classeur
B2 contient le nom de la feuille de calcul
C2 la référence Í  la cellule
Cependant, on peut écrire ce type de formule, mais en utilisant le texte
et non faire référence Í  l'adresse de cellule. Exemple d'une syntaxe
lorsque le classeur est fermé.
='E:Téléchargements[CCA.xlsx]CCA'!$A$3
Mais on ne peut pas scinder cette formule en utilisant des références de
cellules.
Il y a plusieurs années, Laurent Longre avait créé une macro
complémentaire appelée "MoreFunc" et cela ajoutait plusieurs
fonctions Í  Excel dont celle-ci : Indirect.Ext() qui permet de lire
le contenu d'une cellule d'un classeur fermé de la manière dont
tu veux. Il y a eu plusieurs versions du dit fichier, et j'ai peine
Í  retrouver la version la plus récente.
Je te donne une adresse sous toute réserve, je n'ai pas testé
personnellement cette version, sur cette page, tu as la liste des
fonctions supplémentaires que tu peux utiliser dans Excel.
https://www.commentcamarche.net/download/telecharger-34056283-morefunc-macro-complementaire-excel
Les manipulations a effectué après l'installation :
ces informations proviennent de cette adresse :
https://answers.microsoft.com/fr-fr/msoffice/forum/msoffice_excel-mso_other-mso_2010/laurent-longre/770dc96b-1ab2-4a32-84d1-e8365079e324
après installation :
1/ ouvrir fichier Excel
2/ fichier
3/ Option excel
4/ complément
5/ voir si l'onglet gérer et bien sur ( complément Excel )
6/ choisir un complément d'application actif (n'importe lequel )
7/ appuyer sur " atteindre "
8/ dans la fenêtre macro complémentaire faire " parcourir "
9/ lÍ  tu cherche le fichier " Morefunc " en principe dans =>C:/progame
files/Morefunc
tu doit voir 3 macros complémentaire
tu choisis en premier la macro nommé "Morefunc" => OK => elle doit
apparaÍ®tre maintenant dans la fenêtre => OK
recommence l'opération pour les macro nommé "Morefunc11" et "Morefunc12"
MichD
Poster une réponse
Anonyme