Macro qui ouvre des fichiers Excel
Bonjour,
J'ai un même fichier client dans des répertoires qui renvoie à des régions (1à 18) :
Fichier client 1 dans répertoire 1 (région Bretagne)
Fichier client 2 dans répertoire 2 (région Auvergne)
Chaque fichier clients contient une macro à exécuter.
En PJ, un exemple de classeur Excel contenant le fichier client et la macro à exécuter (ajout d'un nouveau client).
Est-il possible d'avoir une macro qui ouvre, les uns après les autres, chacun des 18 fichiers et exécute la macro qu'ils contiennent.
Merci par avance pour ceux qui pourront m'apporter de l'aide :)
Sarah
Bonjour, d'apres votre explication ; le problème pour la macro c'est que l'on ne peu pas faire une boucle car
vos 18 fichiers se trouvent dans des répertoires différents. les adresses de chemin à ouvrir seront donc tous différents.
Il faut donc rédiger 18 fois la même opération ( ouvrir fichier - fermer fichier ) .
Vous pouvez utilisez l'enregistreur de macro afin sur un des fichiers afin d'avoir un aperçu du code à rédiger.
Merci pour votre réponse :)
En cherchant ci et là, je suis tombée sur des articles qui recommandent d'utiliser le développeur Excel.
Je vais m'y mettre :) et voir si cela peut m'aider à construire la macro qui ferait cette opération quitte à la scinder en plusieurs sous-macro compte tenu du nombre de répertoires.
Sarah
Bonsoir,
si les 18 chemins sont connus alors une liste sur une feuille du fichier "pilote" est un code d'ouverture de fichier en fonction de cette liste importée dans un tableau Excel et là alors la boucle est faisable. Il faudrait avoir également un endroit où mettre en mémoire le nom du client :
Demande nom du nouveau client
Mise en mémoire du tableau "Chemin" : TabChemin = Sheets("FeuilleSystème").Range("TableauChemin").Value
Lancement de la boucle For i=1 to 18
Ouverture du fichier avec le chemin d'accès TabChemin(i)
Lancement du code VBA, voir le code devrait être sur le fichier "Pilote" avec en référence Objet le classeur nouvellement ouvert
Enregistrement du fichier
Fermeture du fichier
On boucle sur les chemins : Next i
Fin de la procédure
C'est une idée.
@ bientôt
LouReeD
Merci beaucoup LouReeD,
J'ai tenté avec le développeur mais mon niveau en programmation est ce qu'il est :) et je n'y arrive pas.
Quand je lance la macro (créée avec le développeur), cela bloque immédiatement et demande un débogage.
La structure de la macro est celle-là :
Sub synthese()
Sheets("TRI").Select (il ouvre cette feuille alors que je lui demande d'ouvrir le répertoire 1 où se trouve le fichier "Clients")
Application.Run "PERSONAL.XLSB!Z_actualiser" (là il devrait exécuter la macro créée pour actualiser les calculs dans le fichier Clients)
Application.CutCopyMode = False
Application.Run "PERSONAL.XLSB!Client"(là il devrait exécuter la macro créée pour copier le tableau actualisé dans le fichier synthèse)
Cells.Select
Selection.Copy
Windows("synthese.xlsx").Activate
Cells.Select
ActiveSheet.Paste
End Sub
Pour info car je pense n'être pas claire dans ma demande :)
J'ai un fichier de synthèse appelé "Synthèse" qui contient 18 onglets qui correspondent à 18 régions.
Chaque région est classée dans un répertoire "Région" :
région 1 : sous-répertoire qui contient un fichier "Clients" sur lequel une macro d'actualisation de données est exécutée
région 2 : sous-répertoire qui contient un fichier "Clients" sur lequel une macro d'actualisation de données est exécutée
région 3 : fichier Clients....
Le fichier client et la macro sont identiques quel que soit le répertoire. Ce qui change ce sont les données qui auront été rentrées en amont.
J'aimerai pouvoir disposer d'une macro qui exécute une routine qui est :
- ouvrir un répertoire,
- exécuter la macro,
- copier le résultat dans le fichier "Synthèse"
- puis fermer le fichier pour ensuite passer au suivant jusqu'au 18ème fichier.
En fin de macro, le fichier "Synthèse" sera rempli des résultats des 18 régions sans avoir à ouvrir individuellement chacun des fichiers.
Je sais que c'est trop demander mais je suis prête à rémunérer la rédaction de cette macro qui me faciliterait tellement la tâche.
Merci pour votre aide :)
Sarah
Bonsoir,
désolé, je ne maitrise pas tout ce qui touche aux fichiers externe au classeur actuellement ouvert... Je donnais un principe de fonctionnement, c'est tout...
Je laisse la main à d'autres intervenants et s'ils mettent du temps à venir alors je vous conseille d'ouvrir un nouveau fil.
@ bientôt
LouReeD