Votre simulation 3e pilier en quelques clics.

Vos coordonnées

+41
+33

Parrainage

(facultatif)

🎁 Faites gagner 50 CHF à votre parrain ! (sous forme de bon (carte‑cadeau) de son choix, remis uniquement si l’offre est validée après rendez‑vous)

Revenir aux projections
Tournez votre iPhone
)) || {}; var isFront = !!(sim && (sim.mode==='frontalier' || sim.regime==='frontalier' || sim.profile==='frontalier')); var cityEl = document.querySelector('[name="city"]'); var pcEl = document.querySelector('[name="postal_code"]'); var city = cityEl ? String(cityEl.value||'').trim() : ''; var pc = pcEl ? String(pcEl.value||'').replace(/\D/g,'') : ''; if (city) return; // already set if (!pc) return; // no postal code available // Swiss lookup only (4-digit). Frontalier handled by Make. if (!isFront && /^[0-9]{4}$/.test(pc)){ if (!window.__communesByCp){ try{ var res = await fetch('assets/communes.json', {cache:'no-store'}); var list = await res.json(); // [{cp, ville, canton}] var mp = new Map(); list.forEach(function(r){ var cp = String(r.cp||'').replace(/\D/g,'').padStart(4,'0').slice(0,4); if(!mp.has(cp)) mp.set(cp, []); mp.get(cp).push(r); }); window.__communesByCp = mp; }catch(_){ window.__communesByCp = new Map(); } } var rows = (window.__communesByCp.get(pc) || []); if (rows.length){ var v = String(rows[0].ville||'').trim(); if (v){ if (cityEl) cityEl.value = v; try{ // also reflect into sim_state for consistency if (sim){ sim.ville = v; sessionStorage.setItem('sim_state', JSON.stringify(sim)); } }catch(_){} } } } }catch(_){} }