Obtenir des données à partir d'un chemin d'accès indiqué dans une cellule
Bonjour à tous,
Je suis nouveau sur ce forum, j'espère que j'aurai bien respecté la charte, que je viens de lire.
Après plusieurs heures de recherche, je n'ai pas trouvé réponse à ma question.
Je voudrais créer un fichier Excel utilisé comme template par mes collègues. Ce fichier irait rechercher automatiquement des données dans des tableaux sources.
Par exemple, dans ce template, en cellule A1, le collègue indique "[C:\Users\utilisateur\Documents\test1.xlsx]Feuil1" ==> le template va chercher des données dans le fichier test1.xlsx.
Ensuite si on change dans le template la valeur de A1 pour passer sur "[C:\Users\utilisateur\Documents\test1.xlsx]Feuil2" ==> le template va chercher des données dans le fichier test2.xlsx.
En d'autres mots, je voudrais donc faire varier une formule, par exemple =SOMME('[C:\Users\utilisateur\Documents\test1.xlsx]Feuil1'!A1:A20) en allant chercher les cellules A1:A20 soit dans test1.xlsx, soit dans test2.xlsx selon ce que le collègue indique dans le template.
A noter bien sûr que les fichiers test1.xlsx et test2.xlsx ont des formats similaires. Mais de toute façon, la gestion des formules etc., j'en fais mon affaire.
Merci d'avance
Bonjour,
Alors je ne suis pas du tout un expert en VBA, mais vu que j'ai fait quelque chose qui ressemblait à ca il y a peu, voici un bout de code qui peut t'aider.
J'ai adapté dans un truc existant donc c'est loin d'être top mais ca devrait fonctionner.
Sub Adaptformule()
Set tws = ActiveSheet
'répertoire inscrit dans la cellule B1 et nom de la feuille en B2
Set fich = Range("B1")
feuille = Range("B2").Value
'on ouvre le fichier noté en B1 en activant la feuille notée en B2
Set wb = Workbooks.Open(fich)
Sheets(feuille).Activate
'on copie les valeurs dans le fichier et on ferme
Range("A1:A20").Copy
tws.Activate
Range("A1:A20").Select
Range("A1:A20").PasteSpecial Paste:=xlPasteAll
wb.Close False
MsgBox "traitement ok"
Exit Sub
End SubEn gros tu indiques le chemin complet du fichier en B1 et le nom de la feuille concernée en B2.
Et quand la macro est lancé ca mets à jour les valeur A1:A20 en fonction du fichier noté, et donc le résultat de ta formule notée plus loin.
A+
Bonjour,
Génial, merci pour ta réponse rapide ! C'est un bon début de code :-)
Je vais potasser là-dessus et tenter de construire quelque chose (je suis super débutant en VBA, car en gros j'ai simplement suivi le cours de Excel-Pratique).
A + !