Sub MyCopy()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim lr As Long, r As Long, nr As Long
Dim lc As Long, c As Long
Application.ScreenUpdating = False
' Set sheet where data currently resides
Set ws1 = Sheets("Sheet1")
' Set sheet where to paste results
Set ws2 = Sheets("Sheet2")
' Find last with data on data sheet
lr = ws1.Cells(Rows.Count, "A").End(xlUp).Row
' Find last column with data in header row
lc = ws1.Cells(1, Columns.Count).End(xlToLeft).Column
' Determine number of months (by subtracting 2)
c = lc - 2
' Loop through data on data sheet
For r = 2 To lr
ws2.Activate
' Determine next row to paste data to
nr = ws2.Cells(Rows.Count, "A").End(xlUp).Row + 1
' Populate part number
ws2.Range(Cells(nr, "A"), Cells(nr + c - 1, "A")) = ws1.Cells(r, "A")
' Populate description
ws2.Range(Cells(nr, "B"), Cells(nr + c - 1, "B")) = ws1.Cells(r, "B")
' Copy months
ws1.Activate
ws1.Range(Cells(1, 3), Cells(1, lc)).Copy
ws2.Activate
ws2.Cells(nr, "C").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
' Copy forecast
ws1.Activate
ws1.Range(Cells(r, 3), Cells(r, lc)).Copy
ws2.Activate
ws2.Cells(nr, "D").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Next r
Application.ScreenUpdating = True
MsgBox "Done!"
End Sub