Your table has 1301 rows, of which only 76 have meaningful (i.e. non-zero) data in column A
The 'multiplier' in column C = 5 for all 1301 rows, including the 'empty' ones at the end
So there are (1301 - 76) x 5 = 6125 additional unneeded rows added to the destination
Try something like this
lrow = wsc.ListObjects("Pharma_ref").DataBodyRange.Rows.Count + 1
With wsc
For crow = 2 To lrow 'starts at 2 because of the header row
Application.StatusBar = "Copy Row " & crow ' <<<<<<<<<<<<<<<<<<<
If wsc.Cells(crow, 1).Value = 0 Then Exit For ' <<<<<<<<<<<<<<<<<<
multiplier = wsc.Cells(crow, 3).Value 'copies the value in column c
For i = 1 To multiplier
wsd.Cells(drow, 5).Value = .Cells(crow, 1).Value
wsd.Cells(drow, 3).Value = .Cells(crow, 2).Value
drow = drow + 1 'increasing the row in worksheet destination
Next i
Next crow
End With
Application.StatusBar = False ' <<<<<<<<<<<<<<<<<<<<