let
Source = Folder.Files(Dossier),
// Définit le répertoire contenant les fichiers à traiter
Filtr0 = Table.SelectRows(Source, each Text.Contains([Name], "Recup") and not Text.StartsWith([Name], "~")),
// On fait un filtre sur les fichiers dont le nom contient "Récup"
// Si un de ces fichiers est ouvert, il y a alors un raccourci commençant par ~ , qu'on ne prend donc pas en compte
Transform = Table.TransformColumns(Filtr0, { "Content", each Excel.Workbook(_, true )})[[Content]],
// On transforme tous les fichiers en Table, et on ne conserve que la colonne Content
Expand0 = Table.ExpandTableColumn(Transform, "Content", {"Name", "Data", "Item", "Kind"}, {"Name", "Data", "Item", "Kind"}),
// On développe les fichiers afin d'avoir la liste des onglets, noms définis, Tableaux...
Filtr1 = Table.SelectRows(Expand0, each ([Kind] = "Sheet") and ([Item] <> "Config" and [Item] <> "Total"))[[Item],[Data]],
// On fait un filtre afin de ne conserver que les onglets ([Kind] = "Sheet") et dont le nom est différent de Config et Total
// On ne conserve que les colonnes Item (pour avoir le nom des mois) et Data (contenant les données des onglets)
Expand1 = Table.ExpandTableColumn(Filtr1, "Data", {"Column4", "Column5", "Column10"}, {"Column4", "Nom", "Total Heures"}),
// On développe les Tables (et renomme la Column5 en Nom et Column6 en Total Heures)
Filtr2 = Table.SelectRows(Expand1, each ([Column4] = "Nom :") or ([Nom] = "Heures restantes")),
// On ne conserve que les lignes utiles : celle contenant le nom et la dernière ligne contenant la valeur de la cellule J44
RemplHaut = Table.FillUp(Filtr2,{"Total Heures"}),
// On remplit vers le haut, afin d'avoir toutes les données sur 1 ligne
ModType = Table.TransformColumnTypes(RemplHaut,{{"Total Heures", type duration}}),
// Transformation des heures en type Duration (nécessaire si somme supérieure à 24H)
Filtr3 = Table.SelectRows(ModType, each ([Nom] <> "Heures restantes")),
// Comme on avait les données en double, on ne conserve qu'une ligne
SupprCol1 = Table.RemoveColumns(Filtr3,{"Column4"}),
// On peut supprimer la Column4, qui ne contenait que l'information Nom :
Pivot = Table.Pivot(SupprCol1, List.Distinct(SupprCol1[Item]), "Item", "Total Heures", List.Sum)
// C'est ici que tout se passe. On pivote la colonne Item correspondant aux mois
// Et on additionne toutes les heures pour chaque employé
// Le format est donc en type duration J.HH.MM.SS, et lors du transfert dans la requête sur l'onglet
// Il suffit d'adopter le format horaire [hh]:mm:ss dans les cellules pour avoir le total, même si >24H
in
Pivot