Explanation from sitecore support:
Campaign is supposed to be triggered only for the landing page (the page which was the first in the visit). When a visitor triggered a campaign, the system sets the CampaignID for the current visit. If the visitor triggers campaigns on subsequent pages or another campaign on the same page, the campaign events will still be registered, but the system will not change the CampaignID for the current visit. So the expected behavior in your case will be following: campaign based personalization will show correct rendering only if you access the landing page in the separate incognito windows (different sessions) for each campaign ID.
It validates the explanation of @Marek Musielak
We decided to avoid to create one page for all campaigns. We'll create one pageuse a new custom condition rule, mixing the tutorial provided by campaign@Peter Prochazka in this post: http://blog.martinmiles.net/post/rules-engine-and-sitecore-personalization-based-on-url-query-string-parameters with the sitecore condition rule "Campaign was triggered".
This solves the personnalisation issue like a charm :)
Thank you all !