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-ETIENNE

Cordialement

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=) :

https://www.ffta.fr/competitions?search=&start=2025-10-01&end=2026-03-31&dep%5B%5D=1&dep%5B%5D=3&dep%5B%5D=7&dep%5B%5D=15&dep%5B%5D=25&dep%5B%5D=39&dep%5B%5D=43&dep%5B%5D=44&dep%5B%5D=64&dep%5B%5D=70&dep%5B%5D=74&dep%5B%5D=75&discipline=103&univers=299&inter=All&sort_by=start&sort_order=ASC

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)

image image image

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
Resultat

Donc, 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
    TableFinale

Dans 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.

Rechercher des sujets similaires à "power query maj lente"