Data validation does not require you to do row by row, by default Excel seems to make it so (by fixing row and column with dollar signs), but that can be easily changed.
What you can do is create a formula in your conditional formatting for the top most row where you want this applied to, now get rid of the dollar signs in front of the row numbers in your formula and extend the range where this applies for to all the thousands of rows that you want it applied to.
formula in your case for C2 will be: =AND(LEN($A2)>0;LEN(C2)=0)
this can be applied for C2:F2000 :
Or what you can do is specify this formula for C1 (=AND(LEN($A1)>0;LEN(C1)=0)
) and apply it to C:F.
No need for VBA.