If the native port is not connected to a computer, while (!Serial); turns into an infinite loop. The same happens if you use a USB cable without data wires. Most free USB cables do not have data wires so can only be used for charging. The only exceptions are cables included with phones and tablets. Keep trying different USB cables until you find one that works. The cable connected to the programming port must have data wires since upload works. But you need two good cables.
I did a check, I used Native USB to program the Arduino, with the same cable, the programming was executed with success, so I'm thinking my USB cable should be OK.
In any case I will bay a new one USB cable.
Have you any other suggestion for me?
Thanks again.