Bonjour à tous,
Je dois optimiser des transferts de données de plusieurs fichiers à un autre, je dois utiliser pour ça le VBA mais j'ai du mal à comprendre le code lorsque je parcours les infos sur internet, je m'en remets à vous si possible.
Exposé de la situation :
- Il y a un fichier principal (Destination) qui comporte sur l'onglet "Tableau recap" un grand tableau (plus d'une trentaine de colonnes et 3000 lignes). Sur ce tableau, on retrouve le budget associé à chaque type d'activité en fonction de plusieurs critères (année, nom du responsable, nom du projet, etc …). Les budgets pour l'année 2000 sont déjà dans le tableau, en revanche les budgets pour l'année 2001 sont vides.
- Il y a environ 1000 fichiers sources Fiche xxxx qui sont des fiches récapitulant plusieurs informations. Tous ces fichiers sont regroupés dans un même dossier.
Mon objectif : Pour ne pas devoir ouvrir chaque fichier Fiche et recopier la valeur du budget dans le fichier Destination, j'aimerais faire une macro qui fait la manip toute seule : sur l'onglet "Tableau recap" du fichier Destination, je souhaiterais pouvoir appuyer sur un bouton qui permet de copier la valeur du budget de chaque fichier Fiche, et de la copier au bon endroit dans l'onglet "Tableau recap" du fichier Destination. Je souhaiterais que les fichiers Fiche restent fermés. Les budgets des fiches correspondent à l'année 2001, les budgets de 2000 sont déjà remplis dans le "Tableau recap".
Pour copier-coller dans la bonne colonne de la feuille "Tableau recap", cela dépend du type d'activité.
Pour copier-coller dans la bonne ligne de la feuille "Tableau recap", cela dépend de l'année, du nom du responsable et du nom du projet.
Par exemple :
Pour le fichier source Fiche Projet1, il faut copier la valeur du budget en "B12" et la recopier dans la feuille "Tableau recap" du fichier Destination à la cellule "H16".
Dans les fichiers j'ai mis en fond orange l'endroit où la valeur du budget doit apparaître pour chaque fiche et en vert les colonnes dont on a besoin comme critères pour trouver la bonne place dans le tableau.
Pour ouvrir les fichiers Fiches et exécuter la macro, j'ai un début de code que j'ai trouvé ici en parcourant les sujets :
Sub LoopThroughFiles()
Dim fiches, chemin As String
chemin = "C:\Users\.....\"
fiches = Dir(chemin & "*.xlsx*")
Application.ScreenUpdating = False
Do While Len(fiches) > 0
With Workbooks.Open(chemin & fiches)
'Le reste du code
ActiveWorkbook.Close savechanges = True
End With
fiches = Dir
Loop
End Sub
En revanche, pour copier/coller la valeur budget d'un fichier à l'autre, je suis un peu perdu, il me semble qu'il faut trouver la fonction Find mais je nage
Je mets ci-joint un exemple de fichier Destination, et 3 fichiers sources correspondant aux Fiches. Tous ces fichiers sont très simplifiés par rapport à ceux que je dois traiter, j'espère ne pas les avoir trop simplifié pour ne pas dénaturer le problème.
Je remercie tous ceux qui vont prendre le temps de m'aider, n'hésiter pas à me dire si je n'ai pas été clair !