Power Query Jour ouvré précédent si date n'est pas un jour ouvré

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

combory

XLDnaute Junior
Bonjour à tous,

J'ai beaucoup cherché (sans doute mal) mais je ne trouve pas de solutions à mon problème.
Dans power query, je souhaite récupérer la date du jour ouvré précédent si la date de transfert n'est pas un jour ouvré (exclure week-end et jours fériés).
Je joins un fichier avec une colonne "attendu".

Merci d'avance aux bonnes âmes qui se pencheront sur mon problème.
 

Pièces jointes

Bonjour,

C'est parfait @Cousinhub , merci beaucoup pour ta réactivité et cette solution.
J'avais trouvé cette requête sur le net, mais je me suis laissé perturbé par le Date.AddDays. Je croyais que l'on ne pouvait faire que de l'ajout.
Petite question : pourquoi -60 dans la formule ? (et pas -50 ou -4 par exemple)

List.Reverse(fnListeJoursOuvrés([Date transfert],Date.AddDays([Date transfert],-60),[Fériés])){0}

Belle journée à tous.
 
Bonjour,
J'ai gardé ce -60, au cas où tu chercherais à obtenir une date d'un jour ouvré x jours ouvrés avant la date de transfert
(auquel cas, remplacé le 0 de fin par le nombre de jours voulus)
tu peux bien évidemment remplacer ce -60 par un nombre "raisonnable" (je pense - sans aucune raison "raisonnable" - que -5 pourrait suffire)
Bonne fin d'apm
 
Bonjour à tous,

pour le fun, une autre proposition via API donc nécessitant une connexion mais qui possède l'avantage d'être paramétrable avec alsace-moselle (DOM-TOM également - https://www.data.gouv.fr/dataservices/jours-feries/)

PowerQuery:
let
A = Table.TransformColumns(Excel.CurrentWorkbook(){[Name="Table1"]}[Content], {"Date transfert", Date.From}),
B = (x,y)=> not List.Contains(x,y),
C = {"metropole","alsace-moselle"},
D = (x,y)=> List.AllTrue({
    B(List.Transform(Record.FieldNames(Json.Document(Web.Contents("https://calendrier.api.gouv.fr/jours-feries/"&y&"/"&Text.From(Date.Year(x))&".json"))), Date.From), x),
    B({0,1}, Date.DayOfWeek(x,6))}),
E = List.Accumulate(C, A, (s,c)=> Table.AddColumn(s, "Résultat : " & c, each let x = [Date transfert] in
    List.Last(List.Generate( ()=> [a = x, b = D(x,c)], each [b] <> true, each [a = Date.AddDays([a], -1), b = D([a],c)], each [a])) ?? x))
in E

Bonne journée
 
Dernière édition:
Bonjour @alexga78 et merci pour ta contribution.
J'obtiens la liste des dates sur chaque valeur de la date de transfert.
Je ne suis pas encore assez bon avec power query pour trouver la solution.

1764834369346.png


Belle journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
12
Affichages
939
Retour