Microsoft 365 Fusion de plusieurs plages excel dans un fichier de synthèse

psaintva

XLDnaute Nouveau
Bonjour,

Je dois compiler plusieurs tableaux dans des fichiers distincts (6 dans ce cas) dans un seul fichier (et idéalement à la suite) pour effectuer des tris et une synthèse sur l'ensemble des données (en l'occurrence ici du personnel et le nombre d'heures travaillées par jour). L'avantage c'est que mes tableaux ont les mêmes structures, mais pas le même nombre de lignes.

J'ai essayé le copier-coller spécial ou de compiler les données mais ce n'est pas très efficace.

J'ai tenté la macro suivante mais rien ne se passe dans mon fichier test.

Sub recup()
Range("A1").Select 'sélectionner la cellule de début
Chemin = "Z:\COMMUN\9.MATERIAUX\9.8 POINTAGE\2021\01-janvier\" 'saisir le chemin complet du dossier où se trouvent les fichiers
Fichier = Dir(Chemin & "*.xls") ' Premier fichier
Do While Fichier <> ""
Workbooks.Open Filename:=Chemin & Fichier
Range("Zone_copiee").Copy
ThisWorkbook.Activate
ActiveSheet.Paste
Windows(Fichier).Activate
Application.CutCopyMode = False
ActiveWorkbook.Close savechanges:=False
ThisWorkbook.Activate
Range("A65536").End(xlUp).Offset(1, 0).Select
Fichier = Dir ' Fichier suivant
Loop
End Sub


Les différents fichiers sont de la forme suivante (voir PJ) et je ne voudrais copier dans chaque fichier que la feuille contenant le personnel vers mon fichier test.

Auriez-vous une autre macro ou alors une solution pour ma macro ici présente ?


Merci d'avance à vous tous !!
 

Pièces jointes

  • Saisie pointage J@DE COSSON _concassage.xlsx
    345.7 KB · Affichages: 26

Dudu2

XLDnaute Barbatruc
Bonjour,
Et un truc dans ce genre (non testé):
VB:
Sub Recup()
    Dim Chemin As String
    Dim Fichier As String
    Dim LigneCible As Long
    Dim FeuilleCible As Worksheet
    
    'Chemin du dossier où se trouvent les fichiers
    Chemin = "Z:\COMMUN\9.MATERIAUX\9.8 POINTAGE\2021\01-janvier\"
    
    'Premier fichier
    Fichier = Dir(Chemin & "*.xls")
    LigneCible = 1
    Set FeuilleCible = ActiveSheet
    
    Do While Fichier <> ""
        'Ouverture du fichier
        Workbooks.Open Filename:=Chemin & Fichier
        
        'Copie de la plage nommée "Zone_copiee" dans ce classeur
        ActiveSheet.Range("Zone_copiee").Copy FeuilleCible.Cells(LigneCible, 1)
        LigneCible = LigneCible + ActiveSheet.Range("Zone_copiee").Rows.Count
        
        'Fermeture du fichier
        ActiveWorkbook.Close savechanges:=False
        
        'Fichier suivant
        Fichier = Dir
    Loop
 
Dernière édition:

psaintva

XLDnaute Nouveau
Bonjour,
Et un truc dans ce genre (non testé):
VB:
Sub Recup()
    Dim Chemin As String
    Dim Fichier As String
    Dim LigneCible As Long
    Dim FeuilleCible As Worksheet
   
    'Chemin du dossier où se trouvent les fichiers
    Chemin = "Z:\COMMUN\9.MATERIAUX\9.8 POINTAGE\2021\01-janvier\"
   
    'Premier fichier
    Fichier = Dir(Chemin & "*.xls")
    LigneCible = 1
    Set FeuilleCible = ActiveSheet
   
    Do While Fichier <> ""
        'Ouverture du fichier
        Workbooks.Open Filename:=Chemin & Fichier
       
        'Copie de la plage nommée "Zone_copiee" dans ce classeur
        ActiveSheet.Range("Zone_copiee").Copy FeuilleCible.Cells(LigneCible, 1)
        LigneCible = LigneCible + ActiveSheet.Range("Zone_copiee").Rows.Count
       
        'Fermeture du fichier
        ActiveWorkbook.Close savechanges:=False
       
        'Fichier suivant
        Fichier = Dir
    Loop

