Extraire une colonne d'un fichier vers un autre fichier
Bonjour,
J'ai besoin de votre aide pour créer une petite macro : à chaque nouveau chantier réalisé dans mon entreprise, un fichier est créé avec le numéro de chantier correspondant. Dans ce fichier, une feuille TPS FAB reprend les temps de fabrication liés à ce chantier. Je dois synthétiser ces données sur un autre fichier excel, il faut donc que je puisse récupérer les informations de l'onglet TPS FAB dans chaque fichierchantier pour les coller dans le fichier RECAP.
Je vous joins 3 fichiers :
- 1 fichier RECAP dans lequel vous verrez une colonne telle que j'aimerais récupérer les données (colonne H des fichiers nommés par numéro de chantier)
- 2 fichiers exemples de fiches chantier qui contiennent les infos à extraire (je n'ai gardé que l'onglet dont j'ai besoin pour alléger le fichier).
Je ne sais pas comment formuler la macro pour qu'à l'ouverture du fichier chantier, la macro vienne copier coller dans l'autre fichier la colonne H des fichiers chantier, les unes à la suite des autres afin d'obtenir un tableau avec en entete de colonne le numéro du chantier pour chaque colonne créée;
J'espère que mes explications sont suffisamment claires pour que vous puissiez m'aider à formuler la macro.
Merci beaucoup par avance à celui ou celle qui pourra me consacrer un peu de son temps,
Voici la macro que je viens de créer, j'imagine qu'il y a mieux mais ça fonctionne :
'
' test Macro
'
Dim fichier As Workbook
Dim chemin_fichier As String
chemin_fichier_dest = "C:\Users\...\Desktop\RECAP chantiers.xlsx"
'
Set fichier = Application.Workbooks.Open(chemin_fichier_dest)
Windows("RECAP chantiers.xlsx").Activate
Columns("B:B").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
Windows("7836.xlsm").Activate
Sheets("TPS FAB").Select
Range("H1").Select
ActiveWindow.SmallScroll Down:=45
Range("H1:H62").Select
Selection.Copy
Windows("RECAP chantiers.xlsx").Activate
Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("B2:B63").Select
Selection.NumberFormat = "0.00"
Windows("7836.xlsm").Activate
Range("A64").Select
Application.CutCopyMode = False
Selection.Copy
Windows("RECAP chantiers.xlsx").Activate
Range("B1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("B:B").EntireColumn.AutoFit
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWorkbook.Close
Sheets("Saisie").Select
End Sub
Bonsoir à tous,
Je vous livre une proposition via Power Query (complément à télécharger pour Excel 2013 - Nativement intégré dans les versions postérieures)
Un classeur (de même structure) figurant dans le dossier dédié (cf Paramètres) sera automatiquement incorporé pour produire l'état récapitulatif attendu.
Si la source évolue, menu "Données, Actualiser tout" pour rafraîchir les informations.
Bonsoir de nouveau,
Merci JFL pour cette solution qui a l'air d'être parfaite ! Cependant je n'ai pas compris comment ça fonctionne, je ne connais pas du tout Power Query et je n'arrive pas bien à comprendre comment la mise à jour fonctionne.. Je continue d'explorer votre fichier pour tenter de reproduire ce que vous avez fait.. si vous pouvez m'expliquer un peu plus en détail comment cela fonctionne, ce serait super, Merci et bonne soirée,
Power Query est un puissant outil intégré à Excel (depuis 2016) qui permet, de, lire, télécharger, nettoyer, aménager, enrichir et restituer des données.
Il existe moult tutoriels sur le net qui traite de la chose. Je ne peux que vous invitez à vous approprier cet "instrument" pour votre plus grand bénéfice !
Pour faire simple, et partant du principe que les fichiers à lire sont d'une structure similaire, J'ai fait en sorte de lire UN fichier, d'éliminer les informations inutiles (ie les colonnes) afin de ne conserver que la colonne détail et la colonne total heures.
Ce travail a constitué un canevas appliqué à l'ensemble des fichiers figurant dans un répertoire spécifique.
C'est...."tout" !
Lancez-vous !
Je vais creuser cette solution qui semble être parfaitement adaptée à mon besoin 👍
Merci d’avoir pris le temps de répondre à mes questions.