Bonjour,
Sub essai()
Num = [A2:A4]
Vehic = [B2:G4]
entete = [B1:G1]
Dim Result()
Ncol = UBound(Vehic, 2)
j = 1
For i = LBound(Vehic) To UBound(Vehic)
ligne = Application.Index(Vehic, i)
mx = Application.Max(ligne)
pmx = Application.Match(mx, ligne, 0)
ReDim Preserve Result(1 To Ncol + 1, 1 To mx + j)
For lig = j To j + mx - 1
Result(1, lig) = Num(i, 1)
Result(pmx + 1, lig) = entete(1, pmx)
j = j + 1
Next lig
Next i
[s2].Resize(UBound(Result, 2), Ncol + 1) = Application.Transpose(Result)
[t1].Resize(, UBound(entete, 2)) = entete
End Sub
Application.Match sur un Array peut être lent. Peut être remplacé par:
Function PosTbl(Tbl, colonne, Valeur)
For i = LBound(Tbl) To UBound(Tbl)
If Tbl(i, colonne) = Valeur Then PosTbl = i: Exit Function
Next i
PosTbl = 0
End Function
Ceuzin