Hi Victor,
Maybe give the below a try, just a little note: it's never a great idea to use single letters for things like a range, maye consider using something like rCell as the reference cell within a range loop, keep the single letters to things like counters. You also should not need to use Select to achieve this and just make one cell equal another.
Sub Rep()
Dim rCell As Range
For Each rCell In Range("D12:D" & Range("A" & Rows.Count).End(xlUp).Row)
Select Case rCell.Value
Case 1
rCell.Offset(, 1).Value = 1
Case 2
rCell.Offset(, 1).Value = 2
Case 4
rCell.Offset(, 1).Value = 4
Case 5
rCell.Offset(, 1).Value = rCell.Offset(, 2).Value
Case 6
rCell.Offset(, 1).Value = 6
End Select
Next rCell
End Sub
Hope this helps