Bonjour à tous !
Une proposition Power Query, basée sur la très inspirante requête de BAROUTE78 () :
let
fnBD = (rec,deldeb,delfin)=> Text.BetweenDelimiters(Record.Field(rec,"Colonne1"),deldeb,delfin),
fnRCNull = (NomTable as table) =>Table.SelectColumns(NomTable, List.Select(Table.ColumnNames(NomTable),each List.NonNullCount(Table.Column(NomTable,_))<>0)),
Source = fnRCNull(Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content]),
FilterNull = Table.SelectRows(Source, each ([Colonne1] <> null)),
GroupBy = Table.Group(FilterNull, {"Colonne1"}, {{"rec", each [tbl=_, #"Transport n°"=fnBD(tbl{0},"Transport n°"," "), #"Référence donneur d'ordre"=fnBD(tbl{0},"Référence donneur d'ordre : "," Num"), Numéro LV=fnBD(tbl{0},"Numéros LV : ","#(lf)")] }}, 0 , (s,c)=> Number.From( Text.StartsWith(c[Colonne1],"Transport n°")))[[rec]],
RecExpand = Table.ExpandRecordColumn(GroupBy, "rec", {"tbl", "Transport n°", "Référence donneur d'ordre", "Numéro LV"}),
TblExpand = Table.ExpandTableColumn(RecExpand, "tbl", {"Colonne1", "Colonne10", "Colonne11", "Colonne6", "Colonne9"}, {"Produits", "Taux TVA", "Total HT", "Quantité", "Prix Unit. HT"}),
Filter = Table.SelectRows(TblExpand, each ([Produits] = "Transport" or [Produits] = "Transport/RETOUR SAV"))
in
Filter
La vélocité devrait (j'espère !) être au rendez-vous : moins d'étapes et surtout moins d'itérations successives.