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 use a new custom condition rule, mixing the tutorial provided by @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 !