{"id":3463,"date":"2026-08-22T13:08:59","date_gmt":"2026-08-22T13:08:59","guid":{"rendered":"https:\/\/maroczain.com\/?page_id=3463"},"modified":"2026-08-22T13:08:59","modified_gmt":"2026-08-22T13:08:59","slug":"generateur-de-couts-de-formation","status":"publish","type":"page","link":"https:\/\/maroczain.com\/en\/generateur-de-couts-de-formation\/","title":{"rendered":"G\u00e9n\u00e9rateur de couts de formation"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>G\u00e9n\u00e9rateur de co\u00fbts de formation \u2014 Maroc Zain Academy<\/title>\n<style>\n:root{\n  --bg:#f5f8fc;\n  --card:#ffffff;\n  --ink:#0f172a;\n  --muted:#64748b;\n  --primary:#0b5fa5;\n  --primary2:#0e7490;\n  --gold:#e9c84a;\n  --border:#dbe4ee;\n  --good:#15803d;\n  --warn:#c2410c;\n  --bad:#b91c1c;\n}\n*{box-sizing:border-box}\nbody{\n  margin:0;\n  font-family:Arial,Helvetica,sans-serif;\n  background:linear-gradient(135deg,#eef6ff 0%,#f8fafc 45%,#fffdf2 100%);\n  color:var(--ink)\n}\n.wrapper{max-width:1400px;margin:auto;padding:24px}\n.hero{\n  background:linear-gradient(135deg,#083b66,#0b5fa5 55%,#0e7490);\n  color:white;padding:28px;border-radius:24px;box-shadow:0 18px 45px rgba(15,23,42,.16);\n  margin-bottom:22px;position:relative;overflow:hidden\n}\n.hero:after{\n  content:\"\";position:absolute;right:-70px;top:-70px;width:220px;height:220px;\n  background:rgba(233,200,74,.18);border-radius:50%\n}\n.hero h1{margin:0 0 8px;font-size:clamp(28px,4vw,48px)}\n.hero p{margin:0;color:#e5f2ff;font-size:17px}\n.badge{\n  display:inline-block;background:var(--gold);color:#17324d;font-weight:800;\n  padding:7px 12px;border-radius:999px;margin-bottom:12px\n}\n.toolbar{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}\nbutton{\n  border:0;border-radius:12px;padding:11px 16px;font-weight:800;cursor:pointer;\n  transition:.2s transform,.2s box-shadow\n}\nbutton:hover{transform:translateY(-1px);box-shadow:0 8px 18px rgba(15,23,42,.12)}\n.btn-main{background:var(--gold);color:#17324d}\n.btn-light{background:white;color:#0b5fa5}\n.btn-dark{background:#102a43;color:white}\n.grid{display:grid;grid-template-columns:1.15fr .85fr;gap:22px}\n.card{\n  background:var(--card);border:1px solid var(--border);border-radius:20px;padding:20px;\n  box-shadow:0 10px 26px rgba(15,23,42,.06)\n}\n.card h2{margin:0 0 14px;font-size:22px}\n.section-title{\n  margin:18px 0 10px;font-size:14px;text-transform:uppercase;\n  letter-spacing:.08em;color:var(--primary);font-weight:900\n}\n.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}\n.field label{display:block;font-size:13px;font-weight:800;margin-bottom:6px;color:#334155}\n.field input,.field select{\n  width:100%;padding:11px 12px;border:1px solid #cbd5e1;border-radius:11px;\n  font-size:15px;background:#fff\n}\n.field input:focus,.field select:focus{outline:2px solid rgba(11,95,165,.18);border-color:var(--primary)}\n.results{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}\n.kpi{\n  border:1px solid var(--border);border-radius:16px;padding:14px;background:#fbfdff\n}\n.kpi small{display:block;color:var(--muted);font-weight:700;margin-bottom:6px}\n.kpi strong{font-size:25px}\n.kpi.full{grid-column:1\/-1}\n.status{\n  display:flex;align-items:center;gap:10px;padding:14px;border-radius:14px;\n  margin-bottom:14px;font-weight:900\n}\n.status.good{background:#ecfdf3;color:var(--good)}\n.status.warn{background:#fff7ed;color:var(--warn)}\n.status.bad{background:#fef2f2;color:var(--bad)}\n.dot{width:11px;height:11px;border-radius:50%;background:currentColor}\n.progress{height:12px;border-radius:999px;background:#e2e8f0;overflow:hidden;margin-top:10px}\n.progress span{display:block;height:100%;background:linear-gradient(90deg,var(--primary),var(--gold));width:0%}\ntable{width:100%;border-collapse:collapse;font-size:14px}\nth,td{padding:10px;border-bottom:1px solid var(--border);text-align:right}\nth:first-child,td:first-child{text-align:left}\nth{background:#f8fafc;color:#334155}\n.scenarios{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:12px}\n.scenario{\n  border:1px solid var(--border);border-radius:16px;padding:14px;background:#fff;cursor:pointer\n}\n.scenario:hover{border-color:var(--primary)}\n.scenario h3{margin:0 0 8px;font-size:17px}\n.scenario p{margin:3px 0;color:var(--muted);font-size:13px}\n.note{\n  margin-top:14px;padding:12px 14px;background:#f8fafc;border-left:4px solid var(--gold);\n  border-radius:10px;color:#475569;font-size:13px;line-height:1.5\n}\n.footer{margin-top:20px;text-align:center;color:var(--muted);font-size:13px}\n@media(max-width:900px){\n  .grid{grid-template-columns:1fr}\n  .form-grid{grid-template-columns:1fr}\n  .scenarios{grid-template-columns:1fr}\n}\n@media print{\n  body{background:white}\n  .toolbar,.scenarios{display:none!important}\n  .wrapper{max-width:none;padding:0}\n  .hero,.card{box-shadow:none}\n}\n<\/style>\n<\/head>\n<body>\n<div class=\"wrapper\">\n  <section class=\"hero\">\n    <span class=\"badge\">MAROC ZAIN ACADEMY<\/span>\n    <h1>G\u00e9n\u00e9rateur de co\u00fbts de formation<\/h1>\n    <p>Calculez en temps r\u00e9el le co\u00fbt d&rsquo;une session, le prix de revient, la marge et le seuil de rentabilit\u00e9.<\/p>\n    <div class=\"toolbar\">\n      <button class=\"btn-main\" onclick=\"window.print()\">\ud83d\udda8\ufe0f Imprimer \/ PDF<\/button>\n      <button class=\"btn-light\" onclick=\"exportCSV()\">\u2b07\ufe0f Exporter CSV<\/button>\n      <button class=\"btn-dark\" onclick=\"resetForm()\">\u21ba R\u00e9initialiser<\/button>\n    <\/div>\n  <\/section>\n\n  <div class=\"grid\">\n    <section class=\"card\">\n      <h2>1. Param\u00e8tres de la formation<\/h2>\n\n      <div class=\"section-title\">Informations g\u00e9n\u00e9rales<\/div>\n      <div class=\"form-grid\">\n        <div class=\"field\">\n          <label>Intitul\u00e9 de la formation<\/label>\n          <input id=\"title\" type=\"text\" value=\"Formation Agent d'Escale\">\n        <\/div>\n        <div class=\"field\">\n          <label>Type de formation<\/label>\n          <select id=\"type\">\n            <option>Pr\u00e9sentiel<\/option>\n            <option>Distanciel<\/option>\n            <option>Hybride<\/option>\n            <option>Intra-entreprise<\/option>\n            <option>Inter-entreprises<\/option>\n          <\/select>\n        <\/div>\n        <div class=\"field\">\n          <label>Nombre de participants<\/label>\n          <input id=\"participants\" type=\"number\" min=\"1\" value=\"15\">\n        <\/div>\n        <div class=\"field\">\n          <label>Nombre de jours<\/label>\n          <input id=\"days\" type=\"number\" min=\"1\" step=\"0.5\" value=\"2\">\n        <\/div>\n        <div class=\"field\">\n          <label>Prix factur\u00e9 \/ participant (MAD)<\/label>\n          <input id=\"price\" type=\"number\" min=\"0\" value=\"2500\">\n        <\/div>\n        <div class=\"field\">\n          <label>TVA (%)<\/label>\n          <input id=\"vat\" type=\"number\" min=\"0\" value=\"20\">\n        <\/div>\n      <\/div>\n\n      <div class=\"section-title\">Co\u00fbts fixes de la session<\/div>\n      <div class=\"form-grid\">\n        <div class=\"field\">\n          <label>Honoraires formateur \/ jour (MAD)<\/label>\n          <input id=\"trainerDay\" type=\"number\" min=\"0\" value=\"3000\">\n        <\/div>\n        <div class=\"field\">\n          <label>Location salle \/ jour (MAD)<\/label>\n          <input id=\"roomDay\" type=\"number\" min=\"0\" value=\"1500\">\n        <\/div>\n        <div class=\"field\">\n          <label>Transport formateur (MAD)<\/label>\n          <input id=\"transport\" type=\"number\" min=\"0\" value=\"800\">\n        <\/div>\n        <div class=\"field\">\n          <label>H\u00e9bergement formateur (MAD)<\/label>\n          <input id=\"hotel\" type=\"number\" min=\"0\" value=\"1200\">\n        <\/div>\n        <div class=\"field\">\n          <label>Communication \/ marketing (MAD)<\/label>\n          <input id=\"marketing\" type=\"number\" min=\"0\" value=\"700\">\n        <\/div>\n        <div class=\"field\">\n          <label>Administration \/ coordination (MAD)<\/label>\n          <input id=\"admin\" type=\"number\" min=\"0\" value=\"1000\">\n        <\/div>\n        <div class=\"field\">\n          <label>Mat\u00e9riel \/ audiovisuel (MAD)<\/label>\n          <input id=\"equipment\" type=\"number\" min=\"0\" value=\"500\">\n        <\/div>\n        <div class=\"field\">\n          <label>Autres co\u00fbts fixes (MAD)<\/label>\n          <input id=\"otherFixed\" type=\"number\" min=\"0\" value=\"0\">\n        <\/div>\n      <\/div>\n\n      <div class=\"section-title\">Co\u00fbts variables par participant<\/div>\n      <div class=\"form-grid\">\n        <div class=\"field\">\n          <label>Pause-caf\u00e9 \/ jour \/ personne (MAD)<\/label>\n          <input id=\"coffee\" type=\"number\" min=\"0\" value=\"60\">\n        <\/div>\n        <div class=\"field\">\n          <label>D\u00e9jeuner \/ jour \/ personne (MAD)<\/label>\n          <input id=\"meal\" type=\"number\" min=\"0\" value=\"120\">\n        <\/div>\n        <div class=\"field\">\n          <label>Support p\u00e9dagogique \/ personne (MAD)<\/label>\n          <input id=\"support\" type=\"number\" min=\"0\" value=\"70\">\n        <\/div>\n        <div class=\"field\">\n          <label>Attestation \/ dipl\u00f4me \/ personne (MAD)<\/label>\n          <input id=\"certificate\" type=\"number\" min=\"0\" value=\"30\">\n        <\/div>\n        <div class=\"field\">\n          <label>Kit participant \/ personne (MAD)<\/label>\n          <input id=\"kit\" type=\"number\" min=\"0\" value=\"50\">\n        <\/div>\n        <div class=\"field\">\n          <label>Autres variables \/ personne (MAD)<\/label>\n          <input id=\"otherVariable\" type=\"number\" min=\"0\" value=\"0\">\n        <\/div>\n      <\/div>\n\n      <div class=\"section-title\">Sc\u00e9narios rapides<\/div>\n      <div class=\"scenarios\">\n        <div class=\"scenario\" onclick=\"applyScenario('prudent')\">\n          <h3>Prudent<\/h3>\n          <p>10 participants<\/p><p>Prix : 2 200 MAD<\/p>\n        <\/div>\n        <div class=\"scenario\" onclick=\"applyScenario('standard')\">\n          <h3>Standard<\/h3>\n          <p>15 participants<\/p><p>Prix : 2 500 MAD<\/p>\n        <\/div>\n        <div class=\"scenario\" onclick=\"applyScenario('premium')\">\n          <h3>Premium<\/h3>\n          <p>20 participants<\/p><p>Prix : 3 200 MAD<\/p>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <section class=\"card\">\n      <h2>2. Rentabilit\u00e9 de la session<\/h2>\n      <div id=\"status\" class=\"status good\"><span class=\"dot\"><\/span><span>Session rentable<\/span><\/div>\n\n      <div class=\"results\">\n        <div class=\"kpi\">\n          <small>Chiffre d&rsquo;affaires HT<\/small>\n          <strong id=\"revenueHT\">0 MAD<\/strong>\n        <\/div>\n        <div class=\"kpi\">\n          <small>Chiffre d&rsquo;affaires TTC<\/small>\n          <strong id=\"revenueTTC\">0 MAD<\/strong>\n        <\/div>\n        <div class=\"kpi\">\n          <small>Co\u00fbt total<\/small>\n          <strong id=\"totalCost\">0 MAD<\/strong>\n        <\/div>\n        <div class=\"kpi\">\n          <small>Co\u00fbt par participant<\/small>\n          <strong id=\"costPerPerson\">0 MAD<\/strong>\n        <\/div>\n        <div class=\"kpi\">\n          <small>Marge brute<\/small>\n          <strong id=\"margin\">0 MAD<\/strong>\n        <\/div>\n        <div class=\"kpi\">\n          <small>Taux de marge sur CA<\/small>\n          <strong id=\"marginRate\">0 %<\/strong>\n        <\/div>\n        <div class=\"kpi\">\n          <small>Seuil de rentabilit\u00e9<\/small>\n          <strong id=\"breakEven\">0 participants<\/strong>\n        <\/div>\n        <div class=\"kpi\">\n          <small>Marge \/ participant<\/small>\n          <strong id=\"marginPerPerson\">0 MAD<\/strong>\n        <\/div>\n        <div class=\"kpi full\">\n          <small>Objectif de rentabilit\u00e9<\/small>\n          <div class=\"progress\"><span id=\"profitBar\"><\/span><\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"section-title\">D\u00e9tail des co\u00fbts<\/div>\n      <table>\n        <thead><tr><th>Poste<\/th><th>Montant<\/th><\/tr><\/thead>\n        <tbody>\n          <tr><td>Honoraires formateur<\/td><td id=\"tTrainer\">0<\/td><\/tr>\n          <tr><td>Location salle<\/td><td id=\"tRoom\">0<\/td><\/tr>\n          <tr><td>Transport + h\u00e9bergement<\/td><td id=\"tTravel\">0<\/td><\/tr>\n          <tr><td>Marketing + administration<\/td><td id=\"tAdmin\">0<\/td><\/tr>\n          <tr><td>Mat\u00e9riel + autres fixes<\/td><td id=\"tOtherFixed\">0<\/td><\/tr>\n          <tr><td>Restauration<\/td><td id=\"tFood\">0<\/td><\/tr>\n          <tr><td>Supports + dipl\u00f4mes + kits<\/td><td id=\"tMaterials\">0<\/td><\/tr>\n          <tr><td>Autres variables<\/td><td id=\"tOtherVariable\">0<\/td><\/tr>\n          <tr><th>Total<\/th><th id=\"tTotal\">0<\/th><\/tr>\n        <\/tbody>\n      <\/table>\n\n      <div class=\"note\">\n        <strong>Lecture :<\/strong> le seuil de rentabilit\u00e9 correspond au nombre minimal de participants n\u00e9cessaires pour couvrir l&rsquo;ensemble des charges, sur la base du prix HT saisi.\n      <\/div>\n    <\/section>\n  <\/div>\n\n  <div class=\"footer\">Maroc Zain Academy \u2014 Outil interne de simulation financi\u00e8re des formations<\/div>\n<\/div>\n\n<script>\nconst ids = [\n'title','type','participants','days','price','vat','trainerDay','roomDay','transport','hotel',\n'marketing','admin','equipment','otherFixed','coffee','meal','support','certificate','kit','otherVariable'\n];\n\nids.forEach(id=>{\n  const el=document.getElementById(id);\n  el.addEventListener('input', calculate);\n  el.addEventListener('change', calculate);\n});\n\nfunction n(id){ return parseFloat(document.getElementById(id).value)||0; }\nfunction money(v){ return Math.round(v).toLocaleString('fr-FR')+' MAD'; }\n\nfunction calculate(){\n  const p=n('participants');\n  const d=n('days');\n  const price=n('price');\n  const vat=n('vat');\n\n  const trainer=n('trainerDay')*d;\n  const room=n('roomDay')*d;\n  const travel=n('transport')+n('hotel');\n  const admin=n('marketing')+n('admin');\n  const otherFixed=n('equipment')+n('otherFixed');\n\n  const food=(n('coffee')+n('meal'))*d*p;\n  const materials=(n('support')+n('certificate')+n('kit'))*p;\n  const otherVar=n('otherVariable')*p;\n\n  const fixed=trainer+room+travel+admin+otherFixed;\n  const variableTotal=food+materials+otherVar;\n  const variablePerPerson=p>0?variableTotal\/p:0;\n  const total=fixed+variableTotal;\n\n  const revenueHT=p*price;\n  const revenueTTC=revenueHT*(1+vat\/100);\n  const margin=revenueHT-total;\n  const marginRate=revenueHT>0?(margin\/revenueHT*100):0;\n  const costPerPerson=p>0?total\/p:0;\n  const marginPerPerson=p>0?margin\/p:0;\n\n  const contribution=price-variablePerPerson;\n  const breakEven=contribution>0?Math.ceil(fixed\/contribution):0;\n\n  document.getElementById('revenueHT').textContent=money(revenueHT);\n  document.getElementById('revenueTTC').textContent=money(revenueTTC);\n  document.getElementById('totalCost').textContent=money(total);\n  document.getElementById('costPerPerson').textContent=money(costPerPerson);\n  document.getElementById('margin').textContent=money(margin);\n  document.getElementById('marginRate').textContent=marginRate.toFixed(1)+' %';\n  document.getElementById('breakEven').textContent=breakEven+' participant'+(breakEven>1?'s':'');\n  document.getElementById('marginPerPerson').textContent=money(marginPerPerson);\n\n  document.getElementById('tTrainer').textContent=money(trainer);\n  document.getElementById('tRoom').textContent=money(room);\n  document.getElementById('tTravel').textContent=money(travel);\n  document.getElementById('tAdmin').textContent=money(admin);\n  document.getElementById('tOtherFixed').textContent=money(otherFixed);\n  document.getElementById('tFood').textContent=money(food);\n  document.getElementById('tMaterials').textContent=money(materials);\n  document.getElementById('tOtherVariable').textContent=money(otherVar);\n  document.getElementById('tTotal').textContent=money(total);\n\n  const status=document.getElementById('status');\n  if(marginRate>=25){\n    status.className='status good';\n    status.innerHTML='<span class=\"dot\"><\/span><span>Tr\u00e8s bonne rentabilit\u00e9<\/span>';\n  }else if(margin>=0){\n    status.className='status warn';\n    status.innerHTML='<span class=\"dot\"><\/span><span>Rentable mais marge \u00e0 renforcer<\/span>';\n  }else{\n    status.className='status bad';\n    status.innerHTML='<span class=\"dot\"><\/span><span>Session d\u00e9ficitaire<\/span>';\n  }\n\n  const bar=Math.max(0,Math.min(100,marginRate*2));\n  document.getElementById('profitBar').style.width=bar+'%';\n}\n\nfunction applyScenario(s){\n  if(s==='prudent'){\n    document.getElementById('participants').value=10;\n    document.getElementById('price').value=2200;\n  }\n  if(s==='standard'){\n    document.getElementById('participants').value=15;\n    document.getElementById('price').value=2500;\n  }\n  if(s==='premium'){\n    document.getElementById('participants').value=20;\n    document.getElementById('price').value=3200;\n  }\n  calculate();\n}\n\nfunction resetForm(){\n  document.getElementById('participants').value=15;\n  document.getElementById('days').value=2;\n  document.getElementById('price').value=2500;\n  document.getElementById('vat').value=20;\n  document.getElementById('trainerDay').value=3000;\n  document.getElementById('roomDay').value=1500;\n  document.getElementById('transport').value=800;\n  document.getElementById('hotel').value=1200;\n  document.getElementById('marketing').value=700;\n  document.getElementById('admin').value=1000;\n  document.getElementById('equipment').value=500;\n  document.getElementById('otherFixed').value=0;\n  document.getElementById('coffee').value=60;\n  document.getElementById('meal').value=120;\n  document.getElementById('support').value=70;\n  document.getElementById('certificate').value=30;\n  document.getElementById('kit').value=50;\n  document.getElementById('otherVariable').value=0;\n  calculate();\n}\n\nfunction exportCSV(){\n  calculate();\n  const rows=[\n    ['Intitul\u00e9',document.getElementById('title').value],\n    ['Type',document.getElementById('type').value],\n    ['Participants',n('participants')],\n    ['Jours',n('days')],\n    ['Prix HT \/ participant',n('price')],\n    ['CA HT',document.getElementById('revenueHT').textContent],\n    ['CA TTC',document.getElementById('revenueTTC').textContent],\n    ['Co\u00fbt total',document.getElementById('totalCost').textContent],\n    ['Co\u00fbt \/ participant',document.getElementById('costPerPerson').textContent],\n    ['Marge',document.getElementById('margin').textContent],\n    ['Taux de marge',document.getElementById('marginRate').textContent],\n    ['Seuil de rentabilit\u00e9',document.getElementById('breakEven').textContent]\n  ];\n  const csv=rows.map(r=>r.map(v=>'\"'+String(v).replaceAll('\"','\"\"')+'\"').join(';')).join('\\n');\n  const blob=new Blob([\"\\uFEFF\"+csv],{type:'text\/csv;charset=utf-8;'});\n  const url=URL.createObjectURL(blob);\n  const a=document.createElement('a');\n  a.href=url;\n  a.download='couts-formation-maroc-zain-academy.csv';\n  a.click();\n  URL.revokeObjectURL(url);\n}\n\ncalculate();\n<\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>G\u00e9n\u00e9rateur de co\u00fbts de formation \u2014 Maroc Zain Academy MAROC ZAIN ACADEMY G\u00e9n\u00e9rateur de co\u00fbts de formation Calculez en temps r\u00e9el le co\u00fbt d&rsquo;une session, le prix de revient, la marge et le seuil de rentabilit\u00e9. \ud83d\udda8\ufe0f Imprimer \/ PDF \u2b07\ufe0f Exporter CSV \u21ba R\u00e9initialiser 1. Param\u00e8tres de la formation Informations g\u00e9n\u00e9rales Intitul\u00e9 de la [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-3463","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/pages\/3463","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/comments?post=3463"}],"version-history":[{"count":1,"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/pages\/3463\/revisions"}],"predecessor-version":[{"id":3465,"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/pages\/3463\/revisions\/3465"}],"wp:attachment":[{"href":"https:\/\/maroczain.com\/en\/wp-json\/wp\/v2\/media?parent=3463"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}