Power Query MAJ lente
Bonjour,
Voici le fichier. Je suis en train de tester ton dernier fichier, je te tiens au courant.
Bonne fin de journée.
re,
Je suis en train de reconstruire un nouveau fichier, pour tester les fonctions.
Est ce normal qu'il faille modifier le numéro de département à compter du 15 ?
Il semble que la page 1 est doublée dans l'étape PagesList de la requête Calendrier.
Je continue à creuser pour essayer de tout comprendre.
Cordialement
re,
Je suis en train de reconstruire un nouveau fichier, pour tester les fonctions.
Est ce normal qu'il faille modifier le numéro de département à compter du 15 ?
Il semble que la page 1 est doublée dans l'étape PagesList de la requête Calendrier.
Je continue à creuser pour essayer de tout comprendre.
Cordialement
Désolé pour les numéros je n'ai pas revérifié mais oui il faut bien reprendre ceux que tu utilises/de l'URL et non ceux que j'ai pu mettre dans le fichier qui sont incorrects. Et du coup c'est de là que vient la différence de 1 ligne en + que je mentionnais.
Pour la page 1, il ne me semble pas. Il faut différencier la page 0 de la page 1 pour fn_Cal_Page : quand c'est 0, il renvoie la page de base (sans numéro) = celle de la première ligne de t_fallback, puis quand c'est 1,2... il va chercher les pages secondaires.
re,
Si j'utilise les numéros de départements corrects la requête ne me renvoie que
09/11/2025 St Etienne CONCOURS SALLE à SAINT-ETIENNECordialement
Salut,
Il faut que tes infos soient cohérentes entre elles… Je viens de revérifier, sur le premier fichier que tu avais transmis les départements étaient ceux-ci :
type_donnee | valeur |
date_deb | 01/10/2025 |
date_fin | 31/03/2026 |
dep | 1 |
dep | 3 |
dep | 7 |
dep | 15 |
dep | 25 |
dep | 39 |
dep | 43 |
dep | 44 |
dep | 64 |
dep | 70 |
dep | 74 |
dep | 75 |
Récupérés dans cette URL (après les blocs &dep%5B%5D=) :
Cependant dans ton dernier fichier joint tu es passé sur la liste de départements suivante, qui est complètement différente.
type_donnee | valeur |
date_deb | 01/10/2025 |
date_fin | 31/03/2026 |
dep | 1 |
dep | 3 |
dep | 7 |
dep | 15 |
dep | 21 |
dep | 26 |
dep | 38 |
dep | 42 |
dep | 43 |
dep | 63 |
dep | 69 |
dep | 73 |
dep | 74 |
Je viens de vérifier sur le site… et j'ai compris pourquoi ! D'abord, je ne connais pas mes numéros de département, c'est pourquoi l'erreur m'avait échappé. Cependant, je ne sais pas pourquoi c'est aussi mal foutu mais en fait les numéros choisis dans "Région/département" ne correspondent pas toujours à ceux de l'URL :
Exemples : (numéro +1 / numéro égal / numéro -1)
Donc ouais… Je n'y trouve absolument aucune cohérence…
Du coup ça fait foirer mon approche, a moins de tester tous les départements 1 à 1 pour faire une table de correspondances numéro réel/numéro encodé dans l'URL on ne va pas s'en sortir…
J'ai trouvé la fonction Excel (365 malheureusement) suivante qui permet d'extraire d'une URL donnée la liste de départements :
=LET(
_brut; TEXTBEFORE(t_Fallback[@URLs]; "&discipline");
_clean; REGEXREPLACE(_brut; "&dep%5B\d*%5D="; "|");
_list; TEXTSPLIT(_clean; "|");
REGEXEXTRACT(DROP(_list;; 1); "\d+")
)Dans powerquery, on peut obtenir un résultat similaire avec :
(url as text) =>
let
// 1. On isole la partie contenant les départements
PartieDepartements = Text.BetweenDelimiters(url, "&dep%5B", "&discipline"),
// 2. On découpe par le délimiteur de base (le signe "=")
// Cela va créer une liste du type {"0%5D=1", "1%5D=3", ...}
SplitParEgal = Text.Split(PartieDepartements, "="),
// 3. On nettoie chaque élément pour ne garder que les chiffres avant le prochain "&"
// On transforme la liste pour extraire uniquement le nombre au début de chaque segment
ExtractionNums = List.Transform(SplitParEgal, each Text.BeforeDelimiter(_, "&")),
// 4. On filtre pour ne garder que les valeurs qui ne sont pas vides et qui sont numériques
// (Le premier split peut générer un résidu vide)
Resultat = List.Select(ExtractionNums, each _ <> "" and (try Number.From(_) is number otherwise false))
in
ResultatDonc, je pense qu'il faudrait passer sur le processus suivant pour remplir "t_URLParam" :
(1) Préalablement aller sur le site récupérer l'URL qui correspond au nombre de départements exacts
(2) coller cette URL dans Excel pour en extraire les départements via PQ/fonction365
(3) actualiser t_URLParam puis charger le calendrier.
Cependant on retourne de plus en plus vers la solution simple de la liste d'URL, la seule différence c'est qu'on n'a pas à aller c/c l'URL de chaque page manuellement, et la modification des dates.
Voilà mon avis :
Si tes départements de filtrage sont constants, on peut récupérer 1x la "bonne liste" pour t_URLParam à partir d'une "bonne url", et les garder ainsi. En sachant que la liste de t_URLParam ne contient pas les numéros de départements exacts, mais ceux utilisés dans l'URL.
Si par contre ça change souvent, alors il faudra passer par AU MOINS 1 copier/coller de l'URL "de base" dans Excel. Après si tu apprécies le fait de n'avoir à copier que 1 lien au lieu de 4 ou 5, il faudra qu'on adapte un peu le workflow et le calendrier (c'est faisable facilement, il suffit de faire une requête qui va remplir automatiquement t_URLParam à partir d'une URL donnée), pour tenir compte de ce stupide problème d'incohérence.
Par exemple on peut peupler t_URLParam à partir d'une URL via une requête de ce style :
let
// on pourra prendre une plage nommée du classeur
Source = "https://www.ffta.fr/competitions?search=&start=2025-10-01&end=2026-03-31&dep%5B0%5D=1&dep%5B1%5D=3&dep%5B2%5D=7&dep%5B3%5D=15&dep%5B4%5D=25&dep%5B5%5D=39&dep%5B6%5D=43&dep%5B7%5D=44&dep%5B8%5D=64&dep%5B9%5D=70&dep%5B10%5D=74&dep%5B11%5D=75&discipline=103&univers=299&inter=All&sort_by=start&sort_order=ASC&page=3",
// 1. Extraction et formatage des dates
DateDebStr = Text.BetweenDelimiters(Source, "start=", "&"),
DateFinStr = Text.BetweenDelimiters(Source, "end=", "&"),
DateDeb = Date.ToText(Date.From(DateDebStr), "dd/MM/yyyy"),
DateFin = Date.ToText(Date.From(DateFinStr), "dd/MM/yyyy"),
// 2. Extraction des départements avec filtrage numérique strict
ZoneDeps = Text.BetweenDelimiters(Source, "&dep%5B", "&discipline"),
SplitDeps = Text.Split(ZoneDeps, "="),
// Nettoyage : on prend ce qui précède le "&", puis on ne garde que les nombres
ListeNettoyee = List.Transform(SplitDeps, each Text.BeforeDelimiter(_, "&")),
// Filtrage ISNUMBER : on tente la conversion, si ça échoue on renvoie null
ListeDeps = List.Select(ListeNettoyee, each
let
check = try Number.From(_)
in
check[HasError] = false
),
// 3. Construction du tableau vertical
TableDates = Table.FromRecords({
[type_donnee = "date_deb", valeur = DateDeb],
[type_donnee = "date_fin", valeur = DateFin]
}),
TableDeps = Table.FromList(ListeDeps, Splitter.SplitByNothing(), {"valeur"}),
TableDepsFinal = Table.AddColumn(TableDeps, "type_donnee", each "dep", type text),
// 4. Fusion finale
TableFinale = Table.Combine({TableDates, TableDepsFinal})
in
TableFinaleDans l'attente de ton retour, c'est dommage car je trouvais ça pratique de pouvoir ajouter les numéros de départements directement dans Excel, mais comme tu peux le voir sur les images ils ne correspondent pas systématiquement à ceux de l'URL donc ça fait tout foirer…
Bonjour,
La liste des départements n'émane pas de moi, j'utilisais directement les urls.
Si tes départements de filtrage sont constants, on peut récupérer 1x la "bonne liste" pour t_URLParam à partir d'une "bonne url", et les garder ainsi. En sachant que la liste de t_URLParam ne contient pas les numéros de départements exacts, mais ceux utilisés dans l'URL.
Cela sera le cas, cette liste ne doit contenir que les départements de la région Rhône Alpes et accessoirement celui de la Côte d'Or.
Une requête lisant cette liste devrait convenir.
Bonne journée,
Cordialement
Ci-joint ton dernier fichier joint avec une plage nommée dans laquelle se trouve l'URL combinant les résultats de la région Rhône Alpes + Côte d'Or. En rafraichissant t_URLParam, cette URL est "analysée" pour récupérer les numéros de départements correspondants + dates.
Le reste du process que je t'avais proposé reste identique.
En espérant que ça fonctionne mieux, désolé pour l'embrouille sur les numéros de départements, ça m'a un peu confus.
Bonjour,
Merci pour le fichier, je regarde cela et te tient au courant.
Cordialement
Re,
Je viens de tester, il n'est pas possible d'avoir l'url des départements Rhône alpes et de la Côte d'or ensemble. Mais en procédant en deux fois, on récupère bien les codes utilisées. J'ai mis à jour le tableau en rajoutant le code de la Côte d'or cela fonctionne.
Je continue et te tiens au courant.
Bonne journée.
Re,
Je viens de tester, il n'est pas possible d'avoir l'url des départements Rhône alpes et de la Côte d'or ensemble. Mais en procédant en deux fois, on récupère bien les codes utilisées. J'ai mis à jour le tableau en rajoutant le code de la Côte d'or cela fonctionne.
Je continue et te tiens au courant.
Bonne journée.
Ce n'est pas possible directement depuis l'interface du site web, mais en modifiant l'URL (regarde bien celle du dernier fichier joint = celle-ci) on peut tout récupérer d'un coup. En effet j'ai noté que lors de la sélection d'une région le site ne fait rien d'autres que d'ajouter bout-à-bout les numéros des départements correspondants. Liste à laquelle on peut en ajouter d'autres sans problèmes.
J'ai fait le check, on retrouve bien les résultats de la côte d'or mélangés aux autres (Saumur, Dijon...).
Re,
Ok, c'est noté. J'en tiendrais compte.
Bonjour,
Fichier final modifié grâce à tes préconisations. Merci
(je ne connais pas encore très bien le M)Pour quelqu’un qui ne connait pas encore très bien le langage M, chapeau bas.
Bonne continuation.
Cordialement
Super, content d'avoir pu t'aider. J'ai appris pas mal de choses aussi.
Au plaisir, bonne continuation.
Bonjour,
J'avais omis de passer le sujet en résolu.
Merci pour ta participation et bonne continuation à toi aussi.
Bonne journée.