Could this be the issue?:
If you don't have data in column A of Sheet1, then the copied row will be overwritten. This is because of the 13th code line:
cell.EntireRow.Copy Sheets("Sheet3").Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
The code will look at the first available row in column A of Sheet3. So when a row is pasted, but column A is still empty, then the next row being pasted will be in the same row, thus overwriting the previous one.
A tip figuring out what the code does when, is to place your cursor on the code and then hit F8. This will run a code line each time you hit F8.
Good luck and have fun!