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.