Bonjour à tous,
Une proposition PowerQuery, 0% ruban... désolé...
let
Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
DebFin = Table.CombineColumns(Table.TransformColumnTypes(Source, {{"début ", type text}, {"fin", type text}}, "fr-FR"),{"début ", "fin"},Combiner.CombineTextByDelimiter("|", QuoteStyle.None),"DebFin"),
Group = Table.Group(DebFin, {"NDI"}, {{"Tbl", each Table.AddIndexColumn(_,"idx",1,1)}}),
Dvlp = Table.ExpandTableColumn(Group, "Tbl", {"DebFin", "idx"}, {"DebFin", "idx"}),
Pivot = Table.Pivot(Table.TransformColumnTypes(Dvlp, {{"idx", type text}}, "fr-FR"), List.Distinct(Table.TransformColumnTypes(Dvlp, {{"idx", type text}}, "fr-FR")[idx]), "idx", "DebFin"),
RemoveNull = List.Accumulate(List.Skip(Table.ColumnNames(Pivot),1), Pivot, (s,c) => Table.ReplaceValue(s,null," | ",Replacer.ReplaceValue,{c})),
Final = List.Accumulate(List.Skip(Table.ColumnNames(RemoveNull),1), RemoveNull, (s,c) => Table.SplitColumn(s,c,Splitter.SplitTextByDelimiter("|"))),
NomColAvant = List.Skip(Table.ColumnNames(Final),1),
NomColApres = List.Transform(NomColAvant, each if Text.Contains(_, ".1") then _&"Début" else _&"Fin"),
NewCol = List.Zip({NomColAvant,NomColApres}),
T_Final = Table.RenameColumns(Final, NewCol)
in
T_Final