.focs-sim {
--focs-bleu: #023170;
--focs-bleu-80: #355A8D;
--focs-bleu-60: #6782AA;
--focs-bleu-40: #9AABC7;
--focs-bleu-20: #CCD4E3;
--focs-bleu-10: #E6EAF1;
--focs-blanc: #FFFFFF;
font-family: 'Montserrat', system-ui, -apple-system, sans-serif !important;
font-weight: 400 !important;
color: var(--focs-bleu) !important;
background: var(--focs-blanc) !important;
font-size: 0.875rem !important;
line-height: 1.65 !important;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
padding: 0 !important;
margin: 0 !important;
box-sizing: border-box !important;
}
.focs-sim > * {
margin-left: 0 !important;
margin-right: 0 !important;
padding-left: 0 !important;
padding-right: 0 !important;
}
.focs-sim strong, .focs-sim b, .focs-sim small, .focs-sim span, .focs-sim td, .focs-sim th, .focs-sim p, .focs-sim li, .focs-sim label, .focs-sim div { color: var(--focs-bleu) !important; }
.focs-sim *, .focs-sim *::before, .focs-sim *::after {
color: var(--focs-bleu) !important;
box-sizing: border-box !important;
letter-spacing: normal !important;
}
.focs-sim .focs-slbl {
font-size: 11px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin: 40px 0 18px !important;
padding-top: 0 !important;
border-top: none !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-r2 {
display: grid !important;
grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)) !important;
gap: 24px !important;
margin-bottom: 20px !important;
}
.focs-sim .focs-f {
display: flex !important;
flex-direction: column !important;
gap: 6px !important;
}
.focs-sim .focs-f label {
font-size: 10.5px !important;
font-weight: 600 !important;
color: var(--focs-bleu) !important;
text-transform: uppercase !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-f input, .focs-sim .focs-f select {
font-size: 13.5px !important;
font-family: 'Montserrat', sans-serif !important;
padding: 9px 0 !important;
border: 0 !important;
border-bottom: 1px solid var(--focs-bleu) !important;
background: transparent !important;
color: var(--focs-bleu) !important;
outline: none !important;
-webkit-appearance: none !important;
appearance: none !important;
transition: border-color 0.2s ease !important;
width: 100% !important;
}
.focs-sim .focs-f input:focus, .focs-sim .focs-f select:focus {
border-bottom-color: var(--focs-bleu) !important;
}
.focs-sim .focs-f select {
padding-right: 24px !important;
cursor: pointer !important;
}
.focs-sim .focs-ck {
display: flex !important;
align-items: flex-start !important;
gap: 12px !important;
padding: 6px 0 !important;
background: transparent !important;
border: none !important;
font-size: 13px !important;
color: var(--focs-bleu) !important;
margin-bottom: 4px !important;
cursor: pointer !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ck:hover {
background: transparent !important;
}
.focs-sim .focs-ck input[type="checkbox"] {
appearance: none !important;
-webkit-appearance: none !important;
width: 16px !important;
height: 16px !important;
border: 1px solid var(--focs-bleu) !important;
background: var(--focs-blanc) !important;
cursor: pointer !important;
flex-shrink: 0 !important;
margin-top: 2px !important;
transition: all 0.15s ease !important;
position: relative !important;
display: inline-flex !important;
align-items: center !important;
justify-content: center !important;
}
.focs-sim .focs-ck input[type="checkbox"]:checked {
background: var(--focs-bleu) !important;
border-color: var(--focs-bleu) !important;
}
.focs-sim .focs-ck input[type="checkbox"]:checked::after {
content: "\eb7b";
font-family: 'remixicon' !important;
font-style: normal !important;
font-weight: normal !important;
color: var(--focs-blanc) !important;
font-size: 14px !important;
line-height: 1 !important;
position: absolute !important;
top: 50% !important;
left: 50% !important;
transform: translate(-50%, -50%) !important;
}
.focs-sim .focs-ck-d {
font-size: 11px !important;
color: var(--focs-bleu) !important;
margin-top: 5px !important;
line-height: 1.5 !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-f-d {
font-size: 11px !important;
color: var(--focs-bleu) !important;
line-height: 1.5 !important;
font-family: 'Montserrat', sans-serif !important;
margin-top: -2px !important;
margin-bottom: 4px !important;
font-weight: 400 !important;
}
.focs-sim .focs-btn {
width: 100% !important;
padding: 16px 20px !important;
font-size: 11.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
background: var(--focs-bleu) !important;
color: var(--focs-blanc) !important;
border: none !important;
border-radius: 0 !important;
cursor: pointer !important;
margin-top: 36px !important;
transition: opacity 0.2s ease !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-btn:hover {
opacity: 0.85 !important;
}
.focs-sim .focs-res {
margin-top: 56px !important;
}
.focs-sim .focs-kg {
display: grid !important;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)) !important;
gap: 32px !important;
margin-bottom: 48px !important;
}
.focs-sim .focs-kc {
background: var(--focs-blanc) !important;
border: none !important;
padding: 4px 0 8px !important;
}
.focs-sim .focs-kl {
font-size: 10.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin-bottom: 10px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-kv {
font-family: 'Abhaya Libre', serif !important;
font-size: 26px !important;
font-weight: 400 !important;
color: var(--focs-bleu) !important;
line-height: 1.1 !important;
}
.focs-sim .focs-ks {
font-size: 11px !important;
color: var(--focs-bleu) !important;
margin-top: 6px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-cd {
background: var(--focs-blanc) !important;
border: none !important;
padding: 8px 0 8px !important;
margin-bottom: 40px !important;
}
.focs-sim .focs-ct {
font-size: 12px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin-bottom: 18px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ri {
display: flex !important;
justify-content: space-between !important;
align-items: baseline !important;
padding: 9px 0 !important;
border-bottom: 1px solid var(--focs-bleu) !important;
font-size: 13px !important;
gap: 12px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ri:last-child {
border-bottom: none !important;
}
.focs-sim .focs-rl {
color: var(--focs-bleu) !important;
flex: 1 !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-rv {
font-weight: 500 !important;
color: var(--focs-bleu) !important;
white-space: nowrap !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-al {
border: none !important;
padding: 6px 0 !important;
font-size: 12px !important;
line-height: 1.65 !important;
margin: 12px 0 16px !important;
background: var(--focs-blanc) !important;
color: var(--focs-bleu) !important;
font-family: 'Montserrat', sans-serif !important;
font-style: italic !important;
}
.focs-sim .focs-ot {
width: 100% !important;
border-collapse: collapse !important;
font-size: 12.5px !important;
margin-top: 16px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-ot th {
font-size: 10.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
padding: 12px 12px !important;
background: var(--focs-blanc) !important;
text-align: left !important;
border-bottom: 1px solid var(--focs-bleu) !important;
}
.focs-sim .focs-ot td {
padding: 11px 12px !important;
border-bottom: 1px solid var(--focs-bleu) !important;
vertical-align: middle !important;
}
.focs-sim .focs-ot tr:last-child td {
border-bottom: none !important;
}
.focs-sim .focs-ot .focs-best td {
background: var(--focs-blanc) !important;
font-weight: 600 !important;
color: var(--focs-bleu) !important;
border-bottom: 1px solid var(--focs-bleu) !important;
}
.focs-sim .focs-lbo2 {
display: grid !important;
grid-template-columns: 1fr 1fr !important;
gap: 20px !important;
margin: 20px 0 !important;
}
.focs-sim .focs-lbc {
background: var(--focs-blanc) !important;
border: none !important;
padding: 4px 0 8px !important;
}
.focs-sim .focs-lbh {
font-size: 11.5px !important;
font-weight: 600 !important;
text-transform: uppercase !important;
color: var(--focs-bleu) !important;
margin-bottom: 14px !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-tpsch {
display: flex !important;
flex-direction: column !important;
align-items: center !important;
gap: 10px !important;
padding: 16px 0 8px !important;
}
.focs-sim .focs-tpsn {
border: 1px solid var(--focs-bleu) !important;
padding: 14px 22px !important;
min-width: 260px !important;
text-align: left !important;
background: var(--focs-blanc) !important;
font-family: 'Montserrat', sans-serif !important;
}
.focs-sim .focs-tpsn-main {
background: var(--focs-bleu) !important;
border-color: var(--focs-bleu) !important;
}
.focs-sim .focs-tpsn-main .focs-tpsnl,
.focs-sim .focs-tpsn-main .focs-tpsnn,
.focs-sim .focs-tpsn-main .focs-tpsnd {
color: var(--focs-blanc) !important;
}
.focs-sim .focs-tpsnl {
font-size: 10px !important;
text-transform: uppercase !important;
color: var(--focs-bleu-60) !important;
margin-bottom: 6px !important;
font-weight: 600 !important;
}
.focs-sim .focs-tpsnn {
font-family: 'Abhaya Libre', serif !important;
font-size: 19px !important;
color: var(--focs-bleu) !important;
line-height: 1.1 !important;
margin-bottom: 4px !important;
}
.focs-sim .focs-tpsnd {
font-size: 11.5px !important;
color: var(--focs-bleu-80) !important;
line-height: 1.5 !important;
}
.focs-sim .focs-tpsa {
font-size: 10.5px !important;
text-transform: uppercase !important;
color: var(--focs-bleu-60) !important;
font-weight: 600 !important;
font-family: 'Montserrat', sans-serif !important;
}
@media (max-width: 1024px) {
.focs-sim .focs-r2 {
grid-template-columns: 1fr !important;
}
.focs-sim .focs-kg {
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important;
}
}
@media (max-width: 768px) {
.focs-sim .focs-kg {
grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)) !important;
}
.focs-sim .focs-lbo2 {
grid-template-columns: 1fr !important;
}
}
Parts de holding à démembrer
Valeur des parts en pleine propriété (€) Valeur vénale des parts de la holding avant démembrement
Âge de l'usufruitier (donateur) Âge au jour de la donation - détermine le barème de l'art. 669 CGI
Nombre d'enfants donataires Répartition de la nue-propriété entre les enfants nus-propriétaires
Donations antérieures par enfant (€) Donations reçues de ce parent lors des 15 dernières années - réduisent l'abattement disponible
Taux de revalorisation annuel (%) Croissance annuelle estimée de la valeur des parts
Horizon de projection (ans) Durée avant extinction de l'usufruit (décès de l'usufruitier)
Simuler le démembrement de parts
L'affichage du calendrier nécessite votre consentement préalable pour l'activation des cookies liés à Calendly.
Modifier ce paramètre (function(){
const root = document.querySelector('.focs-dph');
const $ = id => root.querySelector('#'+id);
const v = id => parseFloat($(id).value.replace(/[^0-9,-]/g,'').replace(',','.'))||0;
const vb = id => $(id).checked;
const vs = id => $(id).value;
const fmt = n => Math.round(n).toLocaleString('fr-FR')+' €';
const pct2 = n => (n*100).toFixed(2).replace('.',',')+' %';
const pct1 = n => (n*100).toFixed(1).replace('.',',')+' %';
const pct0 = n => Math.round(n*100)+' %';
const CAL_SLUG = '/d/ctrz-9cg-sfd/rendez-vous-decouverte';function formatFrenchNumber(el){
const raw = String(el.value).replace(/[^0-9,.-]/g,'').replace(',','.');
const n = parseFloat(raw);
if(isNaN(n)||raw===''){el.value='';return;}
el.value = Math.round(n).toLocaleString('fr-FR');
}
function unformatFrenchNumber(el){
el.value = String(el.value).replace(/\s/g,'').replace(/[^\d,.-]/g,'').replace(',','.');
}
root.querySelectorAll('.focs-num').forEach(el => {
formatFrenchNumber(el);
el.addEventListener('focus', function(){ unformatFrenchNumber(this); });
el.addEventListener('blur', function(){ formatFrenchNumber(this); });
});
function buildHtml(id,html){
const el=$(id);
el.style.display='block';
el.innerHTML=html;
}function tauxNP(age){
if(age<21)return 0.10; if(age<31)return 0.20; if(age<41)return 0.30; if(age<51)return 0.40;
if(age<61)return 0.50; if(age<71)return 0.60; if(age<81)return 0.70; if(agep){ d+=(Math.min(a,t[0])-p)*t[1]; p=t[0]; } else break; }
return d;
}function calc(){
const val=v('dph_val');
let age=Math.round(v('dph_age')); if(age110)age=110;
let nb=Math.round(v('dph_nb')); if(nb<1)nb=1;
const don=v('dph_don');
const rev=v('dph_rev')/100;
let hor=Math.round(v('dph_hor')); if(hor0?droitsTotal/npFiscale:0;const ppParEnfant=val/nb;
const assiettePP=Math.max(0,ppParEnfant-abatt);
const droitsPPParEnfant=droitsLD(assiettePP);
const droitsPPTotal=droitsPPParEnfant*nb;
const economie=droitsPPTotal-droitsTotal;const valHorizon=val*Math.pow(1+rev,hor);
const plusValueLatente=valHorizon-val;let h=`
Taux nue-propriété
${pct0(tNP)}
Art. 669 CGI · usufruitier ${age} ans
Valeur fiscale NP
${fmt(npFiscale)}
Assiette taxable de la donation
Droits de donation total
${fmt(droitsTotal)}
${nb} enfant${nb>1?'s':''} · ${fmt(droitsParEnfant)} / enfant
Économie vs pleine propriété
${fmt(economie)}
${droitsPPTotal>0?pct0(economie/droitsPPTotal):'0 %'} de droits évités
`;h+=`
Détail du calcul - donation de la nue-propriété
Valeur des parts en pleine propriété ${fmt(val)}
Taux de nue-propriété selon l'âge (${age} ans) ${pct0(tNP)}
Valeur fiscale de la nue-propriété transmise ${fmt(npFiscale)}
Valeur NP par enfant (${nb} donataire${nb>1?'s':''}) ${fmt(npParEnfant)}
Abattement disponible par enfant ${fmt(abatt)}
Assiette taxable par enfant ${fmt(assiette)}
Droits de donation par enfant ${fmt(droitsParEnfant)}
Droits de donation total ${fmt(droitsTotal)}
`;if(don>0){
h+=`
Les donations antérieures de ${fmt(don)} par enfant réduisent l'abattement de 100 000 € (art. 779 CGI) : abattement résiduel de ${fmt(abatt)} par enfant. Le rappel fiscal porte sur les 15 dernières années.
`;
}
if(assiette===0){
h+=`
La valeur de nue-propriété transmise par enfant est intégralement absorbée par l'abattement : aucun droit de donation n'est dû sur le démembrement.
`;
}h+=`
Comparatif - donation en nue-propriété vs pleine propriété
Modalité de donation Assiette / enfant Abattement Taxable / enfant Droits / enfant Droits total Donation de la nue-propriété Art. 669 CGI · usufruit conservé ${fmt(npParEnfant)} ${fmt(abatt)} ${fmt(assiette)} ${fmt(droitsParEnfant)} ${fmt(droitsTotal)} Donation en pleine propriété Transmission de la totalité des droits ${fmt(ppParEnfant)} ${fmt(abatt)} ${fmt(assiettePP)} ${fmt(droitsPPParEnfant)} ${fmt(droitsPPTotal)}
Économie de droits liée au démembrement : ${fmt(economie)} ${droitsPPTotal>0?', soit '+pct0(economie/droitsPPTotal)+' des droits qui seraient dus en pleine propriété':''}.
`;const ages=[55,60,65,70,75];
let rows='';
ages.forEach(a=>{
const t=tauxNP(a);
const npF=val*t;
const npPar=npF/nb;
const ass=Math.max(0,npPar-abatt);
const dr=droitsLD(ass)*nb;
const best=a===age?' class="focs-best"':'';
rows+=`
${a} ans ${pct0(t)} ${fmt(npF)} ${fmt(dr)} `;
});
h+=`
Simulation selon l'âge de l'usufruitier au jour de la donation
Âge de l'usufruitier Taux NP (art. 669) Valeur fiscale NP Droits total ${rows}
Plus la donation intervient tôt, plus la valeur taxable de la nue-propriété est faible : anticiper le démembrement réduit mécaniquement l'assiette des droits.
`;h+=`
Extinction de l'usufruit à l'horizon (${hor} an${hor>1?'s':''})
Valeur des parts aujourd'hui ${fmt(val)}
Taux de revalorisation retenu ${pct1(rev)} / an
Valeur reconstituée à l'extinction (${hor} an${hor>1?'s':''}) ${fmt(valHorizon)}
Plus-value latente transmise hors droits ${fmt(plusValueLatente)}
Droits supplémentaires à l'extinction 0 €
Au décès de l'usufruitier, la pleine propriété se reconstitue automatiquement sur la tête des nus-propriétaires, sans droit de succession (art. 1133 CGI). La plus-value de ${fmt(plusValueLatente)} accumulée entre la donation et l'extinction est transmise en franchise de droits.
`;h+=`
Points clés du démembrement de parts de holding
Art. 669 CGI : la valeur de l'usufruit et de la nue-propriété est fixée forfaitairement selon l'âge de l'usufruitier ; le barème s'apprécie au jour du fait générateur (la donation).
Conservation de l'usufruit : le donateur conserve la gouvernance (droit de vote sur l'affectation des résultats, sauf statuts contraires) et les revenus distribués (dividendes), garantissant maintien du contrôle et des ressources.
Transmission de la plus-value latente : toute valorisation postérieure à la donation profite aux nus-propriétaires sans taxation supplémentaire lors de la reconstitution.
Reconstitution au décès : l'extinction de l'usufruit ne donne lieu à aucun droit de mutation (art. 1133 CGI), à condition de respecter les formes de la donation régulière et d'éviter tout abus de droit (art. L.64 LPF).
`;h+=`
Simulation à caractère indicatif et non contractuel - année fiscale 2026. Le barème de l'art. 669 CGI et les tarifs des droits de mutation en ligne directe sont susceptibles d'évolution. Se rapprocher d'un professionnel Famille OFFICE avant toute opération.
`;buildHtml('dph_r',h);
}$('dph-calc-btn').addEventListener('click', calc);
})();