Not checking the logic, but I think that the [...] notation means evaluate
[I2:N101].Copy Cells(3 + i - d, 9) 'copies I2:O101 to position (3+i-d) rows down.
Range("i2", Cells(2 + i, 15)) = "?" 'puts ? in I2 over & down to cleared row in N.
[i102:n152].CLEAR: [q5].ClearContents
should be
Range("I2:N101").Copy Cells(3 + i - d, 9) 'copies I2:O101 to position (3+i-d) rows down.
Range("i2", Cells(2 + i, 15)) = "?" 'puts ? in I2 over & down to cleared row in N.
Range("i102:n152").CLEAR
Range ("q5").ClearContents
The second line might be more understandable using .Resize
Range("i2", Cells(2 + i, 15)) = "?" 'puts ? in I2 over & down to cleared row in N.