// ============================================================
// Monarch — Simulateurs M&A : Cession de titres (abattements) ·
// Cession de fonds de commerce · Droits d'enregistrement
// Requiert window.MSC (simcore.jsx) et window.__mscShared (simulators2.jsx).
// AUCUN schéma : uniquement jauges, barres et chiffres.
// ============================================================
(function () {
const { useState, useEffect } = React;
const M = window.MSC;
const { C, SERIF, BODY, IS, fmt, pct, CountEuro, injectCore, useReveal,
Eyebrow, Label, MoneyInput, Toggle, Shell, InputsCard, Doctrine, Alert, CTAEmail, Gauge, ProsCons } = M;
function shared() { return window.__mscShared; }
// ---------- barre comparée ----------
function Bar({ label, sub, value, base, run, color, good, segments }) {
return (
);
}
// =====================================================
// 1. CESSION DE TITRES & ABATTEMENTS
// =====================================================
function SecuritiesGainAbatementSimulator() {
useEffect(injectCore, []);
const { ParamRecap, Panel, Synth } = shared();
const [acq, setAcq] = useState(10000);
const [cession, setCession] = useState(1500000);
const [duree, setDuree] = useState("plus8");
const [situation, setSituation] = useState("aucune");
const [done, setDone] = useState(false);
const [busy, setBusy] = useState(false);
const reveal = useReveal(done, 250);
const A = Math.max(0, Number(acq) || 0);
const V = Math.max(0, Number(cession) || 0);
const pv = Math.max(0, V - A);
// Sphère privée
const PS = 0.186; // prélèvements sociaux — jamais abattus
const psTax = pv * PS;
const pfu = pv * 0.314; // Flat Tax (défaut)
// Barème + abattement : IR (TMI 30%) sur assiette abattue, PS sur la totalité
let abIR;
if (situation === "retraite") abIR = Math.min(pv, 500000);
else if (situation === "pme") abIR = pv * 0.85;
else abIR = duree === "plus8" ? pv * 0.65 : (duree === "deux8" ? pv * 0.50 : 0);
const irBase = Math.max(0, pv - abIR);
const irBareme = irBase * 0.30;
const baremeTotal = irBareme + psTax;
const usesBareme = situation !== "aucune" && baremeTotal < pfu;
const taxPrivee = usesBareme ? baremeTotal : pfu;
const netPrivee = V - taxPrivee;
// Holding — titres de participation
const qpfc = pv * 0.12 * 0.25; // ≈ 3 %
const netHolding = V - qpfc;
const gain = netHolding - netPrivee;
const tauxEff = pv > 0 ? (qpfc / pv) * 100 : 0;
const go = () => { setBusy(true); setDone(false); setTimeout(() => { setBusy(false); setDone(true); }, 700); };
return (
{!done &&
Prix d'acquisition / capital initial
Prix de cession
Durée de détention
8 ans" }]} value={duree} onChange={setDuree} />
Situation spécifique
{[{ id: "aucune", label: "Aucune" }, { id: "retraite", label: "Départ à la retraite (150-0 D ter)" }, { id: "pme", label: "PME < 10 ans à l'acquisition" }].map((o) => {
const on = situation === o.id;
return setSituation(o.id)} style={{ textAlign: "left", fontFamily: BODY, fontSize: 14, fontWeight: on ? 600 : 500, color: on ? "#fff" : C.encre, background: on ? C.encre : C.blanc, border: `1px solid ${on ? C.encre : C.trait}`, padding: "11px 14px", cursor: "pointer", borderRadius: 2 }}>{o.label} ;
})}
}
{done &&
8 ans" : duree === "deux8" ? "2-8 ans" : "< 2 ans"], ["Situation", situation === "retraite" ? "Retraite" : situation === "pme" ? "PME < 10 ans" : "Aucune"]]} onEdit={() => setDone(false)} />
Prélèvements sociaux incompressibles
Les {fmt(psTax)} de prélèvements sociaux (18,6 %) ne bénéficient d'aucun abattement — ils amputent définitivement votre outil de travail.
Conservé dans la holding pour réinvestir
QPFC 12 % → taux effectif {tauxEff.toFixed(1).replace(".", ",")} %
Régime mère-fille / titres de participation : la plus-value remonte quasiment sans friction.
Les abattements personnels (retraite, durée) adoucissent la fiscalité mais détruisent définitivement une part de votre outil de travail en prélèvements sociaux incompressibles. La structuration précoce via une holding sanctuarise jusqu'à 97 % du fruit de votre cession, vous offrant une puissance de réinvestissement ou de transmission décuplée — tout en verrouillant votre pouvoir via des actions de préférence, dans le respect de la prohibition des clauses léonines.
}
);
}
// =====================================================
// 2. CESSION DE FONDS DE COMMERCE
// =====================================================
function AssetSaleSimulator() {
useEffect(injectCore, []);
const { ParamRecap, Panel } = shared();
const [origine, setOrigine] = useState(0);
const [prix, setPrix] = useState(450000);
const [done, setDone] = useState(false);
const [busy, setBusy] = useState(false);
const reveal = useReveal(done, 250);
const O = Math.max(0, Number(origine) || 0);
const P = Math.max(0, Number(prix) || 0);
const pv = Math.max(0, P - O);
// Exonération 238 quindecies — déterminée automatiquement par le prix
const exoFraction = P <= 300000 ? 1 : (P >= 500000 ? 0 : (500000 - P) / 200000);
const taxable = pv * (1 - exoFraction);
const isTax = IS(taxable);
const netSociete = P - isTax;
// extraction
const boni = netSociete * 0.314;
const netPerso = netSociete - boni;
const go = () => { setBusy(true); setDone(false); setTimeout(() => { setBusy(false); setDone(true); }, 700); };
return (
{!done &&
Valeur d'origine du fonds
Prix de cession du fonds
}
{done &&
setDone(false)} />
{/* Étape 1 */}
Étape 1 · taxation de la société
Net disponible dans la société
= 1 ? "Exonération totale (238 quindecies) — prix ≤ 300 k€" : exoFraction > 0 ? `Exonération partielle dégressive (${Math.round(exoFraction * 100)} %) — prix entre 300 et 500 k€` : `Au-delà de 500 k€, plus-value taxée à l'IS : ${fmt(isTax)}`}
segments={[{ value: netSociete, keep: true, good: true }, { value: P - netSociete }]} />
{/* Étape 2 — l'extraction, toujours calculée */}
Étape 2 · extraction vers votre patrimoine personnel
Net réellement dans votre poche
L'exonération profite à la société, pas à vous : sans structuration, vous reperdez {fmt(boni)} pour récupérer le cash personnellement.
{/* Solution */}
Une fois le fonds vendu, la société — gorgée de liquidités — n'est pas liquidée mais transformée en société civile ou holding d'investissement . Le capital se réinvestit en franchise d'impôt personnel (immobilier, titres, private equity), au lieu d'être amputé une seconde fois à la sortie. Le cash travaille pour vous, dans votre structure.
}
);
}
// =====================================================
// 3. DROITS D'ENREGISTREMENT (DMTO)
// =====================================================
function TransferTaxSimulator() {
useEffect(injectCore, []);
const { ParamRecap } = shared();
const [montant, setMontant] = useState(1000000);
const [done, setDone] = useState(false);
const [busy, setBusy] = useState(false);
const reveal = useReveal(done, 250);
const V = Math.max(0, Number(montant) || 0);
// Fonds de commerce : 0% <23k, 3% 23k-200k, 5% >200k
const fonds = (() => {
let t = 0;
t += Math.max(0, Math.min(V, 200000) - 23000) * 0.03;
t += Math.max(0, V - 200000) * 0.05;
return Math.max(0, t);
})();
// Parts SARL : 3% après abattement 23k
const sarl = Math.max(0, (V - 23000) * 0.03);
// Actions SAS : 0,1%
const sas = V * 0.001;
const maxT = Math.max(fonds, sarl, sas, 1);
const economie = fonds - sas;
const go = () => { setBusy(true); setDone(false); setTimeout(() => { setBusy(false); setDone(true); }, 700); };
const Row = ({ label, sub, tax }) => (
);
return (
{!done &&
Montant de l'opération (valorisation)
}
{done &&
setDone(false)} />
Frottement à la charge de l'acquéreur
Trois structures, trois coûts d'acquisition
Passer d'une cession de fonds (ou de parts SARL) à une cession d'actions de SAS efface, pour votre acquéreur :
0 ? economie : 0} run={reveal} style={{ fontFamily: SERIF, fontSize: "clamp(30px,4vw,48px)", fontWeight: 500, color: C.saugeF, letterSpacing: "-0.01em" }} />
de droits d'enregistrement
La forme juridique de votre entreprise n'est pas qu'une question statutaire, c'est un argument de valorisation. Une transformation de SARL en SAS préalablement à la cession permet d'effacer la quasi-totalité des droits d'enregistrement pour votre acquéreur — une économie qui justifie une révision à la hausse de votre prix de vente net. Le cabinet pilote cette transformation et sa temporalité.
}
);
}
window.SecuritiesGainAbatementSimulator = SecuritiesGainAbatementSimulator;
window.AssetSaleSimulator = AssetSaleSimulator;
window.TransferTaxSimulator = TransferTaxSimulator;
})();