Hi,
You forget to put your code inside code tag, please do so.
Sub Worksheet_Change(ByVal Target As Range) is only triggered if changes is performed by hand (by manually typing in the target range), it will not triggered if the changes is caused by macro or as return value of function in target cell.
So, you put formula in P4:P200 : =IF(M4="","",1), and when you type something in column M, the value in P4:P200 is also changed, but the changes is not by manual typing in P4:P200, but as a result of the function, that's why the Worksheet_Change() event is not triggered.
The remedy for the situation is, instead tracking of P4:P200, you should use M4:M200 instead (the range that its value is changed by manually typing) :
Regards
Bookmarks