{"id":23514,"date":"2026-04-08T06:34:52","date_gmt":"2026-04-08T06:34:52","guid":{"rendered":"https:\/\/www.transports-express-caraibes.fr\/blog\/malus-ecologique-2026\/"},"modified":"2026-04-08T06:34:52","modified_gmt":"2026-04-08T06:34:52","slug":"malus-ecologique-2026","status":"publish","type":"post","link":"https:\/\/www.transports-express-caraibes.fr\/blog\/malus-ecologique-2026\/","title":{"rendered":"Malus \u00e9cologique 2026 : comprendre le tableau des nouveaux bar\u00e8mes"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>En bref :<\/strong><\/p>\n\n<ul class=\"wp-block-list\"><li><strong>Seuil CO\u2082<\/strong> abaiss\u00e9 \u00e0 <strong>108 g\/km<\/strong> : malus minimum <strong>50 \u20ac<\/strong>, plafond <strong>80 000 \u20ac<\/strong>.<\/li><li><strong>Malus au poids<\/strong> : d\u00e9clenchement d\u00e8s <strong>1 500 kg<\/strong>, tranches 10\u201330 \u20ac\/kg.<\/li><li><strong>Bonus<\/strong> r\u00e9serv\u00e9 aux v\u00e9hicules 100% \u00e9lectriques\/hydrog\u00e8ne <strong>prix \u2264 47 000 \u20ac<\/strong>, conditions de ressources.<\/li><li><strong>Import d\u2019occasion<\/strong> : d\u00e9cote progressive selon l\u2019anciennet\u00e9, malus possible \u00e0 la premi\u00e8re immatriculation fran\u00e7aise.<\/li><li>Pensez \u00e0 comparer CO\u2082 + poids avant l\u2019achat pour \u00e9viter les surprises sur la <strong>taxe automobile<\/strong>.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\"><strong>Chap\u00f4<\/strong> \u2014 Acheter une voiture en 2026 demande plus que le choix d\u2019un mod\u00e8le et d\u2019une couleur. La <strong>r\u00e9glementation<\/strong> a durci les seuils : le malus li\u00e9 aux <strong>\u00e9missions de CO2<\/strong> commence plus bas et un second volet taxe d\u00e9sormais la <strong>masse<\/strong> des v\u00e9hicules. Le m\u00e9canisme combine deux lignes sur votre facture d\u2019immatriculation : le malus CO\u2082 et le malus poids. Ce texte explique les bar\u00e8mes, montre comment chiffrer pr\u00e9cis\u00e9ment la taxe selon votre cas (neuf, import\u00e9, hybride), et propose des exemples chiffr\u00e9s pour anticiper la d\u00e9pense. \u00c0 la cl\u00e9 : des pistes concr\u00e8tes pour r\u00e9duire l\u2019impact financier et environnemental de votre achat, des astuces pour les familles nombreuses, et les d\u00e9marches \u00e0 suivre si vous importez une voiture d\u2019occasion.<\/p>\n\n<h2 class=\"wp-block-heading\">Comprendre le malus \u00e9cologique 2026 : bar\u00e8mes CO\u2082 et principes<\/h2>\n\n<p class=\"wp-block-paragraph\">Le malus \u00e9cologique combine deux crit\u00e8res : <strong>\u00e9missions de CO\u2082<\/strong> et <strong>masse en ordre de marche<\/strong>. Pour les v\u00e9hicules r\u00e9ception UE, le bar\u00e8me CO\u2082 d\u00e9marre \u00e0 <strong>108 g\/km<\/strong> en 2026.<\/p>\n\n<p class=\"wp-block-paragraph\">Le malus commence \u00e0 <strong>50 \u20ac<\/strong> et augmente gramme par gramme jusqu\u2019\u00e0 atteindre un plafond de <strong>80 000 \u20ac<\/strong> pour les tr\u00e8s fortes \u00e9missions. Les v\u00e9hicules 100% \u00e9lectriques et \u00e0 hydrog\u00e8ne sont exon\u00e9r\u00e9s du malus CO\u2082, mais pas forc\u00e9ment du malus poids selon le cas.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour consulter un tableau officiel et d\u00e9taill\u00e9 du bar\u00e8me, on peut croiser plusieurs sources sp\u00e9cialis\u00e9es avant d\u2019acheter, par exemple <a href=\"https:\/\/www.malus-ecologique.fr\/grille-malus\/2026\" target=\"_blank\" rel=\"noopener\">la grille 2026<\/a> ou des guides pratiques chez <a href=\"https:\/\/www.autosphere.fr\/blog\/malus-ecologique-2026\/\" target=\"_blank\" rel=\"noopener\">Autosphere<\/a>. Ces ressources permettent de v\u00e9rifier les montants gramme par gramme.<\/p>\n\n<p class=\"wp-block-paragraph\">Insight : v\u00e9rifiez toujours le cycle WLTP du mod\u00e8le pour \u00e9viter les \u00e9carts entre fiche technique et r\u00e9alit\u00e9 fiscale.<\/p>\n\n<h2 class=\"wp-block-heading\">Le malus au poids : bar\u00e8me, calcul et exemples concrets<\/h2>\n\n<p class=\"wp-block-paragraph\">Le malus au poids frappe d\u00e8s que la masse d\u00e9passe <strong>1 500 kg<\/strong>. Le calcul se fait par tranches de 100 kg, avec un tarif croissant.<\/p>\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Tranche de masse (kg)<\/th>\n<th>Tarif marginal<\/th>\n<th>Commentaire<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0 \u2013 1 499<\/td>\n<td>0 \u20ac\/kg<\/td>\n<td>Exon\u00e9ration<\/td>\n<\/tr>\n<tr>\n<td>1 500 \u2013 1 699<\/td>\n<td>10 \u20ac\/kg<\/td>\n<td>Premi\u00e8re tranche taxable<\/td>\n<\/tr>\n<tr>\n<td>1 700 \u2013 1 799<\/td>\n<td>15 \u20ac\/kg<\/td>\n<td>Tarif progressif<\/td>\n<\/tr>\n<tr>\n<td>1 800 \u2013 1 899<\/td>\n<td>20 \u20ac\/kg<\/td>\n<td>Tarif interm\u00e9diaire<\/td>\n<\/tr>\n<tr>\n<td>1 900 \u2013 1 999<\/td>\n<td>25 \u20ac\/kg<\/td>\n<td>Plage \u00e9lev\u00e9e<\/td>\n<\/tr>\n<tr>\n<td>\u2265 2 000<\/td>\n<td>30 \u20ac\/kg<\/td>\n<td>Maximum par kg<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">Exemple chiffr\u00e9 : un PHEV de <strong>1 950 kg<\/strong> b\u00e9n\u00e9ficiant d\u2019un abattement de <strong>200 kg<\/strong> (autonomie \u00e9lectrique suffisante) est consid\u00e9r\u00e9 \u00e0 <strong>1 750 kg<\/strong>. Le d\u00e9passement est de <strong>250 kg<\/strong> et le malus poids sera calcul\u00e9 par tranche, soit 2 765 \u20ac dans cet exemple.<\/p>\n\n<p class=\"wp-block-paragraph\">Insight : comparez la masse officielle et les abattements applicables (hybride, enfant \u00e0 charge) avant de signer le bon de commande.<\/p>\n\n<h2 class=\"wp-block-heading\">Comment chiffrer votre malus : d\u00e9marche \u00e9tape par \u00e9tape<\/h2>\n\n<p class=\"wp-block-paragraph\">La m\u00e9thode pour estimer la taxe est simple et r\u00e9p\u00e9table. Elle fonctionne pour une voiture neuve comme pour une importation d\u2019occasion.<\/p>\n\n<ol class=\"wp-block-list\"><li>Recueillir la fiche technique WLTP : <strong>g\/km CO\u2082<\/strong> et <strong>masse en ordre de marche<\/strong>.<\/li><li>Appliquer les abattements \u00e9ventuels : hybrides, nombre d\u2019enfants \u00e0 charge, etc.<\/li><li>Calculer le malus CO\u2082 gramme par gramme \u00e0 partir du seuil <strong>108 g\/km<\/strong>.<\/li><li>Calculer le malus poids tranche par tranche depuis <strong>1 500 kg<\/strong>.<\/li><li>Ajouter les deux montants ; v\u00e9rifier le plafond de <strong>80 000 \u20ac<\/strong>.<\/li><\/ol>\n\n<p class=\"wp-block-paragraph\">Pour faire le calcul rapidement, des simulateurs en ligne sont pratiques : <a href=\"https:\/\/www.simulateurmalus.fr\/grille-malus-2026.html\" target=\"_blank\" rel=\"noopener\">simulateur officiel<\/a> ou des estimateurs \u00e9ditoriaux donnent une premi\u00e8re id\u00e9e.<\/p>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script>\n\n<!-- Simulateur de malus \u00e9cologique 2026 (bloc \u00e0 copier\/coller)\n     - Pas d'API externe utilis\u00e9e (100% local). Si vous voulez r\u00e9cup\u00e9rer des bar\u00e8mes officiels,\n       remplacez manuellement les valeurs ci-dessous par celles du d\u00e9cret.\n     - Hauteur maximale du widget limit\u00e9e pour s'int\u00e9grer dans la page (max-height: 1200px).\n     - Tout est en fran\u00e7ais et facilement \u00e9ditable.\n-->\n\n<div id=\"simu-malus-2026\" class=\"max-w-3xl mx-auto p-4 bg-white rounded-lg shadow ring-1 ring-gray-200\"\n     style=\"max-height:1200px; overflow:auto; font-family:Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial;\">\n  <header class=\"mb-4\">\n    <h2 class=\"text-2xl font-bold text-gray-800\">Simulateur \u2014 Malus \u00e9cologique 2026 (estimation)<\/h2>\n    <p class=\"text-sm text-gray-600\">Entrez les \u00e9missions de CO\u2082 (g\/km) et la masse (kg). Le simulateur applique des bar\u00e8mes configurables pour estimer le malus CO\u2082 et le malus poids en euros.<\/p>\n    <p class=\"text-xs text-yellow-700 mt-2\">Remarque : les bar\u00e8mes fournis sont indicatifs et enti\u00e8rement \u00e9ditables dans la section \u00ab\u00a0Bar\u00e8mes\u00a0\u00bb. V\u00e9rifiez toujours les valeurs officielles publi\u00e9es par l&rsquo;administration.<\/p>\n  <\/header>\n\n  <main class=\"space-y-4\" aria-labelledby=\"simu-malus-2026\">\n    <!-- Formulaire principal -->\n    <form id=\"form-malus\" class=\"grid grid-cols-1 sm:grid-cols-3 gap-3 items-end\" onsubmit=\"return false;\" aria-describedby=\"desc-form\">\n      <div>\n        <label for=\"input-co2\" class=\"block text-sm font-medium text-gray-700\">\u00c9missions CO\u2082 (g\/km)<\/label>\n        <input id=\"input-co2\" type=\"number\" min=\"0\" max=\"999\" step=\"1\" value=\"145\"\n               class=\"mt-1 block w-full border border-gray-300 rounded-md px-3 py-2 focus:outline-none focus:ring-2 focus:ring-indigo-300\"\n               aria-required=\"true\" \/>\n      <\/div>\n\n      <div>\n        <label for=\"input-masse\" class=\"block text-sm font-medium text-gray-700\">Masse du v\u00e9hicule (kg)<\/label>\n        <input id=\"input-masse\" type=\"number\" min=\"0\" max=\"5000\" step=\"1\" value=\"1850\"\n               class=\"mt-1 block w-full border border-gray-300 rounded-md px-3 py-2 focus:outline-none focus:ring-2 focus:ring-indigo-300\"\n               aria-required=\"true\" \/>\n      <\/div>\n\n      <div class=\"flex gap-2\">\n        <button id=\"btn-calculer\" type=\"button\"\n                class=\"inline-flex items-center justify-center px-4 py-2 bg-indigo-600 text-white rounded-md hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-400\"\n                aria-label=\"Calculer le malus\">\n          Calculer\n        <\/button>\n        <button id=\"btn-reset\" type=\"button\"\n                class=\"inline-flex items-center justify-center px-3 py-2 bg-gray-100 text-gray-800 rounded-md hover:bg-gray-200 focus:outline-none focus:ring-2 focus:ring-indigo-200\"\n                aria-label=\"Remise \u00e0 z\u00e9ro des valeurs\">\n          R\u00e9initialiser\n        <\/button>\n      <\/div>\n\n      <p id=\"desc-form\" class=\"sm:col-span-3 text-xs text-gray-500\">Les r\u00e9sultats affich\u00e9s correspondent aux bar\u00e8mes visibles dans la section \u00ab\u00a0Bar\u00e8mes\u00a0\u00bb ci-dessous (\u00e9ditables).<\/p>\n    <\/form>\n\n    <!-- R\u00e9sultats -->\n    <section aria-live=\"polite\" class=\"bg-gray-50 rounded-md p-3 border border-gray-100\">\n      <h3 class=\"text-lg font-semibold text-gray-800 mb-2\">R\u00e9sultat<\/h3>\n      <div class=\"grid grid-cols-1 sm:grid-cols-3 gap-3\">\n        <div class=\"p-3 bg-white rounded border\">\n          <div class=\"text-sm text-gray-500\">Malus CO\u2082 estim\u00e9<\/div>\n          <div id=\"result-co2\" class=\"text-2xl font-bold text-red-600\">\u2014 \u20ac<\/div>\n        <\/div>\n        <div class=\"p-3 bg-white rounded border\">\n          <div class=\"text-sm text-gray-500\">Malus poids estim\u00e9<\/div>\n          <div id=\"result-poids\" class=\"text-2xl font-bold text-red-600\">\u2014 \u20ac<\/div>\n        <\/div>\n        <div class=\"p-3 bg-white rounded border\">\n          <div class=\"text-sm text-gray-500\">Total estim\u00e9<\/div>\n          <div id=\"result-total\" class=\"text-2xl font-bold text-gray-900\">\u2014 \u20ac<\/div>\n        <\/div>\n      <\/div>\n      <p id=\"message-aide\" class=\"mt-3 text-xs text-gray-600\">Conseil : ajustez les bar\u00e8mes si n\u00e9cessaire pour refl\u00e9ter le tableau officiel 2026 que vous pr\u00e9sentez dans l&rsquo;article.<\/p>\n    <\/section>\n\n    <!-- Bar\u00e8mes (\u00e9ditables) -->\n    <section class=\"bg-white p-3 rounded border border-gray-100\">\n      <h3 class=\"text-lg font-semibold text-gray-800 mb-2\">Bar\u00e8mes (\u00e9ditables)<\/h3>\n\n      <div class=\"grid grid-cols-1 sm:grid-cols-2 gap-4\">\n        <!-- Bar\u00e8me CO2: tableau editable -->\n        <div>\n          <div class=\"flex items-center justify-between mb-2\">\n            <h4 class=\"font-medium text-gray-700\">Bar\u00e8me CO\u2082 (g\/km)<\/h4>\n            <button id=\"btn-ajouter-co2\" class=\"text-sm text-indigo-600 hover:underline\" type=\"button\">Ajouter une tranche<\/button>\n          <\/div>\n          <div id=\"table-co2\" class=\"space-y-2\">\n            <!-- Lignes ajout\u00e9es dynamiquement -->\n          <\/div>\n          <p class=\"text-xs text-gray-500 mt-2\">Chaque ligne = [bornes min incluses, borne max exclue) et montant en euros. Triez les tranches du plus petit min au plus grand.<\/p>\n        <\/div>\n\n        <!-- Bar\u00e8me Poids -->\n        <div>\n          <h4 class=\"font-medium text-gray-700 mb-2\">Bar\u00e8me poids<\/h4>\n          <div class=\"grid grid-cols-1 gap-2\">\n            <label class=\"text-xs text-gray-600\">Seuil \u00e0 partir duquel s&rsquo;applique le malus (kg)<\/label>\n            <input id=\"poids-seuil\" type=\"number\" class=\"border rounded px-2 py-1\" value=\"1800\" min=\"0\" \/>\n            <label class=\"text-xs text-gray-600\">Montant par kg au-dessus du seuil (\u20ac\/kg)<\/label>\n            <input id=\"poids-euro-par-kg\" type=\"number\" class=\"border rounded px-2 py-1\" value=\"5\" min=\"0\" step=\"0.01\" \/>\n            <label class=\"text-xs text-gray-600\">Montant forfaitaire minimum si seuil d\u00e9pass\u00e9 (optionnel, \u20ac)<\/label>\n            <input id=\"poids-forfait\" type=\"number\" class=\"border rounded px-2 py-1\" value=\"0\" min=\"0\" \/>\n            <p class=\"text-xs text-gray-500\">Exemple : seuil 1800 kg, 5 \u20ac\/kg -> si masse=1850 => (1850-1800)*5 = 250 \u20ac (plus \u00e9ventuel forfait).<\/p>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"mt-3 flex gap-2\">\n        <button id=\"btn-apply\" class=\"px-3 py-2 bg-green-600 text-white rounded hover:bg-green-700\">Appliquer \/ recalculer<\/button>\n        <button id=\"btn-reset-baremes\" class=\"px-3 py-2 bg-gray-100 rounded hover:bg-gray-200\">Restaurer exemples<\/button>\n      <\/div>\n\n      <p class=\"text-xs text-gray-500 mt-3\">Les valeurs ci-dessus sont \u00e9ditables : elles permettent de reproduire votre tableau des nouveaux bar\u00e8mes 2026 dans l&rsquo;article.<\/p>\n    <\/section>\n\n    <!-- Export \/ Aide -->\n    <section class=\"bg-white p-3 rounded border border-gray-100\">\n      <div class=\"flex flex-col sm:flex-row sm:items-center sm:justify-between gap-2\">\n        <div>\n          <button id=\"btn-copier-json\" class=\"px-3 py-2 bg-blue-600 text-white rounded hover:bg-blue-700\">Copier bar\u00e8mes (JSON)<\/button>\n          <button id=\"btn-telecharger-json\" class=\"px-3 py-2 bg-indigo-100 text-indigo-800 rounded hover:bg-indigo-200\">T\u00e9l\u00e9charger bar\u00e8mes<\/button>\n        <\/div>\n        <div class=\"text-xs text-gray-600\">\n          <strong>Accessibilit\u00e9 :<\/strong> champs labellis\u00e9s, r\u00e9sultats dans une r\u00e9gion aria-live. Peut \u00eatre activ\u00e9 en calcul automatique.\n        <\/div>\n      <\/div>\n    <\/section>\n  <\/main>\n<\/div>\n\n<script>\n\/*\n  Simulateur de malus \u00e9cologique 2026 - JavaScript\n  - 100% local, pas d'API externe.\n  - Toutes les cha\u00eenes sont en fran\u00e7ais et modifiables.\n  - Logique : applique d'abord le bar\u00e8me CO2 (recherche de tranche),\n    puis calcule le malus poids selon seuil et tarif \u20ac\/kg (et \u00e9ventuel forfait).\n  - Le bar\u00e8me CO2 est une liste d'objets {min, max, montant} o\u00f9 min inclusif, max exclusif.\n  - Code lisible et comment\u00e9 pour faciliter adaptation aux vrais bar\u00e8mes 2026.\n*\/\n\n\/* ---------- Donn\u00e9es par d\u00e9faut (exemples indicatifs) ----------\n   IMPORTANT : Remplacez ces valeurs par les bar\u00e8mes officiels 2026 si n\u00e9cessaire.\n*\/\nconst exemplesCo2 = [\n  { min: 0, max: 100, montant: 0 },\n  { min: 100, max: 120, montant: 50 },\n  { min: 120, max: 140, montant: 150 },\n  { min: 140, max: 160, montant: 400 },\n  { min: 160, max: 190, montant: 1500 },\n  { min: 190, max: 9999, montant: 3000 } \/\/ max \u00e9lev\u00e9 pour \"et plus\"\n];\n\nconst exemplesPoids = {\n  seuil: 1800,        \/\/ kg : seuil au-dessus duquel s'applique le malus poids\n  euroParKg: 5.0,     \/\/ \u20ac\/kg au-dessus du seuil\n  forfait: 0          \/\/ montant forfaitaire minimum si le seuil est d\u00e9pass\u00e9 (0 = inactif)\n};\n\n\/* ---------- R\u00e9f\u00e9rences DOM ---------- *\/\nconst inputCo2 = document.getElementById('input-co2');\nconst inputMasse = document.getElementById('input-masse');\nconst btnCalculer = document.getElementById('btn-calculer');\nconst btnReset = document.getElementById('btn-reset');\nconst resultCo2El = document.getElementById('result-co2');\nconst resultPoidsEl = document.getElementById('result-poids');\nconst resultTotalEl = document.getElementById('result-total');\n\nconst tableCo2El = document.getElementById('table-co2');\nconst btnAjouterCo2 = document.getElementById('btn-ajouter-co2');\nconst poidsSeuilEl = document.getElementById('poids-seuil');\nconst poidsEuroParKgEl = document.getElementById('poids-euro-par-kg');\nconst poidsForfaitEl = document.getElementById('poids-forfait');\nconst btnApply = document.getElementById('btn-apply');\nconst btnResetBaremes = document.getElementById('btn-reset-baremes');\n\nconst btnCopierJson = document.getElementById('btn-copier-json');\nconst btnTelechargerJson = document.getElementById('btn-telecharger-json');\n\n\/* Etat local *\/\nlet baremeCo2 = [];\nlet baremePoids = { ...exemplesPoids };\n\n\/* ---------- Fonctions utilitaires ---------- *\/\n\n\/\/ Formate un nombre en euros (ex : 1234 -> \"1 234 \u20ac\")\nfunction formatEuros(value) {\n  if (value === null || value === undefined || isNaN(value)) return '\u2014 \u20ac';\n  const rounded = Math.round(value);\n  return rounded.toLocaleString('fr-FR') + ' \u20ac';\n}\n\n\/\/ Tri des tranches CO2 par min ascendant\nfunction trierBaremeCo2(b) {\n  return b.sort((x, y) => x.min - y.min);\n}\n\n\/\/ Met \u00e0 jour l'affichage du tableau CO2 (\u00e9ditions)\nfunction renderTableCo2() {\n  tableCo2El.innerHTML = '';\n  baremeCo2.forEach((tranche, idx) => {\n    const row = document.createElement('div');\n    row.className = 'grid grid-cols-3 gap-2 items-center';\n\n    \/\/ min\n    const minInput = document.createElement('input');\n    minInput.type = 'number';\n    minInput.value = tranche.min;\n    minInput.className = 'border rounded px-2 py-1';\n    minInput.addEventListener('change', () => {\n      tranche.min = Number(minInput.value);\n    });\n\n    \/\/ max\n    const maxInput = document.createElement('input');\n    maxInput.type = 'number';\n    maxInput.value = tranche.max;\n    maxInput.className = 'border rounded px-2 py-1';\n    maxInput.addEventListener('change', () => {\n      tranche.max = Number(maxInput.value);\n    });\n\n    \/\/ montant\n    const montantInput = document.createElement('input');\n    montantInput.type = 'number';\n    montantInput.value = tranche.montant;\n    montantInput.className = 'border rounded px-2 py-1';\n    montantInput.addEventListener('change', () => {\n      tranche.montant = Number(montantInput.value);\n    });\n\n    \/\/ suppression \/ mont\u00e9e \/ descente\n    const ctrlDiv = document.createElement('div');\n    ctrlDiv.className = 'flex gap-1 col-span-3';\n\n    const upBtn = document.createElement('button');\n    upBtn.type = 'button';\n    upBtn.title = 'Monter';\n    upBtn.className = 'px-2 py-1 bg-gray-100 rounded';\n    upBtn.textContent = '\u2191';\n    upBtn.addEventListener('click', () => {\n      if (idx === 0) return;\n      [baremeCo2[idx - 1], baremeCo2[idx]] = [baremeCo2[idx], baremeCo2[idx - 1]];\n      renderTableCo2();\n    });\n\n    const downBtn = document.createElement('button');\n    downBtn.type = 'button';\n    downBtn.title = 'Descendre';\n    downBtn.className = 'px-2 py-1 bg-gray-100 rounded';\n    downBtn.textContent = '\u2193';\n    downBtn.addEventListener('click', () => {\n      if (idx === baremeCo2.length - 1) return;\n      [baremeCo2[idx + 1], baremeCo2[idx]] = [baremeCo2[idx], baremeCo2[idx + 1]];\n      renderTableCo2();\n    });\n\n    const delBtn = document.createElement('button');\n    delBtn.type = 'button';\n    delBtn.title = 'Supprimer';\n    delBtn.className = 'px-2 py-1 bg-red-100 text-red-700 rounded';\n    delBtn.textContent = 'Suppr';\n    delBtn.addEventListener('click', () => {\n      baremeCo2.splice(idx, 1);\n      renderTableCo2();\n    });\n\n    \/\/ Rendu ligne\n    const rowInputs = document.createElement('div');\n    rowInputs.className = 'grid grid-cols-3 gap-2 w-full';\n    rowInputs.appendChild(minInput);\n    rowInputs.appendChild(maxInput);\n    rowInputs.appendChild(montantInput);\n\n    tableCo2El.appendChild(rowInputs);\n    ctrlDiv.appendChild(upBtn);\n    ctrlDiv.appendChild(downBtn);\n    ctrlDiv.appendChild(delBtn);\n    tableCo2El.appendChild(ctrlDiv);\n  });\n\n  \/\/ Si vide, afficher message\n  if (baremeCo2.length === 0) {\n    const note = document.createElement('p');\n    note.className = 'text-xs text-gray-500';\n    note.textContent = 'Aucun bar\u00e8me CO\u2082 d\u00e9fini. Cliquez sur \"Ajouter une tranche\".';\n    tableCo2El.appendChild(note);\n  }\n}\n\n\/\/ Ajoute une tranche vide\nfunction ajouterTranche(min = 0, max = 9999, montant = 0) {\n  baremeCo2.push({ min: Number(min), max: Number(max), montant: Number(montant) });\n  trierBaremeCo2(baremeCo2);\n  renderTableCo2();\n}\n\n\/* ---------- Calculs ---------- *\/\n\n\/\/ Trouve le montant selon le bar\u00e8me CO2 : retourne montant (number) ou 0 si aucune tranche applicable\nfunction calculMalusCo2(valeurCo2) {\n  \/\/ on suppose que baremeCo2 est tri\u00e9\n  for (const tranche of baremeCo2) {\n    const min = Number(tranche.min);\n    const max = Number(tranche.max);\n    if (isNaN(min) || isNaN(max) || isNaN(tranche.montant)) continue;\n    \/\/ min inclusif, max exclusif\n    if (valeurCo2 >= min && valeurCo2 < max) {\n      return Number(tranche.montant);\n    }\n  }\n  return 0;\n}\n\n\/\/ Calcule le malus poids : si masse > seuil => (masse - seuil) * euroParKg + \u00e9ventuel forfait minimal\nfunction calculMalusPoids(masseKg) {\n  const seuil = Number(baremePoids.seuil);\n  const euroParKg = Number(baremePoids.euroParKg);\n  const forfait = Number(baremePoids.forfait);\n  if (isNaN(seuil) || isNaN(euroParKg) || isNaN(forfait)) return 0;\n  if (masseKg <= seuil) return 0;\n  const calc = (masseKg - seuil) * euroParKg;\n  \/\/ Si forfait > 0, on applique le maximum entre calcul et forfait (optionnel)\n  if (forfait > 0) return Math.max(calc, forfait);\n  return calc;\n}\n\n\/* ---------- Actions utilisateur ---------- *\/\n\nfunction lireBaremesDepuisUI() {\n  \/\/ baremeCo2 d\u00e9j\u00e0 modifi\u00e9 par inputs (liaison directe), juste trier\n  baremeCo2 = trierBaremeCo2(baremeCo2);\n\n  baremePoids.seuil = Number(poidsSeuilEl.value || 0);\n  baremePoids.euroParKg = Number(poidsEuroParKgEl.value || 0);\n  baremePoids.forfait = Number(poidsForfaitEl.value || 0);\n}\n\nfunction calculerEtAfficher() {\n  const co2 = Number(inputCo2.value);\n  const masse = Number(inputMasse.value);\n\n  \/\/ validation simple\n  if (isNaN(co2) || co2 < 0) {\n    resultCo2El.textContent = 'Valeur CO\u2082 invalide';\n    return;\n  }\n  if (isNaN(masse) || masse < 0) {\n    resultPoidsEl.textContent = 'Valeur masse invalide';\n    return;\n  }\n\n  lireBaremesDepuisUI();\n\n  const malusCo2 = calculMalusCo2(co2);\n  const malusPoids = calculMalusPoids(masse);\n  const total = malusCo2 + malusPoids;\n\n  resultCo2El.textContent = formatEuros(malusCo2);\n  resultPoidsEl.textContent = formatEuros(malusPoids);\n  resultTotalEl.textContent = formatEuros(total);\n\n  \/\/ petit message d'alerte si total \u00e9lev\u00e9\n  const messageEl = document.getElementById('message-aide');\n  if (total >= 5000) {\n    messageEl.textContent = 'Attention : le malus total est \u00e9lev\u00e9. V\u00e9rifiez que les valeurs correspondent bien au tableau officiel.';\n    messageEl.className = 'mt-3 text-sm font-semibold text-red-700';\n  } else {\n    messageEl.textContent = 'Conseil : ajustez les bar\u00e8mes si n\u00e9cessaire pour refl\u00e9ter le tableau officiel 2026 que vous pr\u00e9sentez dans l'article.';\n    messageEl.className = 'mt-3 text-xs text-gray-600';\n  }\n}\n\n\/* ---------- Initialisation UI ---------- *\/\n\nfunction restaurerExemples() {\n  baremeCo2 = exemplesCo2.map(t => ({ ...t }));\n  baremePoids = { ...exemplesPoids };\n  poidsSeuilEl.value = baremePoids.seuil;\n  poidsEuroParKgEl.value = baremePoids.euroParKg;\n  poidsForfaitEl.value = baremePoids.forfait;\n  renderTableCo2();\n  calculerEtAfficher();\n}\n\n\/\/ Ajout d'une tranche vide ou par d\u00e9faut\nbtnAjouterCo2.addEventListener('click', () => {\n  \/\/ ajouter une tranche par d\u00e9faut proche de la derni\u00e8re\n  const dernier = baremeCo2[baremeCo2.length - 1] || { min: 0, max: 100, montant: 0 };\n  const nextMin = Number(dernier.max) || (Number(dernier.min) + 10);\n  ajouterTranche(nextMin, nextMin + 20, 0);\n});\n\n\/\/ Boutons\nbtnCalculer.addEventListener('click', () => {\n  lireBaremesDepuisUI();\n  calculerEtAfficher();\n});\nbtnApply.addEventListener('click', () => {\n  lireBaremesDepuisUI();\n  calculerEtAfficher();\n});\nbtnReset.addEventListener('click', () => {\n  inputCo2.value = 0;\n  inputMasse.value = 0;\n  restaurerExemples();\n});\nbtnResetBaremes.addEventListener('click', () => {\n  restaurerExemples();\n});\n\n\/\/ Copier \/ t\u00e9l\u00e9charger JSON des bar\u00e8mes\nbtnCopierJson.addEventListener('click', async () => {\n  const payload = { co2: baremeCo2, poids: baremePoids };\n  try {\n    await navigator.clipboard.writeText(JSON.stringify(payload, null, 2));\n    alert('Bar\u00e8mes copi\u00e9s dans le presse-papiers (JSON).');\n  } catch (e) {\n    alert('Impossible de copier automatiquement. Voici le JSON :n' + JSON.stringify(payload, null, 2));\n  }\n});\n\nbtnTelechargerJson.addEventListener('click', () => {\n  const payload = { co2: baremeCo2, poids: baremePoids };\n  const blob = new Blob([JSON.stringify(payload, null, 2)], { type: 'application\/json' });\n  const url = URL.createObjectURL(blob);\n  const a = document.createElement('a');\n  a.href = url;\n  a.download = 'baremes-malus-2026.json';\n  document.body.appendChild(a);\n  a.click();\n  a.remove();\n  URL.revokeObjectURL(url);\n});\n\n\/* ---------- D\u00e9marrage ---------- *\/\nrestaurerExemples(); \/\/ initialise UI et calcule une premi\u00e8re fois\n\n\/*\n  Remarques finales :\n  - Ce simulateur ne fait appel \u00e0 aucune API externe (100% local), donc aucune cl\u00e9 n'est requise.\n  - Si vous souhaitez charger automatiquement des bar\u00e8mes officiels depuis un service public,\n    fournissez l'URL de l'API et le format JSON attendu ; le code ci-dessus peut \u00eatre adapt\u00e9.\n    Exemple de structure JSON attendue (exemple fictif) :\n    {\n      \"co2\": [\n        {\"min\":0,\"max\":100,\"montant\":0},\n        {\"min\":100,\"max\":120,\"montant\":50},\n        ...\n      ],\n      \"poids\": {\"seuil\":1800,\"euroParKg\":5,\"forfait\":0}\n    }\n*\/\n<\/script>\n\n<p class=\"wp-block-paragraph\">Insight : conservez la simulation avec la fiche technique pour n\u00e9gocier avec le vendeur ou pour chiffrer une importation.<\/p>\n\n<h2 class=\"wp-block-heading\">Cas particuliers et r\u00e8gles \u00e0 conna\u00eetre (import, familles, hybrides)<\/h2>\n\n<p class=\"wp-block-paragraph\">Import d\u2019occasion : un v\u00e9hicule immatricul\u00e9 \u00e0 l\u2019\u00e9tranger avant 2016 est exon\u00e9r\u00e9. Sinon, un bar\u00e8me de d\u00e9cote mensuelle r\u00e9duit le malus selon l\u2019anciennet\u00e9.<\/p>\n\n<p class=\"wp-block-paragraph\">La d\u00e9cote d\u00e9marre \u00e0 <strong>3 %<\/strong> le premier mois et atteint <strong>100 %<\/strong> au-del\u00e0 de <strong>181 mois<\/strong>. Cette grille remplace l\u2019ancien abattement de 10 %\/an et s\u2019applique au CO\u2082 et au poids.<\/p>\n\n<p class=\"wp-block-paragraph\">Abattements familles : pour chaque enfant \u00e0 charge, le foyer b\u00e9n\u00e9ficie d\u2019un abattement de <strong>20 g\/km<\/strong> sur le CO\u2082 et de <strong>200 kg<\/strong> sur la masse, ce qui peut rendre une voiture exon\u00e9r\u00e9e.<\/p>\n\n<p class=\"wp-block-paragraph\">Hybrides : certains hybrides re\u00e7oivent <strong>\u2013100 ou \u2013200 kg<\/strong> d\u2019abattement selon l\u2019autonomie \u00e9lectrique. Attention : depuis 2026, les r\u00e8gles sont plus strictes et seuls les hybrides performants gardent l\u2019avantage complet.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour les d\u00e9marches d\u2019import et le chiffrage final, des services professionnels accompagnent l\u2019op\u00e9ration ; par exemple, des guides pratiques listent les co\u00fbts de carte grise et les \u00e9tapes d\u2019immatriculation \u00e0 l\u2019import : <a href=\"https:\/\/www.transports-express-caraibes.fr\/blog\/prix-calcul-carte-grise-2026\/\">prix et calcul de la carte grise<\/a>.<\/p>\n\n<p class=\"wp-block-paragraph\">Insight : lors d\u2019une importation, calculez le malus avant l\u2019achat et demandez la preuve de la premi\u00e8re immatriculation \u00e9trang\u00e8re.<\/p>\n\n<h2 class=\"wp-block-heading\">Erreurs fr\u00e9quentes \u00e0 \u00e9viter lors de l\u2019achat<\/h2>\n\n<ul class=\"wp-block-list\"><li>Comparer des \u00e9missions constructeur NEDC plut\u00f4t que WLTP : cela fausse l\u2019estimation du malus.<\/li><li>Oublier les abattements familiaux ou hybrides. Ces \u00e9l\u00e9ments r\u00e9duisent parfois fortement la taxe.<\/li><li>Ne pas prendre en compte la masse avec options : chaque \u00e9quipement suppl\u00e9mentaire peut franchir une tranche.<\/li><li>Penser qu\u2019immatriculer \u00e0 l\u2019\u00e9tranger r\u00e8gle le probl\u00e8me : les autorit\u00e9s fran\u00e7aises appliquent le malus \u00e0 la 1\u02b3\u1d49 immatriculation en France.<\/li><li>Ignorer le plafond : si le malus CO\u2082 atteint le plafond, le malus poids n\u2019est pas additionn\u00e9 au-del\u00e0 du plafond global.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Insight : demandez toujours la fiche technique WLTP et une estimation chiffr\u00e9e avant d\u2019accepter une offre.<\/p>\n\n<h2 class=\"wp-block-heading\">O\u00f9 trouver des bar\u00e8mes et outils fiables ?<\/h2>\n\n<p class=\"wp-block-paragraph\">Plusieurs sites publient les bar\u00e8mes d\u00e9taill\u00e9s et des calculateurs actualis\u00e9s. Pour obtenir la grille officielle et des simulateurs pratiques, consultez des sources sp\u00e9cialis\u00e9es et comparatives.<\/p>\n\n<ul class=\"wp-block-list\"><li>Grilles et explications d\u00e9taill\u00e9es : <a href=\"https:\/\/premiumautoconseil.fr\/malus-ecologique-mode-demploi\/\" target=\"_blank\" rel=\"noopener\">guide pratique Premium Auto Conseil<\/a>.<\/li><li>Version synth\u00e9tique et tableau : <a href=\"https:\/\/cartrust.fr\/tableau-malus-ecologique-2026\/\" target=\"_blank\" rel=\"noopener\">tableau malus 2026<\/a>.<\/li><li>Comparateurs et estimateurs pour import ou achat neuf : <a href=\"https:\/\/www.legipermis.com\/estimation-cote-voiture\/malus-ecologique.html\" target=\"_blank\" rel=\"noopener\">estimation LegiPermis<\/a>.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Insight : croisez au moins deux sources avant de prendre votre d\u00e9cision d\u2019achat.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>Synth\u00e8se rapide<\/strong> \u2014 Avant d\u2019acheter, faites trois v\u00e9rifications : <strong>fiches WLTP<\/strong> pour les \u00e9missions, <strong>masse r\u00e9elle<\/strong> avec options, et <strong>abattements<\/strong> applicables (famille, hybride). Simulez CO\u2082 + poids pour conna\u00eetre la <strong>taxe automobile<\/strong> finale et d\u00e9cidez si le surco\u00fbt vaut le mod\u00e8le choisi.<\/p>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Quu2019est-ce qui du00e9clenche le malus COu2082 en 2026 ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Le malus COu2082 du00e9marre pour les vu00e9hicules dont les u00e9missions WLTP du00e9passent 108 g\/km. Le montant commence u00e0 50 u20ac et augmente progressivement jusquu2019u00e0 80 000 u20ac pour les u00e9missions u00e9levu00e9es.\"}},{\"@type\":\"Question\",\"name\":\"Comment fonctionne le malus au poids ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Le malus poids su2019applique u00e0 partir de 1 500 kg et se calcule par tranches de 100 kg avec des tarifs de 10 u00e0 30 u20ac\/kg. Des abattements existent pour les hybrides et pour les enfants u00e0 charge.\"}},{\"@type\":\"Question\",\"name\":\"Un vu00e9hicule importu00e9 paie-t-il le malus ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Oui, lors de la premiu00e8re immatriculation en France. Une du00e9cote selon lu2019anciennetu00e9 ru00e9duit progressivement le malus; au-delu00e0 du2019une certaine anciennetu00e9, le malus devient nul.\"}},{\"@type\":\"Question\",\"name\":\"Le bonus u00e9cologique est-il encore disponible en 2026 ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Le bonus reste accessible pour les vu00e9hicules 100% u00e9lectriques ou u00e0 hydrogu00e8ne ru00e9pondant aux critu00e8res (prix u2264 47 000 u20ac, score u2265 60, masse u2264 2 400 kg) pour les commandes avant le 1u1d49u02b3 juillet 2026. Apru00e8s cette date, le dispositif u00e9volue vers du2019autres aides.\"}},{\"@type\":\"Question\",\"name\":\"Ou00f9 vu00e9rifier le baru00e8me exact pour mon vu00e9hicule ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Consultez les grilles officielles et les simulateurs mis u00e0 jour sur les sites spu00e9cialisu00e9s citu00e9s ci-dessus. Conservez la fiche WLTP du constructeur pour justifier vos calculs.\"}}]}\n<\/script>\n<h3>Qu\u2019est-ce qui d\u00e9clenche le malus CO\u2082 en 2026 ?<\/h3>\n<p>Le malus CO\u2082 d\u00e9marre pour les v\u00e9hicules dont les \u00e9missions WLTP d\u00e9passent 108 g\/km. Le montant commence \u00e0 50 \u20ac et augmente progressivement jusqu\u2019\u00e0 80 000 \u20ac pour les \u00e9missions \u00e9lev\u00e9es.<\/p>\n<h3>Comment fonctionne le malus au poids ?<\/h3>\n<p>Le malus poids s\u2019applique \u00e0 partir de 1 500 kg et se calcule par tranches de 100 kg avec des tarifs de 10 \u00e0 30 \u20ac\/kg. Des abattements existent pour les hybrides et pour les enfants \u00e0 charge.<\/p>\n<h3>Un v\u00e9hicule import\u00e9 paie-t-il le malus ?<\/h3>\n<p>Oui, lors de la premi\u00e8re immatriculation en France. Une d\u00e9cote selon l\u2019anciennet\u00e9 r\u00e9duit progressivement le malus; au-del\u00e0 d\u2019une certaine anciennet\u00e9, le malus devient nul.<\/p>\n<h3>Le bonus \u00e9cologique est-il encore disponible en 2026 ?<\/h3>\n<p>Le bonus reste accessible pour les v\u00e9hicules 100% \u00e9lectriques ou \u00e0 hydrog\u00e8ne r\u00e9pondant aux crit\u00e8res (prix \u2264 47 000 \u20ac, score \u2265 60, masse \u2264 2 400 kg) pour les commandes avant le 1\u1d49\u02b3 juillet 2026. Apr\u00e8s cette date, le dispositif \u00e9volue vers d\u2019autres aides.<\/p>\n<h3>O\u00f9 v\u00e9rifier le bar\u00e8me exact pour mon v\u00e9hicule ?<\/h3>\n<p>Consultez les grilles officielles et les simulateurs mis \u00e0 jour sur les sites sp\u00e9cialis\u00e9s cit\u00e9s ci-dessus. Conservez la fiche WLTP du constructeur pour justifier vos calculs.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>En bref : Chap\u00f4 \u2014 Acheter une voiture en 2026 demande plus que le choix d\u2019un mod\u00e8le et d\u2019une couleur. La r\u00e9glementation a durci les seuils : le malus li\u00e9 aux \u00e9missions de CO2 commence plus bas et un second volet taxe d\u00e9sormais la masse des v\u00e9hicules. Le m\u00e9canisme combine deux lignes sur votre facture &#8230; <a title=\"Malus \u00e9cologique 2026 : comprendre le tableau des nouveaux bar\u00e8mes\" class=\"read-more\" href=\"https:\/\/www.transports-express-caraibes.fr\/blog\/malus-ecologique-2026\/\" aria-label=\"En savoir plus sur Malus \u00e9cologique 2026 : comprendre le tableau des nouveaux bar\u00e8mes\">Lire plus<\/a><\/p>\n","protected":false},"author":3,"featured_media":23513,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[83],"tags":[],"class_list":["post-23514","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-actualites-generaliste"],"views":103,"_links":{"self":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts\/23514","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/comments?post=23514"}],"version-history":[{"count":0,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts\/23514\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/media\/23513"}],"wp:attachment":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/media?parent=23514"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/categories?post=23514"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/tags?post=23514"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}