what I mean is that when the code runs there are no headers
                    With wsPo
                        lrP = .Cells.Find("*", .Cells(.Rows.Count, .Columns.Count), SearchOrder:=xlByRows, _
                                SearchDirection:=xlPrevious).Row
                        .Range("B5:P" & lrP).ClearContents
because there is no data in the projects output sheet, lrP becomes 4 and you end up clearing the headers so the later Find operation fails. perhaps use
lrP = application.min(5, .Cells.Find("*", .Cells(.Rows.Count, .Columns.Count), SearchOrder:=xlByRows, _
                                SearchDirection:=xlPrevious).Row)