Malheureusement rien ne se passe quand je lance la macro, et pas d'erreur affichée...
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Avoir excel 365 et se servir encore de macro pour ça, c'est comme avoir une formule1 dans le garage et faire les 24 heures de mans en 2CV :) :D :rolleyes::eek:

pour effectuer des tris et une synthèse sur l'ensemble des données (en l'occurrence ici du personnel et le nombre d'heures travaillées par jour). L'avantage c'est que mes tableaux ont les mêmes structures, mais pas le même nombre de lignes.

PowerQuery comme suggéré par WTF serait pas mal du tout, même imaginé et créé pour ça.

Cordialement
 

Dudu2

XLDnaute Barbatruc
Bonjour @Roblochon,
Et il suffit d'invoquer PowerQuery (que je n'arrive pas à installer sur mon Office 2016) ou bien y a d'autres étapes pratiques à réaliser qui relèvent d'une connaissance spécifique que tout un chacun n'a peut-être pas et qui méritent explication ?
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,
Et il suffit d'invoquer PowerQuery (que je n'arrive pas à installer sur mon Office 2016)
Il existe dans 2016 et supérieur :
https://support.microsoft.com/en-us...ca2-b616-59e18d75b4de?ui=en-us&rs=en-us&ad=us

Désolé, la page est en anglais, mais il me semble que vous maîtrisez cette langue.

Plus bas dans la page vous avez plusieurs liens intéressants dont Combine data from multiple data sources (Power Query) .

Avec PowerQuery vous pouvez importez tous les fichiers d'un dossier ou en sélectionner plusieurs à compiler :

Combine files in a folder with Combine Binaries (Power Query ...




Cordialement
 

Dudu2

XLDnaute Barbatruc
Ce qui serait intéressant c'est de savoir si la somme des actions réalisées sous PowerQuery peuvent se résumer dans un script (un peu à l'image d'Enregistrer une macro) de sorte que ce script pourrait être sauvegardé, partagé, importé et exécuté sur une autre plateforme.

Quelqu'un spécialiste de PowerQuery a-t-il la réponse à cette question ?

Disons comme un bon GUI qui transformerait ses interactions avec un serveur par des commandes d'un protocole standard utilisables en Batch au moins pour pouvoir faire des scripts d'Assurance Qualité.
 
Dernière édition:

WTF

XLDnaute Impliqué
Ce qui serait intéressant c'est de savoir si la somme des actions réalisées sous PowerQuery peuvent se résumer dans un script (un peu à l'image d'Enregistrer une macro) de sorte que ce script pourrait être sauvegardé, partagé, importé et exécuté sur une autre plateforme.
En effet, les actions faites dans Powerquery sont repris dans un script que tu peux copier, modifier, ....
 

Dudu2

XLDnaute Barbatruc
@WTF Merci pour ton retour.
Donc dans le cas présent, renvoyer à PowerQuery, c'est un peu comme renvoyer à VBA, non ?
Perso, en VBA je préfère quand il y les instructions qui vont avec.
Sans doute qu'en PowerQuery ce n'est pas si simple. Faudra que je m'y colle !
 

WTF

XLDnaute Impliqué
C'est toi qui vois ;-)
Le script Powerquery est très simple
exemple en PJ avec des données qui sont toutes dans le mm fichier (compliqué de t'envoyer des éléments sur des répertoires locaux ...)
Tu charges tous tes fichiers dans powerquery en donnant l'adresse du chemin d'accès
et tu lui demande de faire une nouvelle table avec toutes tes bases de données et le travail est fait.. (tu peux meme choisir de supprimer ou d'ajouter des colonnes en fonction de tes besoins)

Un outil top qui mérite d'être connu
 

Pièces jointes

  • Exemple Dudu2.xlsx
    48.3 KB · Affichages: 11

Discussions similaires

Statistiques des forums

Discussions
314 709
Messages
2 112 107
Membres
111 423
dernier inscrit
buritis