Re,
Lorsqu'on 'interroge un classeur par power query, il faut s'attendre à ce qu'il y ait plus d'une requête sur le même classeur. C'est pourquoi je fait une requête que je nomme 'Classeur' qui me liste le contenu classeur et que mes autres requêtes peuvent prendre comme source. Je fais souvent la même chose pour les sources multi-table. Cela permet de n'interroger la source qu'une seule fois.
Dans le cas de votre fichier, la requête Classeur n'a qu'une ligne :
= Excel.CurrentWorkbook()
Elle pourrait en avoir plusieurs au cas où Filtres, tris, et/ou pré-transformations diverses seraient nécessaires.
La requête 'fnParamètreParNom' :
= (NomParamètre as text) => Classeur{[Name="Paramètres"]}[Content]{[Column1=NomParamètre]}[Column2]
permet de renvoyer par son nom la valeur d'un paramètre de la plage Feuil1!B1:C2, nommée '
Paramètres'.
Comme cette plage nommée n'a pas de nom de colonne, PQ les nomme ici automatiquement en interne en 'Colonne1' à 'Colonne2'.
Elle sert comme raccourci d'écriture dans la requête 'VoitureParMinute' pour la ligne qui filtre par Ville et par Code jour :
= Table.SelectRows(Source, each ([Ville] = ParamètreParNom("Ville")) and ([Code Jour] = ParamètreParNom("Code Jour")) and ([Distance] > 0))
Est plus lisible et compréhensible (à mon sens) que
= Table.SelectRows(Source, each ([Ville] = Classeur{[Name="Paramètres"]}[Content]{[Column1="Ville"]}[Column2]) and ([Code Jour] = Classeur{[Name="Paramètres"]}[Content]{[Column1="Code Jour"]}[Column2]) and ([Distance] > 0))
La requête 'VoitureParMinute' réalise :
1 - Filtrage des données
2 - Création pour chaque ligne d'une liste de 'minutes' entre l'heure de début et de fin, puis dévelloppement de ces minutes sur de nouvelle lignes
3 - Regroupement des données sur la colonne "Heures" que j'aurai du appeler 'Minutes' avec calcul du nombre de voitures et création de la liste des voiture.
Pour le reste, il va falloir que vous étudiez chaque ligne et pratiquiez Power Query...
Cordialement