Appliquer macro à une liste de fichiers
Bonjour à tous,
Je souhaite appliquer 6 feuilles de calculs à chaque fichier d’un dossier.
Mon dossier comporte environ 50 fichiers excel correspondant à 50 entreprises. J’ai fait des macro pour formater chaque fichier au même format et avoir une seule feuille de « Données » qui va me servir pour appliquer mes calculs.
En parallèle, j’ai mon fichier « Modèle » composé d’une feuille « Données » et de 6 feuilles de calculs.
Ma problématique :
-Je pourrais créer une macro qui viendrait s’appliquer à chaque fichier excel du type :
-Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "calculs1"
-set worksheets (“calculs1”)
-ws_calculs1.range(« A1 »).formula = « =[feuille Données]A1+[feuille Données] A2 ….. ……….
Puis à nouveau Sheets.Add(After:=Worksheets(Worksheets.Count)).Name = "calculs2"
-set worksheets (“calculs2”)
-A1.formula = « =[feuille calculs1]A1+[feuille calculs1] A2 ….. ……….
((et je rentre chaque formule à la main). Je suis débutant en VBA mais ça j’ai compris comment ça marche d’autant que J’ai trouvé un morceau de code pour appliquer une macro à tous les fichiers d’un dossier
:
Sub LoopThroughFiles()
Dim xFd As FileDialog
Dim xFdItem As Variant
Dim xFileName As String
Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
If xFd.Show = -1 Then
xFdItem = xFd.SelectedItems(1) & Application.PathSeparator
xFileName = Dir(xFdItem & "*.xls*")
Do While xFileName <> ""
With Workbooks.Open(xFdItem & xFileName)
'your code here
Le soucis, c’est que j’ai environ 200 formules par feuille X 6 feuilles. Du coup ça serait très long sans compter le risque d’erreur.
Je cherche donc une alternative dans la mesure ou je dispose d’un fichier excel « Modèle » où toutes les formules sont déjà existantes
J’ai l’impression que j’ai 2 options, soit:
- 1/ Je crée une macro qui ouvre et ajoute des nouvelles feuilles dans mon fichier entreprise et je colle les feuilles de calculs de mon fichier modèle. Le problème que j’ai, c’est les références. Quand je colle mes formules, cela fait référence au classeur modèle et donc aux données du fichier modèle.
- Je crée une macro qui ouvre mon fichier modèle puis je copie ma feuille « Données » entreprise dans la feuille « Données » de mon fichier « modèle ». Puis je « SAVE AS » mon fichier modèle afin de créer un nouveau fichier et de le renommer. Ensuite je ferme mon nouveau fichier entreprise avec les calculs et j’ouvre le fichier entreprise suivant pour coller les données dans mon fichier « modèle » etcetera
- Les soucis : renommer le fichier avec le nom de l’entreprise. (ActiveWorkbook.SaveAs Filename:= _" _
- , FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
- Mais surtout, comment coller une feuille de chaque fichier d’un dossier dans mon classeur modèle.(attention je ne souhaite pas ajouter une feuille pour coller, mais coller pour remplacer les données de monfichier modèle, sinon j'aurais à nouveau les problème de référence dans mes calculs)
Auriez-vous une idée pour la boucle ? Ou bien une solution plus adaptée ? Je suis débutant en VBA et je me rends compte qu’à chaque ligne de code je me pose une question
Merci d'avoir pris le temps de me lire . Et d'avance merci pour vos remarques.
En espérant avoir été clair (même si j'en doute un peu :-/ vu que ce n'est pas très clair dans ma tête)
Bonjour
Probablement plus simple à faire par PowerQuery mais sans exemple de fichier avant et après, on ne peut que supputer...
merci pour votre réponse. Je vais regarder si je trouve une solution avec avec power query. c'est peut-etre plus simple effectvement
J'ai regardé avec power Query et cela me sera utile pour compiler mes données à la fin (power query pour compiler mes onglets synthèse). Cependant je ne pense pas que cela soit adapter à mon problème de calcul. Ci dessus, j'ai joint des fichiers qui sont similaires dans la structure à ceux que j'ai. (j'ai remplacé par des calculs qui n'ont pas de sens mais ça ne change pas le problème).
J'ai donc une liste de fichiers "Données" Entreprise. Je copie l'onglet Données de ce fichier et je le colle dans l'onglet "Données" du fichier modèle. Ensuite je souhaite conserver l'onglet synthese pour chaque entreprise.
1/2
J'ai essayé avec power query comme ceci (fichier joint "modèle PQ"). je peux sélectionner mes données par entreprise mais cependant les calculs restent appliqués uniquement pour la premiere entreprise (et c'est bien normal puisque mes cellules se réfèrent à ces lignes)
Bonjour
J'ai pas mal avancé mais je dois m'absenter et ne pourrai reprendre que demain.
Bonjour
Je ne t'ai pas oublié mais pas eu le temps avant
Voici le classeur
Modifier la cellule en jaune et y indiquer le chemin du dossier où sont stockés les 50 fichiers
Ensuite cliquer sur Go
Il est probable que l'onglet Données pourrait aussi être géré par PowerQuery... D'autant que je ne sais comment cela a été généré mais il y a un truc bizarre concernant les 2 premières colonnes et la 1ère ligne a priori vides mais pas vraiment