Microsoft 365 Combinaison de plus de 200 classeurs dont la structure est identique

Goffy

XLDnaute Nouveau
Bonjour à toutes et tous,

Je cherche à regrouper mes 250 classeurs (1 classeur = 1 feuille) en un seul classeur. La structure est la même.

J'ai essayé via Power Query, mais il semblerait que je puisse combiner les jeux de données un par un seulement. Je n'ai pas trouvé comment pour combiner les 250 classeurs d'un seul coup.

J'ai également fouillé le forum dans lequel des solutions via VBA sont proposées, mais je ne m'y connais pas assez pour comprendre les codes...

Je vous joins deux exemples de classeurs en ma possession.

Je vous remercie par avance pour votre aide.

Bien à vous
 

Pièces jointes

  • resultats_evalang_college_02-06-2023_2239.xlsx
    15.4 KB · Affichages: 9
  • resultats_evalang_college_02-06-2023_2240(1).xlsx
    14.8 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bonsoir Goffy, JM,

Dans les 2 fichiers sources .xlsx j'ai converti les dates qui étaient des textes en vraies dates (nombres).

Ensuite j'ai créé le fichier pilote Grouper.xlsm avec cette macro :
VB:
Sub Grouper()
'se lance par le raccourci clavier Ctrl+G
Dim ncol%, chemin$, fichier$, feuille$, lig&, form$, h&
ncol = 16 'nombre de colonnes à copier
chemin = ThisWorkbook.Path & "\" 'dossier des classeurs
fichier = Dir(chemin & "*.xlsx") '1er fichier du dossier
feuille = "Resultats"
lig = 2
Application.ScreenUpdating = False
Rows(lig & ":" & Rows.Count).ClearContents 'RAZ
While fichier <> ""
    form = "'" & chemin & "[" & fichier & "]" & feuille & "'!"
    h = ExecuteExcel4Macro("MATCH(""zzz""," & form & "C1)")
    If h > 1 Then
        With Cells(lig, 1).Resize(h - 1, ncol)
            .FormulaArray = "=" & form & "R2C1:R" & h & "C" & ncol
            .Value = .Value 'supprime les formules
        End With
        lig = lig + h - 1
    End If
    fichier = Dir 'fichier suivant
Wend
ActiveSheet.UsedRange.Replace 0, "", xlWhole 'efface les valeurs zéro
End Sub
Téléchargez les fichiers dans le même dossier et lancez la macro.

On notera que la macro n'ouvre pas les fichiers sources.

A+
 

Pièces jointes

  • resultats_evalang_college_02-06-2023_2239.xlsx
    18.9 KB · Affichages: 3
  • resultats_evalang_college_02-06-2023_2240(1).xlsx
    18 KB · Affichages: 4
  • Grouper.xlsm
    19.2 KB · Affichages: 5

job75

XLDnaute Barbatruc
Une chose avant d'aller dormir.

Les dates des fichiers sources étaient des textes parce qu'il s'agit de données importées.

C'est au niveau de la macro d'importation qu'il faut agir pour transformer les textes des dates en nombres.

Bonne nuit.
 

R@chid

XLDnaute Barbatruc
Bonjour @ tous,
Salut l'ami @job75
J'ai fait la même chose que toi, j'ai dupliqué 125 fois les deux fichiers de Goffy pour en fin obtenir 250 fichiers.
La requête Power Query est deux fois plus rapide que la macro, elle charge les 28000 lignes en à peine 6 secondes.

Excel pour Microsoft 365 / Windows 10 Pro
Core i5, 8Go de Ram 512Go Nvme.

Cordialement
 

Cousinhub

XLDnaute Barbatruc
Bonjour,
Avec ce code PQ :
PowerQuery:
let
    Source = Folder.Files(Excel.CurrentWorkbook(){[Name="CheminDossier"]}[Content]{0}[Column1]),
    Filtr = Table.SelectRows(Source, each Text.StartsWith([Name], "resul")),
    Transform = Table.TransformColumns(Filtr, { "Content", each Excel.Workbook(_, true )}),
    Expand1 = Table.ExpandTableColumn(Transform, "Content", {"Data", "Kind"}, {"Data", "Kind"}),
    Selections = Table.SelectRows(Expand1, each ([Kind] <> "DefinedName") and Text.Contains([Extension], "xls")) [[Name],[Data]],
    Expand2 = Table.ExpandTableColumn(Selections, "Data", Table.ColumnNames(Selections[Data]{0}), Table.ColumnNames(Selections[Data]{0})),
    ModType = Table.TransformColumnTypes(Expand2,{{"Date Compréhension Écrite", type date}, {"Date Compréhension Orale", type date}, {"Date Grammaire et Lexique", type date}})
in
    ModType

Les fichiers sont dans le répertoire indiqué dans la cellule nommé "CheminDossier"
250 fichiers, 28 770 lignes chargées, Modification du format des différentes colonnes "Date...."
Première connexion : 6,28 secondes
Actualisation une fois cette première connexion établie : 2,19 secondes
Bonne apm
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin