What happens if someone sends me more bitcoins than I set in my public key?
How can I create a public key that lasts forever, that I can get receive all differents values?
You got something really wrong. It doesnt work like that.
Compare bitcoin address to bank account number. Do you set amount of $/euro in your bank account? No, you don't do this also in BTC address.
Your Bitcoin address will last forever and you can receive and send as much as you like just like in bank account (except you got bank account number for as long as you have agreement with bank)