try to separate part 5 from the rest of the code; The "P" entered by a macro
is not a worksheet_change event, like typing it .
So , at the end of part 3 of your code before End Sub, call this macro, with:
You might need to call this macro from Private Sub Worksheet_Change too
Code:
sub Date()
Dim cell As Range
For Each cell In Target
If Not Intersect(cell, Range("H:Q")) Is Nothing Then
If UCase(cell) = "P" Then
Application.EnableEvents = False
Range("T" & cell.Row) = Now
Application.EnableEvents = True
End If
End If
Next cell
end sub