Voilà une version 'générique' qui fonctionnera à partir de 2 colonnes, pour le nombre de colonnes trouvées dans ton tableau.
Le tableau résultat est placé sur une feuille ajoutée à la suite.
Sub TraiterRef_2àXcol()
Dim aa, réf(), n&, i&, j%, réfer$
aa = ActiveSheet.Range("A1").CurrentRegion
n = WorksheetFunction.Sum(WorksheetFunction.Index(aa, 0, 1))
ReDim réf(n): n = 0
For i = 2 To UBound(aa)
If aa(i, 1) = 1 Then
n = n + 1: réf(n) = WorksheetFunction.Index(aa, i, 0)
Else
réfer = aa(i, 2) & " #"
For j = 1 To aa(i, 1)
aa(i, 2) = réfer & Format(j, "000")
n = n + 1: réf(n) = WorksheetFunction.Index(aa, i, 0)
Next j
End If
Next i
réf(0) = WorksheetFunction.Index(aa, 1, 0)
With Worksheets.Add(after:=ActiveSheet).Range("A1").Resize(n + 1, UBound(aa, 2))
.Value = WorksheetFunction.Transpose(WorksheetFunction.Transpose(réf))
.Columns.AutoFit
.HorizontalAlignment = xlCenter
.Borders.Weight = xlThin
End With
End Sub
Cordialement.