Bonjour à tous ,
Une macro indifférente à l'ordre des pièces dans le tableau source. Cliquez sur le bouton "Aligner".
Le code (un peu commenté) est dans module1. La macro s'appelle Alignement.
Sub Alignement()
Dim t, i&, n&, j&, aux
With Sheets("TABLEAU PUISSANCES")
t = .Cells(1, 15).Resize(.Cells(Rows.Count, 2).End(xlUp).Row, 4).Value ' le tableau colonne 15 à 18
ReDim v(1 To UBound(t), 1 To UBound(t, 2)) ' le tableau résultat r
For i = 1 To 4: For j = 1 To 4:: v(i, j) = t(i, j): Next j, i ' titre dans r (lignes 1 à 5)
For i = 5 To UBound(t) ' à partir de la ligne 5
' n -> ligne de la pièce en colonne 15 au sein de la colonne 2 (retourne 0 si pas dans colonne 2)
n = Application.IfError(Application.Match(t(i, 1), .Columns(2), 0), 0)
If n > 0 Then For j = 1 To 4: v(n, j) = t(i, j): Next ' recopie dans r à la position n
Next i
.Cells(1, 15).Resize(UBound(v), UBound(v, 2)) = v ' transfert de r sur la feuille
End With
End Sub