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.
-
AuteurMessages
-
11 janvier 2023 à 9 h 32 min #124547
Anton MYRAN
ParticipantBonjour à 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!11 janvier 2023 à 10 h 05 min #124558Christian Maltese
ParticipantBonjour,
pour mieux comprendre, mettez à dispo un fichier exemple, il n’y est pas actuellement
11 janvier 2023 à 10 h 14 min #124559Anton MYRAN
Participantje retente de joindre le fichier (1Mo), j’espère que ça fonctionnera cette fois 🙂
11 janvier 2023 à 10 h 16 min #124560Anton MYRAN
ParticipantNouvel essai avec un .xlsx, le .xlsm ne semble pas passer
Attachments:
You must be logged in to view attached files.12 janvier 2023 à 3 h 04 min #124572Stéphane Lorin
ParticipantBonjour
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
12 janvier 2023 à 6 h 13 min #124573Anton MYRAN
ParticipantBonjour 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!12 janvier 2023 à 10 h 02 min #124578Stéphane Lorin
ParticipantDans 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
-
AuteurMessages
- Vous devez être connecté pour répondre à ce sujet.