VBA : ouverture de fichiers

jlm221170

XLDnaute Nouveau
Bonjour ,

J'ai un Classeur avec une feuille qui va récupère de plusieurs fichiers la cellule A1 (tous identiques).

La structure de ma feuille est : Nom_Fichier_Source_1 contenu de Nom_Fichier_Source_1:A1
Nom_Fichier_Source_2 contenu de Nom_Fichier_Source_2:A1
etc...

J'essaye d'avoir une macro qui ouvre tous mes fichiers "sources" puisque la formule contenu de Nom_Ficheire_Source_n se fait par un INDIRECT.
Dans ce cas, "=Fichier_Source1:A1" ne se met à jour que si mes fichiers sources sont ouverts.

Comme je vais avoir plusieurs fichiers synthèse (un par service de ma direction), j'ai besoin d'avoir une macro qui ouvre tous les fichiers sources.

Les fichiers sources sont dans le autre répertoire que celui de mon fichier synthèse.

Avez vous une syntaxe à me proposer pour résoudre ce probleme ?

Merci.
 

Nairolf

XLDnaute Accro
Re : VBA : ouverture de fichiers

Salut jlm221170, salut le forum,

La fonction INDIRECT est une des fonctions n'étant pas capable de rappatrier des données depuis des fichiers non ouverts sur le même poste (c'est dommage n'est-ce pas).

Dans ton cas, plusieurs possibilité (non exhaustives):

1/ par macro (comme tu le proposes): ouvrir tous les fichiers pour qu'il y ait mise à jour.
=> problème: si tu as de nombreux fichiers, cela peut prendre du temps et beaucoup de ressources.
ex macro:
Private Sub openfile()
fichier = ton_nom_de_fichier_avec_extension
chemin = ton_chemin_de_fichier_avec_\_à_la_fin

For Each classeur In Workbooks
classeurtest = classeur.Name

If classeurtest = fichier Then
c = 1
End If

Next

If c = 1 Then
Workbooks(fichier).Activate
Else
d = chemin & fichier
Workbooks.Open (d)
End If

End Sub

Tu peux rajouter un Workbooks(fichier).close ensuite pour fermer tous les fichiers au fur et à mesure (attention: il faut être sûr que tous les fichiers se mettront bien à jour)


2/ utiliser une autre formule de rappatriement de données
=> problème: si tu as de nombreuses valeurs, cela peut prendre du temps et beaucoup de ressources. Dépend de la structure de tes différents fichiers source et de ton fichier synthèse.
ex:
Si tu as une liste qui sera "fixe", tu écris directement dans la formule =Fichier_Source_n!A1 et là ça ira vite en mise à jour à l'ouverture du fichier (mise à jour que tu peux forcer lorsque le fichier est déjà ouvert)

3/ utiliser une connexion à une source de données.
=> problème: n'est pas toujours facile à mettre en place selon la structure de tes différents fichiers source et de ton fichier synthèse.


Le mieux serait peut-être de faire une macro avec des sources de données (bien construits, pour créer les liens la première fois (ou chaque fois que ta liste de fichiers sources change) et ensuite ce n'est qu'une simple mise à de fichiers de données.


Ce ne sont que des pistes à toi d'approfondir un peu. Si tu veux davantage d'aide met un fichier en ligne pour que ce soit plus simple pour nous de t'aider.
 

Discussions similaires

Réponses
9
Affichages
337

Statistiques des forums

Discussions
312 502
Messages
2 089 022
Membres
104 006
dernier inscrit
CABROL