Bonjour
Sur la base du dernier fichier de JFL, voici une autre approche
let
tAS = Excel.CurrentWorkbook(){[Name="tAS"]}[Content],
Buffer_tAS = Table.Buffer(Table.Sort( tAS,{{"Numéro", Order.Ascending}, {"Date AS", Order.Ascending}})),
tAE = Table.AddColumn(
Excel.CurrentWorkbook(){[Name="tAE"]}[Content],
"Date AS",
(x) => Table.Last(Table.SelectRows(Buffer_tAS, each [Numéro]=x[Numéro] and [Date AS]<x[Date AE]))[Date AS]?),
Jointure = Table.NestedJoin(tAS, {"Numéro", "Date AS"}, tAE, {"Numéro", "Date AS"}, "Join", JoinKind.LeftOuter),
Date_AE = Table.AddColumn(
Jointure,
"Data",
each Table.FromRows({{[Numéro],[Date AS]} & [Join][Date AE]}, {"Numéro", "Date AS"} & {"1"..Text.From(Table.RowCount([Join]))})),
Combine = Table.Combine(Date_AE[Data])
in
Combine
Ecart avec la solution de JFL sur 2 AE, à moins qu'une subtilité m'ait échappée
Stéphane
EDIT
je vois que je n'ai pas pris en compte
2-les appels qui s'affichent sont uniquement les J et J+1 par rapport à l'AS.( si par exemple, l'AE est après 1 moins, on ne le prend plus en compte)
ajouter un critère au Table.Select.Columns pour que l'appel entrant du 3/8 ne soit pas rapproché de l'appel sortant du 1/8 car 2 jours = #duration(2,0,0,0))
= Table.AddColumn(Excel.CurrentWorkbook(){[Name="tAE"]}[Content],"Date AS", (x) => Table.Last(Table.SelectRows(Buffer_tAS, each [Numéro]=x[Numéro] and [Date AS]<x[Date AE] and [Date AS]>(x[Date AE]-#duration(2,0,0,0))))[Date AS]?)