XL 2019 recapituler les fichiers excel d'un répertoire en une feuille

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

rmjunivers

XLDnaute Junior
Bonjour la famille,

je reçcois les rapports à travers les fichiers Excel nommés différemment sous le même format avec pour chacun un onglet détails je souhaite compiler automatique la feuille détais de chaque fichier dans un fichier Excel unique pour exploitation.

je joins à cette requêtes 2 exemples de rapports excel des journées du 18/04 et 19/04/2026
 

Pièces jointes

Bonjour le forum,

Par curiosité une autre code VBA a essayer:
VB:
Sub Recap()
With Application.FileDialog(msoFileDialogFolderPicker)
    .AllowMultiSelect = False
    .InitialFileName = ThisWorkbook.Path & "\"
    If .Show Then Path = .SelectedItems(1)
End With
If IsEmpty(Path) Then Exit Sub
Path = IIf(Right(Path, 1) = "\", Path, Path & "\")
t = Timer
Application.ScreenUpdating = False
With CreateObject("Scripting.FileSystemObject").Getfolder(Path)
    For Each File In .Files
        If Right(File, 4) = "xlsx" Then
            With CreateObject("DAO.DBEngine.120")
                With .OpenDatabase(File, False, True, "Excel 12.0 Xml;Hdr=Yes;")
                    For j = 0 To .TableDefs.Count - 1
                        If Replace(Replace(.TableDefs(j).Name, "$", ""), "'", "") = "Détails" Then
                            Sheets("Récap").Range("A" & Rows.Count).End(xlUp).Offset(1).CopyFromRecordset .OpenRecordset(.TableDefs(j).Name)
                            Exit For
                        End If
                    Next
                End With
            End With
        End If
    Next
End With
Sheets("Récap").Columns("A:C").AutoFit
Application.ScreenUpdating = True
MsgBox Format(Timer - t, "0.00 \sec")
End Sub
J'ai testé avec 2 fichiers à 450K lignes est sur mon système ça prend 11.29s pour 900K lignes.
 
Dernière édition:
Bonjour @Cousinhub, le forum

Une fonction laissant le choix de choisir le dossier, le début du nom du fichier et l'onglet.

PowerQuery:
(Folder, fileStart, SheetName)=>
    ((w)=>
        try List.Accumulate(
            Folder.Files(Folder)[Content],
            w,
            (s,c)=> s & (
                if
                Text.StartsWith(Value.Metadata(c)[Content.Name], fileStart)
                then try Excel.Workbook(Binary.Buffer(c),true) {[Name = SheetName]}[Data] otherwise w
                else w))
        otherwise w)
    (#table({},{}))

Bonne journée à tous.
Hi,
Merci pour ces nouvelles options.
Bon W-E
PS, la version du post #11 fonctionne déjà très bien. M'en vais tester icelle ASAP
 
Pour tester ce n'est pas difficile de copier 57 fois chacun des 2 fichiers .xlsx qui ont été fournis.
Hello,
Depuis que j'utilise PQ, l’obsession des milli-secondes est passée.
J'ai opté pour une simplicité, et une modularité, au détriment du "tout, tout de suite"...
Bon W-E
PS, depuis le temps que tu titilles les utilisateurs de PQ, tu devrais savoir faire le test tout seul, non?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Z
Réponses
2
Affichages
17 K
zelmasmoudi
Z
N
  • Question Question
Réponses
5
Affichages
3 K
G
Réponses
3
Affichages
3 K
Gagougnia
G
K
Réponses
19
Affichages
5 K
K
Retour