Ne traiter que les fichiers modifiés

Accueil – Le CFO masqué Forums Power Query Ne traiter que les fichiers modifiés

  • Ce sujet contient 6 réponses, 3 participants et a été mis à jour pour la dernière fois par Stéphane Lorin, le il y a 2 années et 1 mois.
7 sujets de 1 à 7 (sur un total de 7)
  • Auteur
    Messages
  • #124547
    Anton MYRAN
    Participant

    Bonjour à tous et excellente année 2023 !
    Je suis nouveau sur ce forum, et j’espère ne pas rouvrir un post déjà traité, en tout cas je n’ai rien trouvé…
    Voici mon pb:
    Je dois compiler des feuilles de pointage au format XL.
    Pour accélérer le tratiement, j’ai modifié ma requête pour quelle commence par charger son propre tableau (donc le résultat de l’exécution précédente de la requête). Chaque ligne contient le nom du fichier source et sa date de dernière modif.
    Ensuite elle liste tous les fichiers avec un Folder.Files et compare les dates avec les données déjà importées.
    Elle conserve les données des fichiers non modifiés, et lance le traitement (j’ai développé une fonction pour ça) uniqumeent sur les fichiers nouveaux ou modifiés.
    Ca marche, sauf dans un cas : quand AUCUN fichier nouveau ou modifié n’existe.
    Dans ce cas j’obtiens des erreurs pour certaines lignes du code, je cherche un moyen de contourner. Un genre de “On error goto ErrHandler” comme on pourrait le faire en VBA.
    Quelqu’un a une idée?
    Je joins un fichier avec qq enregistrements à titre d’exemple.
    Merci!

    #124558
    Christian Maltese
    Participant

    Bonjour,

    pour mieux comprendre, mettez à dispo un fichier exemple, il n’y est pas actuellement

    #124559
    Anton MYRAN
    Participant

    je retente de joindre le fichier (1Mo), j’espère que ça fonctionnera cette fois 🙂

    #124560
    Anton MYRAN
    Participant

    Nouvel essai avec un .xlsx, le .xlsm ne semble pas passer

    Attachments:
    You must be logged in to view attached files.
    #124572
    Stéphane Lorin
    Participant

    Bonjour

    Difficile de comprendre votre code, nous n’avons pas accès aux sources. Attention tout de même aux données confidentielles.

    Vous pouvez utiliser Table.IsEmpty pour tester si votre table est vide.

    dans le “in” final, if Table.IsEmpty SourceBefore then … else #”Lignes vides supprimées”

    Sinon j’ai proposé dans cette discussion https://www.lecfomasque.com/sujet/numero-semaine-iso/ une fonction N° Semaine Iso bien plus simple que celle que vous utilisez.

    Stéphane

    #124573
    Anton MYRAN
    Participant

    Bonjour Stéphane
    Merci pour votre réponse !
    Effectivement un Table.IsEmpty permet de récupérer une table sans erreur, même si une partie des lignes précédentes en ont.
    Par contre ça n’empêche pas l’exécution de la partie inutile du code.
    En fait si la table #”Lignes filtrées3″ est vide, il est inutile d’exécuter la suite et il faudrait que la table de sortie soit MyTable0.
    Après c’est plus pour une question de performance, fonctionnellement la solution que vous proposez fait le job.

    Merci pour la fonction du n° de semaine. Elle ne donne pas l’année ni le jour (celle que j’utilise le fait), mais je vais mixer les 2.
    Bonne jounrée!

    #124578
    Stéphane Lorin
    Participant

    Dans ce que j’en ai compris, Power Query ne traite pas le code dans l’ordre mais n’exécute que le nécessaire.
    Si la condition est remplie les dernières lignes de code ne seront pas exécutées.

    if Table.IsEmpty(#”Lignes filtrées3″) then MyTable0 else #”Lignes vides supprimées”

    Sinon voici ma fonction n° de semaine adaptée avec le n° du jour de la semaine au format 2023-W02-4 pour ce 12 janvier 2023 (4eme jour de la 2eme semaine de l’année)

    (Date as date) => let
    Jour_Semaine = Date.DayOfWeek(Date,Day.Monday),
    Jeudi_Semaine = Date.AddDays(Date,3-Jour_Semaine),
    Premier_Jeudi_Année = #date(Date.Year(Jeudi_Semaine),1,7-Date.DayOfWeek(#date(Date.Year(Jeudi_Semaine),1,1),Day.Friday)),
    Num_Semaine = Duration.Days(Jeudi_Semaine – Premier_Jeudi_Année)/7+1
    in
    Text.From(Date.Year(Jeudi_Semaine))&”-W”&Text.PadStart(Text.From(Num_Semaine),2,”0″)&”-“&Text.From(Jour_Semaine+1)

    Stéphane

7 sujets de 1 à 7 (sur un total de 7)
  • Vous devez être connecté pour répondre à ce sujet.