.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;
}
@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;
}
}
Société cible et valorisation
EBITDA de la cible (€) Excédent brut d'exploitation annuel servant de base à la valorisation et à la remontée de dividendes
Multiple d'entrée (× EBITDA) Multiple de valorisation retenu à l'acquisition
Apport du repreneur (€) Fonds propres injectés dans la holding de reprise (equity)
Taux de distribution des résultats (%) Part du résultat net de la cible remontée en dividende vers la holding
Dette senior d'acquisition
Taux de la dette senior (%) Taux d'intérêt annuel du crédit d'acquisition
Durée du prêt (ans) Durée d'amortissement de la dette senior (annuités constantes)
Hypothèses de croissance et de sortie
Croissance annuelle de l'EBITDA (%) Taux de croissance composé de l'EBITDA sur l'horizon de 7 ans
Multiple de sortie (× EBITDA) Multiple de valorisation retenu à la revente en année 7
Fiscalité du groupe
Taux d'IS de la cible (%) Impôt sur les sociétés grevant le résultat de la société opérationnelle - art. 219 CGI
Taux d'IS de la holding 25 % en droit commun · 15 % sur les premiers 42 500 € de bénéfices PME
25 % - droit commun15 % - taux réduit PME
Simuler le LBO
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-lbo');
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 annuite(dette, taux, duree){
if(dette<=0) return 0;
if(duree<=0) return dette;
if(taux<=0) return dette/duree;
return dette * ( taux / (1 - Math.pow(1+taux, -duree)) );
}function dividendeNetHolding(ebitda, isC, distrib, isH){
const rnCible = ebitda * (1 - isC);
const divRemonte = rnCible * distrib;
const qpFrais = divRemonte * 0.05;
const isHDiv = qpFrais * isH;
return { rnCible, divRemonte, qpFrais, isHDiv, net: divRemonte - isHDiv };
}function amortissement(dette, taux, duree, ans){
const ann = annuite(dette, taux, duree);
let solde = dette;
const lignes = [];
for(let n=1; n duree) { capital = 0; }
if(capital > solde) capital = solde;
const soldeFin = Math.max(0, solde - capital);
lignes.push({ n, debut: solde, annuite: (n>duree?0:ann), interets: (n>duree?0:interets), capital, fin: soldeFin });
solde = soldeFin;
}
return { ann, lignes, soldeFinal: solde };
}function triSortie(ebitda, crois, multS, apport, detteResid){
const ebitda7 = ebitda * Math.pow(1+crois, 7);
const valSortie = ebitda7 * multS;
const valFP = valSortie - detteResid;
const mult = apport>0 ? valFP/apport : 0;
const tri = (apport>0 && valFP>0) ? Math.pow(valFP/apport, 1/7) - 1 : (valFP0 ? detteSenior/ebitda : 0;
const leverageExcessif = ratioDette > 5;const div0 = dividendeNetHolding(ebitda, isC, distrib, isH);
const ann = annuite(detteSenior, taux, duree);
const capaciteInsuffisante = div0.net < ann;const amort = amortissement(detteSenior, taux, duree, 7);
const detteResid7 = amort.soldeFinal;const sortie = triSortie(ebitda, crois, multS, apport, detteResid7);const sc5 = triSortie(ebitda, crois, 5, apport, detteResid7);
const sc7 = triSortie(ebitda, crois, 7, apport, detteResid7);
const sc9 = triSortie(ebitda, crois, 9, apport, detteResid7);let h = `
Prix d'acquisition
${fmt(prixAcq)}
${multE.toLocaleString('fr-FR')} × EBITDA
Dette senior
${fmt(detteSenior)}
Levier ${ratioDette.toFixed(1).replace('.',',')} × EBITDA
Multiple de capital
${sortie.mult.toFixed(2).replace('.',',')} ×
Fonds propres sortie / apport
TRI investisseur
${pct1(sortie.tri)}
Horizon 7 ans
`;h += `
Structure de financement de l'acquisition
Prix d'acquisition (EBITDA × multiple d'entrée) ${fmt(prixAcq)}
Apport du repreneur (fonds propres) ${fmt(apport)}
Dette senior mobilisée ${fmt(detteSenior)}
Ratio dette / EBITDA (levier) ${ratioDette.toFixed(2).replace('.',',')} ×
Part financée par la dette ${prixAcq>0?pct1(detteSenior/prixAcq):'0,0 %'}
`;if(leverageExcessif){
h += `
Levier excessif : le ratio dette senior / EBITDA ressort à ${ratioDette.toFixed(1).replace('.',',')} ×, au-delà du seuil prudentiel de 5 ×. Les prêteurs exigeront généralement un renforcement de l'apport ou une dette mezzanine subordonnée.
`;
}h += `
Capacité de remboursement - année 1
Résultat net de la cible (après IS ${pct0(isC)}) ${fmt(div0.rnCible)}
Dividende remonté (${pct0(distrib)} du résultat net) ${fmt(div0.divRemonte)}
Quote-part de frais et charges (5 %) ${fmt(div0.qpFrais)}
IS holding sur la quote-part (${pct0(isH)}) ${fmt(div0.isHDiv)}
Dividende net disponible dans la holding ${fmt(div0.net)}
Annuité de la dette senior ${fmt(ann)}
Couverture du service de la dette ${ann>0?(div0.net/ann).toFixed(2).replace('.',',')+' ×':'-'}
`;if(capaciteInsuffisante){
h += `
Risque d'asphyxie financière : le dividende net remontant vers la holding (${fmt(div0.net)}) est inférieur à l'annuité de dette (${fmt(ann)}). La holding ne couvre pas le service de la dette par les seuls dividendes - un allongement de la durée, une franchise de capital ou un renforcement de l'apport sont à étudier.
`;
} else {
h += `
Le dividende net remonté couvre le service de la dette dès l'année 1 (couverture ${(div0.net/ann).toFixed(2).replace('.',',')} ×). La structure dégage un excédent de trésorerie affectable au désendettement anticipé ou à la constitution de réserves.
`;
}let rows = '';
for(const l of amort.lignes){
const eb = ebitda * Math.pow(1+crois, l.n-1);
const dh = dividendeNetHolding(eb, isC, distrib, isH);
rows += `
Année ${l.n} ${fmt(eb)} ${fmt(dh.net)} ${fmt(l.annuite)} ${fmt(l.interets)} ${fmt(l.capital)} ${fmt(l.fin)} `;
}
h += `
Projection annuelle sur 7 ans
Exercice EBITDA Div. net holding Annuité Intérêts Capital remb. Dette résiduelle ${rows}
`;h += `
Valeur de sortie et création de valeur - année 7
EBITDA année 7 (EBITDA × (1 + croissance)^7) ${fmt(sortie.ebitda7)}
Valeur d'entreprise de sortie (× multiple ${multS.toLocaleString('fr-FR')}) ${fmt(sortie.valSortie)}
Dette résiduelle en année 7 ${fmt(detteResid7)}
Valeur des fonds propres à la sortie ${fmt(sortie.valFP)}
Multiple de capital (fonds propres / apport) ${sortie.mult.toFixed(2).replace('.',',')} ×
TRI de l'investisseur (7 ans) ${pct1(sortie.tri)}
`;h += `
Analyse de sensibilité - TRI selon le multiple de sortie
Multiple de sortie Valeur d'entreprise Fonds propres sortie Multiple de capital TRI 7 ans 5 × - scénario prudent${fmt(sc5.valSortie)} ${fmt(sc5.valFP)} ${sc5.mult.toFixed(2).replace('.',',')} × ${pct1(sc5.tri)} 7 × - scénario central${fmt(sc7.valSortie)} ${fmt(sc7.valFP)} ${sc7.mult.toFixed(2).replace('.',',')} × ${pct1(sc7.tri)} 9 × - scénario favorable${fmt(sc9.valSortie)} ${fmt(sc9.valFP)} ${sc9.mult.toFixed(2).replace('.',',')} × ${pct1(sc9.tri)}
`;h += `
Notes et références
Effet de levier fiscal - régime mère-fille (art. 145 et 216 CGI) : les dividendes remontés de la cible vers la holding sont exonérés d'IS, hors quote-part de frais et charges de 5 %. Le coût fiscal de remontée se limite à ${pct2(0.05*isH)} du dividende, préservant la capacité de désendettement.
Hypothèses de croissance : l'EBITDA est supposé croître à ${pct1(crois)} par an de façon composée, sans à-coups. Une révision à la baisse de la trajectoire dégrade directement la couverture du service de la dette et le TRI de sortie.
Risque d'asphyxie : la soutenabilité repose sur la remontée régulière de dividendes. Si la capacité de remboursement (dividende net holding) devient inférieure à l'annuité, la holding doit puiser dans sa trésorerie ou renégocier la dette.
Intégration fiscale (art. 223 A CGI) : une détention de la cible à ≥ 95 % permet d'imputer les intérêts d'emprunt de la holding sur le résultat imposable de la cible (sous réserve du dispositif anti-abus Charasse, art. 223 B CGI), réduisant l'IS d'ensemble et améliorant le cash-flow de désendettement.
Simulation à caractère indicatif et non contractuel - année fiscale de référence 2026. Amortissement de la dette à annuités constantes, hors frais d'arrangement, covenants et fiscalité personnelle du repreneur. À valider avec un professionnel Famille OFFICE.
`;buildHtml('lbo_r', h);
}$('lbo-calc-btn').addEventListener('click', calc);
})();