{"id":23516,"date":"2026-04-12T06:34:55","date_gmt":"2026-04-12T06:34:55","guid":{"rendered":"https:\/\/www.transports-express-caraibes.fr\/blog\/obtenir-vignette-critair-2026\/"},"modified":"2026-04-12T06:34:55","modified_gmt":"2026-04-12T06:34:55","slug":"obtenir-vignette-critair-2026","status":"publish","type":"post","link":"https:\/\/www.transports-express-caraibes.fr\/blog\/obtenir-vignette-critair-2026\/","title":{"rendered":"Comment obtenir la vignette crit&rsquo;air facilement en 2026"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>En bref :<\/strong><\/p>\n\n<ul class=\"wp-block-list\"><li><strong>Co\u00fbt<\/strong> officiel : <strong>3,85 \u20ac<\/strong> (fabrication + envoi).<\/li><li><strong>Mode le plus simple<\/strong> : <strong>demande en ligne<\/strong> sur le <a href=\"https:\/\/www.certificat-air.gouv.fr\/\" rel=\"nofollow noopener\" target=\"_blank\">site officiel du certificat<\/a>.<\/li><li><strong>D\u00e9lai moyen<\/strong> : <strong>5 \u00e0 10 jours<\/strong>, avec un certificat provisoire t\u00e9l\u00e9chargeable imm\u00e9diatement.<\/li><li><strong>Obligation<\/strong> : d\u00e9pend des <strong>zones \u00e0 circulation restreinte<\/strong> (ZFE) et des mesures de pollution ponctuelles.<\/li><li><strong>Pi\u00e8ges<\/strong> : sites frauduleux aux tarifs gonfl\u00e9s, erreurs d\u2019immatriculation ou d\u2019adresse.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\"><strong>Comment obtenir la vignette Crit&rsquo;air facilement en 2026 ?<\/strong> La question revient d\u00e8s que l\u2019on pr\u00e9pare un d\u00e9placement en ville : quelles d\u00e9marches r\u00e9aliser, combien de temps pr\u00e9voir, et comment \u00e9viter les arnaques qui surfent sur la confusion ? Ce guide pratique, pens\u00e9 pour les conducteurs quotidiens et les voyageurs, explique pas \u00e0 pas la <strong>demande en ligne<\/strong>, les justificatifs \u00e0 pr\u00e9parer, les tarifs et les d\u00e9lais. Des exemples concrets montrent comment corriger une adresse, g\u00e9rer un v\u00e9hicule immatricul\u00e9 \u00e0 l\u2019\u00e9tranger ou remplacer un macaron perdu. \u00c0 la fin, vous saurez o\u00f9 coller la vignette, comment prouver votre d\u00e9marche imm\u00e9diatement et quelles erreurs \u00e9viter pour circuler sereinement dans les ZFE.<\/p>\n\n<h2 class=\"wp-block-heading\">Qu\u2019est-ce que la vignette Crit\u2019air et \u00e0 quoi sert-elle ?<\/h2>\n\n<p class=\"wp-block-paragraph\">La <strong>vignette Crit&rsquo;air<\/strong> est un petit macaron appos\u00e9 sur le pare-brise qui classe le v\u00e9hicule selon son niveau d\u2019\u00e9missions. Le <strong>certificat qualit\u00e9 de l&rsquo;air<\/strong> comporte six classes, de 0 \u00e0 5, attribu\u00e9es selon la norme Euro et le type de motorisation.<\/p>\n\n<p class=\"wp-block-paragraph\">Son objectif pratique est de g\u00e9rer l\u2019acc\u00e8s des v\u00e9hicules aux <strong>zones \u00e0 circulation restreinte<\/strong> (ZFE) et d\u2019organiser la circulation diff\u00e9renci\u00e9e lors de pics de pollution. Pour un conducteur, la pr\u00e9sence de la vignette permet d\u2019\u00e9viter une amende et les refus d\u2019entr\u00e9e dans certaines zones urbaines.<\/p>\n\n<p class=\"wp-block-paragraph\">Exemple concret : Marie, kin\u00e9sith\u00e9rapeute en p\u00e9riph\u00e9rie, a v\u00e9rifi\u00e9 sa classification avant de prendre un rendez\u2011vous \u00e0 l\u2019h\u00f4pital central. Sans macaron, son trajet aurait \u00e9t\u00e9 limit\u00e9 selon l\u2019heure et la zone.<\/p>\n\n<h2 class=\"wp-block-heading\">Obtenir Crit&rsquo;air facilement : la d\u00e9marche en ligne pas \u00e0 pas<\/h2>\n\n<p class=\"wp-block-paragraph\">La m\u00e9thode la plus rapide reste la <strong>demande en ligne<\/strong>. Elle ne demande que quelques minutes si vous avez la <strong>carte grise<\/strong> sous la main.<\/p>\n\n<ol class=\"wp-block-list\"><li>Aller sur le <a href=\"https:\/\/www.certificat-air.gouv.fr\/\" rel=\"nofollow noopener\" target=\"_blank\">site officiel du certificat<\/a>.<\/li><li>Cliquer sur \u00ab Commander \u00bb et saisir le num\u00e9ro d\u2019<strong>immatriculation<\/strong> et la date de premi\u00e8re immatriculation.<\/li><li>Renseigner le nom, pr\u00e9nom et l\u2019adresse du titulaire (adresse figurant sur la carte grise).<\/li><li>V\u00e9rifier l\u2019adresse, accepter les conditions, recopier le captcha et <strong>payer en ligne<\/strong> (carte bancaire).<\/li><li>Imprimer le re\u00e7u si vous voulez une preuve imm\u00e9diate et attendre la r\u00e9ception postale du macaron.<\/li><\/ol>\n\n<p class=\"wp-block-paragraph\">Point pratique : apr\u00e8s paiement, un certificat provisoire PDF est souvent disponible. Ce document fait foi lors d\u2019un contr\u00f4le en attendant la vignette physique. C\u2019est la solution pour rouler sereinement d\u00e8s le lendemain.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour une alternative d\u2019information et d\u2019accompagnement pratique, consultez aussi la fiche officielle sur <a href=\"https:\/\/www.service-public.gouv.fr\/particuliers\/vosdroits\/simple\/R44284\" rel=\"nofollow noopener\" target=\"_blank\">service-public.gouv.fr<\/a>, qui d\u00e9taille les pi\u00e8ces et les cas particuliers.<\/p>\n\n<h2 class=\"wp-block-heading\">Tarifs, d\u00e9lais et documents n\u00e9cessaires<\/h2>\n\n<p class=\"wp-block-paragraph\">Voici les \u00e9l\u00e9ments concrets \u00e0 pr\u00e9parer avant la commande pour \u00e9viter toute erreur qui retarderait l\u2019envoi.<\/p>\n\n<ul class=\"wp-block-list\"><li><strong>Documents requis<\/strong> : num\u00e9ro d\u2019immatriculation, date de premi\u00e8re immatriculation, coordonn\u00e9es du titulaire.<\/li><li><strong>Tarif officiel<\/strong> : <strong>3,85 \u20ac<\/strong> (fabrication + envoi) \u2014 attention aux interm\u00e9diaires qui surfacturent.<\/li><li><strong>D\u00e9lai moyen<\/strong> : entre <strong>5 et 10 jours<\/strong> selon la p\u00e9riode. Un certificat provisoire peut \u00eatre t\u00e9l\u00e9charg\u00e9 imm\u00e9diatement.<\/li><\/ul>\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>\u00c9l\u00e9ment<\/th>\n<th>Information cl\u00e9<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Prix officiel<\/strong><\/td>\n<td><strong>3,85 \u20ac<\/strong><\/td>\n<\/tr>\n<tr>\n<td><strong>D\u00e9lai de r\u00e9ception<\/strong><\/td>\n<td><strong>5 \u00e0 10 jours<\/strong> (variable selon afflux)<\/td>\n<\/tr>\n<tr>\n<td><strong>Validit\u00e9<\/strong><\/td>\n<td><strong>\u00c0 vie<\/strong> (tant que le v\u00e9hicule conserve la m\u00eame immatriculation)<\/td>\n<\/tr>\n<tr>\n<td><strong>Mode de commande<\/strong><\/td>\n<td><strong>En ligne<\/strong> (recommand\u00e9) ou par courrier<\/td>\n<\/tr>\n<tr>\n<td><strong>Obligation<\/strong><\/td>\n<td>Obligatoire dans certaines <strong>zones \u00e0 circulation restreinte<\/strong> et lors de mesures ponctuelles<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script>\n\n<!--\nSimulateur Crit'Air (bloc pr\u00eat \u00e0 copier\/coller)\n- Ne n\u00e9cessite aucune API externe (100% autonome \/ offline).\n- Toutes les cha\u00eenes sont en fran\u00e7ais et facilement \u00e9ditables dans l'objet `TEXTS`.\n- Hauteur maximale : 1200px (contr\u00f4lable via inline style).\n- Accessible : labels, aria-live, focus visible.\n-->\n\n<div id=\"critair-simulateur\" class=\"max-w-3xl mx-auto p-4 bg-white border rounded-lg shadow-sm\"\n     style=\"max-height:1200px; overflow:auto; font-family:Inter, ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Arial;\">\n  <h2 class=\"text-xl font-semibold text-slate-800 mb-2\">Simulateur : vignette Crit&rsquo;Air (estimation 2026)<\/h2>\n  <p class=\"text-sm text-slate-600 mb-4\">\n    Saisissez votre immatriculation, la date de premi\u00e8re immatriculation et le pays.\n    Le simulateur donne une classe Crit&rsquo;Air probable, l&rsquo;\u00e9ligibilit\u00e9 et un d\u00e9lai estim\u00e9 de r\u00e9ception en 2026.\n    C&rsquo;est une estimation indicative (non-contractuelle).\n  <\/p>\n\n  <form id=\"critair-form\" class=\"space-y-3\" novalidate>\n    <div>\n      <label for=\"plate\" class=\"block text-sm font-medium text-slate-700\">Immatriculation (ex : AB-123-CD)<\/label>\n      <input id=\"plate\" name=\"plate\" inputmode=\"text\" aria-label=\"Immatriculation\"\n             class=\"mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:border-indigo-500 focus:ring-indigo-500 px-3 py-2\"\n             placeholder=\"AB-123-CD\" \/>\n      <p id=\"plate-hint\" class=\"text-xs text-slate-500 mt-1\">Facultatif : utile pour documenter la simulation.<\/p>\n    <\/div>\n\n    <div>\n      <label for=\"firstReg\" class=\"block text-sm font-medium text-slate-700\">Date de premi\u00e8re immatriculation (JJ\/MM\/AAAA)<\/label>\n      <input id=\"firstReg\" name=\"firstReg\" inputmode=\"numeric\" aria-label=\"Date de premi\u00e8re immatriculation\"\n             placeholder=\"JJ\/MM\/AAAA ou YYYY-MM-DD\"\n             class=\"mt-1 block w-full rounded-md border-gray-300 shadow-sm px-3 py-2 focus:border-indigo-500 focus:ring-indigo-500\" \/>\n      <p class=\"text-xs text-slate-500 mt-1\">Entrez la date au format JJ\/MM\/AAAA (ou utilisez YYYY-MM-DD). Requis pour estimer la classe.<\/p>\n    <\/div>\n\n    <div class=\"grid grid-cols-2 gap-3\">\n      <div>\n        <label for=\"country\" class=\"block text-sm font-medium text-slate-700\">Pays d&rsquo;immatriculation<\/label>\n        <select id=\"country\" name=\"country\" aria-label=\"Pays d'immatriculation\"\n                class=\"mt-1 block w-full rounded-md border-gray-300 shadow-sm px-3 py-2 focus:border-indigo-500 focus:ring-indigo-500\">\n          <option value=\"FR\">France<\/option>\n          <option value=\"BE\">Belgique<\/option>\n          <option value=\"LU\">Luxembourg<\/option>\n          <option value=\"DE\">Allemagne<\/option>\n          <option value=\"ES\">Espagne<\/option>\n          <option value=\"IT\">Italie<\/option>\n          <option value=\"UK\">Royaume-Uni<\/option>\n          <option value=\"OTHER\">Autre<\/option>\n        <\/select>\n      <\/div>\n\n      <div>\n        <label for=\"fuel\" class=\"block text-sm font-medium text-slate-700\">Carburant (optionnel)<\/label>\n        <select id=\"fuel\" name=\"fuel\" aria-label=\"Type de carburant\"\n                class=\"mt-1 block w-full rounded-md border-gray-300 shadow-sm px-3 py-2 focus:border-indigo-500 focus:ring-indigo-500\">\n          <option value=\"unknown\">Inconnu<\/option>\n          <option value=\"essence\">Essence<\/option>\n          <option value=\"diesel\">Diesel<\/option>\n          <option value=\"hybride\">Hybride (non rechargeable)<\/option>\n          <option value=\"hybride-rechargeable\">Hybride rechargeable<\/option>\n          <option value=\"electrique\">\u00c9lectrique<\/option>\n          <option value=\"hydrogene\">Hydrog\u00e8ne<\/option>\n        <\/select>\n      <\/div>\n    <\/div>\n\n    <div class=\"flex items-center gap-2\">\n      <button type=\"submit\" id=\"simulate-btn\" class=\"inline-flex items-center px-4 py-2 bg-indigo-600 border border-transparent rounded-md font-medium text-white hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-500\">\n        Simuler\n      <\/button>\n      <button type=\"button\" id=\"reset-btn\" class=\"inline-flex items-center px-3 py-2 border rounded-md text-slate-700 bg-white hover:bg-slate-50 focus:outline-none focus:ring-2 focus:ring-indigo-500\">\n        R\u00e9initialiser\n      <\/button>\n      <div id=\"live-status\" class=\"sr-only\" aria-live=\"polite\"><\/div>\n    <\/div>\n  <\/form>\n\n  <hr class=\"my-4\" \/>\n\n  <div id=\"result\" aria-live=\"polite\" class=\"space-y-3\">\n    <!-- R\u00e9sultats inject\u00e9s ici -->\n    <div id=\"empty-state\" class=\"text-sm text-slate-600\">Remplissez le formulaire et cliquez sur \u00ab\u00a0Simuler\u00a0\u00bb pour obtenir une estimation.<\/div>\n  <\/div>\n\n  <div class=\"mt-4 text-xs text-slate-500\">\n    <strong>Important :<\/strong> Ce simulateur fournit une estimation indicative. Pour obtenir la vignette officielle, suivez la proc\u00e9dure administrative officielle sur le site gouvernemental ou le service fran\u00e7ais agr\u00e9\u00e9. Les d\u00e9lais indiqu\u00e9s sont des estimations pour 2026 et peuvent varier selon la p\u00e9riode.\n  <\/div>\n<\/div>\n\n<script>\n\/*\n  Script du simulateur Crit'Air\n  - 100% client-side, pas d'API externe.\n  - Toutes les cha\u00eenes sont en fran\u00e7ais dans `TEXTS`.\n  - Logique : heuristique indicative bas\u00e9e sur l'ann\u00e9e de premi\u00e8re immatriculation + type de carburant.\n  - Accessibilit\u00e9 : aria-live utilis\u00e9 pour annonces.\n\n  Note : si vous souhaitez lier une API gratuite (ex : d\u00e9codage VIN ou info v\u00e9hicule), n'incluez qu'une API publique sans cl\u00e9 payante.\n  Exemple (non utilis\u00e9) : https:\/\/vpic.nhtsa.dot.gov\/api\/  -- API publique US pour d\u00e9coder VIN (r\u00e9ponse JSON disponible).\n*\/\n\n(function () {\n  \/\/ Textes \u00e9ditables (internationalisation facile)\n  const TEXTS = {\n    title: 'Simulateur : vignette Crit'Air (estimation 2026)',\n    disclaimer: 'Estimation indicative, non-contractuelle.',\n    ineligible_notice: 'V\u00e9hicule peut \u00eatre in\u00e9ligible si donn\u00e9es manquantes ou v\u00e9hicule sp\u00e9cifique (militaire, engin agricole, etc.).',\n    emptyState: 'Remplissez le formulaire et cliquez sur \"Simuler\" pour obtenir une estimation.',\n    results_heading: 'R\u00e9sultat de la simulation',\n    eligibility_yes: '\u00c9ligible (proc\u00e9dure possible)',\n    eligibility_maybe: 'Possiblement \u00e9ligible \u2014 v\u00e9rifiez documents officiels',\n    eligibility_no: 'Non \u00e9ligible (donn\u00e9es insuffisantes)',\n    copy_success: 'Copi\u00e9 dans le presse-papier',\n    delivery_note: 'D\u00e9lai estim\u00e9 de r\u00e9ception en 2026 (indicatif)'\n  };\n\n  \/\/ El\u00e9ments DOM\n  const form = document.getElementById('critair-form');\n  const plateInput = document.getElementById('plate');\n  const firstRegInput = document.getElementById('firstReg');\n  const countryInput = document.getElementById('country');\n  const fuelInput = document.getElementById('fuel');\n  const resultContainer = document.getElementById('result');\n  const emptyState = document.getElementById('empty-state');\n  const liveStatus = document.getElementById('live-status');\n  const resetBtn = document.getElementById('reset-btn');\n\n  \/\/ Liste de pays consid\u00e9r\u00e9s \"UE\" pour estimation de d\u00e9lais\n  const EU_COUNTRIES = ['FR','BE','LU','DE','ES','IT','NL','PT','AT','SE','FI','DK','IE','GR','PL','CZ','SK','HU','SI','HR','RO','BG','EE','LV','LT','MT','CY'];\n\n  \/\/ Utilitaires\n  function parseDateInput(raw) {\n    \/\/ Accepte formats \"JJ\/MM\/AAAA\" ou \"YYYY-MM-DD\"\n    if (!raw) return null;\n    raw = raw.trim();\n    \/\/ Format JJ\/MM\/AAAA\n    const dmy = raw.match(\/^(d{1,2})<a href=\"d{1,2}\">\/-s<\/a><a href=\"d{4}\">\/-s<\/a>$\/);\n    if (dmy) {\n      const day = parseInt(dmy[1],10);\n      const month = parseInt(dmy[2],10) - 1;\n      const year = parseInt(dmy[3],10);\n      const dt = new Date(year, month, day);\n      if (dt && dt.getFullYear() === year && dt.getMonth() === month && dt.getDate() === day) return dt;\n      return null;\n    }\n    \/\/ Format YYYY-MM-DD (html date)\n    const ymd = raw.match(\/^(d{4})<a href=\"d{1,2}\">\/-s<\/a><a href=\"d{1,2}\">\/-s<\/a>$\/);\n    if (ymd) {\n      const year = parseInt(ymd[1],10);\n      const month = parseInt(ymd[2],10) - 1;\n      const day = parseInt(ymd[3],10);\n      const dt = new Date(year, month, day);\n      if (dt && dt.getFullYear() === year && dt.getMonth() === month && dt.getDate() === day) return dt;\n      return null;\n    }\n    return null;\n  }\n\n  \/\/ Convertit classe num\u00e9rique en style et texte\n  function classToBadge(classe) {\n    \/\/ classe peut \u00eatre '0','1','2','3','4','5' ou string range '1\u20133' ou 'Inconnu'\n    const mapping = {\n      '0': {text: \"Crit'Air 0\", color: 'bg-green-600'},\n      '1': {text: \"Crit'Air 1\", color: 'bg-emerald-500'},\n      '2': {text: \"Crit'Air 2\", color: 'bg-yellow-500'},\n      '3': {text: \"Crit'Air 3\", color: 'bg-orange-500'},\n      '4': {text: \"Crit'Air 4\", color: 'bg-rose-500'},\n      '5': {text: \"Crit'Air 5\", color: 'bg-red-600'},\n    };\n    if (!classe || classe === 'Inconnu') {\n      return `<span class=\"inline-flex items-center px-2.5 py-1 rounded text-sm bg-slate-200 text-slate-800\">Inconnu<\/span>`;\n    }\n    if (classe.includes('\u2013') || classe.includes('-')) {\n      \/\/ range\n      return `<span class=\"inline-flex items-center px-2.5 py-1 rounded text-sm bg-slate-100 text-slate-800\">Probable : ${classe}<\/span>`;\n    }\n    const m = mapping[classe];\n    if (!m) return `<span class=\"inline-flex items-center px-2.5 py-1 rounded text-sm bg-slate-100 text-slate-800\">${classe}<\/span>`;\n    return `<span class=\"inline-flex items-center px-2.5 py-1 rounded text-sm text-white ${m.color}\">${m.text}<\/span>`;\n  }\n\n  \/\/ Heuristique indicative pour estimer la classe \u00e0 partir du carburant et de l'ann\u00e9e\n  function estimateClassFromFuelAndYear(fuel, year) {\n    \/\/ Retourne une cha\u00eene : '0','1','2','3','4','5' ou 'Inconnu'\n    if (!year || isNaN(year)) return 'Inconnu';\n    \/\/ carburant normalis\u00e9\n    switch (fuel) {\n      case 'electrique':\n      case 'hydrogene':\n        return '0';\n      case 'hybride-rechargeable':\n        return '1';\n      case 'hybride':\n        \/\/ hybride non rechargeable : souvent proche essence, plus r\u00e9cent -> classe 1 ou 2\n        return (year >= 2015) ? '1' : (year >= 2006 ? '2' : '3');\n      case 'essence':\n        if (year >= 2011) return '1';\n        if (year >= 2006) return '2';\n        if (year >= 1997) return '3';\n        if (year >= 1990) return '4';\n        return '5';\n      case 'diesel':\n        \/\/ Heuristique conservatrice : les diesels sont g\u00e9n\u00e9ralement class\u00e9s moins bien que les essences\n        if (year >= 2016) return '2';      \/\/ Euro 6 diesel -> souvent Crit'Air 2\n        if (year >= 2011) return '3';      \/\/ Euro 5 diesel -> Crit'Air 3\n        if (year >= 2006) return '4';\n        return '5';\n      case 'unknown':\n      default:\n        return 'Inconnu';\n    }\n  }\n\n  \/\/ Si carburant inconnu, on calcule une fourchette (essence vs diesel)\n  function estimateClassWhenUnknown(year) {\n    const p = estimateClassFromFuelAndYear('essence', year);\n    const d = estimateClassFromFuelAndYear('diesel', year);\n    if (p === 'Inconnu' && d === 'Inconnu') return 'Inconnu';\n    \/\/ Convert to numbers for range if possible\n    const numeric = s => (s === '0' ? 0 : (s === '1' ? 1 : (s === '2' ? 2 : (s === '3' ? 3 : (s === '4' ? 4 : (s === '5' ? 5 : null))))));\n    const np = numeric(p);\n    const nd = numeric(d);\n    if (np === null || nd === null) return (p !== 'Inconnu') ? p : d;\n    const low = Math.min(np, nd), high = Math.max(np, nd);\n    if (low === high) return String(low);\n    return `${low}\u2013${high}`;\n  }\n\n  \/\/ Estimation du d\u00e9lai en 2026 selon le pays\n  function estimateDeliveryDelay(country) {\n    country = (country || '').toUpperCase();\n    if (country === 'FR') return {text: '3 \u00e0 10 jours (envoi national)', minDays:3, maxDays:10};\n    if (EU_COUNTRIES.includes(country)) return {text: '7 \u00e0 21 jours (Union europ\u00e9enne)', minDays:7, maxDays:21};\n    \/\/ hors UE\n    return {text: '14 \u00e0 45 jours (envoi international - possible douane\/retards)', minDays:14, maxDays:45};\n  }\n\n  \/\/ Validation minimale d'immatriculation (tr\u00e8s permissive)\n  function validatePlate(plate) {\n    if (!plate) return true; \/\/ facultatif\n    return plate.trim().length >= 4;\n  }\n\n  \/\/ Form submit handling\n  form.addEventListener('submit', function (ev) {\n    ev.preventDefault();\n    liveStatus.textContent = 'Simulation en cours...';\n    \/\/ Read values\n    const plate = plateInput.value.trim();\n    const firstRegRaw = firstRegInput.value.trim();\n    const country = countryInput.value;\n    const fuel = fuelInput.value;\n\n    \/\/ Validations\n    if (!firstRegRaw) {\n      showError('La date de premi\u00e8re immatriculation est requise.');\n      return;\n    }\n    const d = parseDateInput(firstRegRaw);\n    if (!d) {\n      showError('Format de date invalide. Utilisez JJ\/MM\/AAAA ou YYYY-MM-DD.');\n      return;\n    }\n    if (!validatePlate(plate)) {\n      showError('Immatriculation invalide (trop courte).');\n      return;\n    }\n\n    \/\/ Calculs\n    const year = d.getFullYear();\n    let estimatedClass;\n    if (fuel === 'unknown') {\n      estimatedClass = estimateClassWhenUnknown(year);\n    } else {\n      estimatedClass = estimateClassFromFuelAndYear(fuel, year);\n    }\n\n    \/\/ Eligibilit\u00e9 basique : si on a une ann\u00e9e valide -> \u00e9ligible; sinon \"possible\"\n    let eligibility = TEXTS.eligibility_yes;\n    if (!year || isNaN(year) || estimatedClass === 'Inconnu') {\n      eligibility = TEXTS.eligibility_maybe;\n    }\n\n    const delay = estimateDeliveryDelay(country);\n\n    \/\/ Construction du HTML du r\u00e9sultat (accessible)\n    const badgeHTML = classToBadge(estimatedClass);\n    const fuelLabel = (fuel === 'unknown') ? 'Inconnu' : (document.querySelector('#fuel option:checked').textContent || fuel);\n    const countryLabel = document.querySelector('#country option:checked').textContent || country;\n\n    const resultHTML = `\n      <div class=\"p-4 border rounded bg-slate-50\">\n        <h3 class=\"text-sm font-medium text-slate-800 mb-2\">${TEXTS.results_heading}<\/h3>\n        <div class=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n          <div>\n            <div class=\"text-xs text-slate-500\">Immatriculation<\/div>\n            <div class=\"text-sm font-semibold text-slate-800\">${plate || '\u2014'}<\/div>\n          <\/div>\n          <div>\n            <div class=\"text-xs text-slate-500\">Pays<\/div>\n            <div class=\"text-sm font-semibold text-slate-800\">${countryLabel}<\/div>\n          <\/div>\n          <div>\n            <div class=\"text-xs text-slate-500\">Date 1re immat.<\/div>\n            <div class=\"text-sm font-semibold text-slate-800\">${d.toLocaleDateString('fr-FR')}<\/div>\n          <\/div>\n          <div>\n            <div class=\"text-xs text-slate-500\">Carburant (signal\u00e9)<\/div>\n            <div class=\"text-sm font-semibold text-slate-800\">${fuelLabel}<\/div>\n          <\/div>\n          <div class=\"md:col-span-2\">\n            <div class=\"text-xs text-slate-500\">Classe Crit'Air probable<\/div>\n            <div class=\"mt-1\">${badgeHTML}\n              <span class=\"ml-2 text-sm text-slate-700\">(${TEXTS.disclaimer})<\/span>\n            <\/div>\n          <\/div>\n          <div>\n            <div class=\"text-xs text-slate-500\">\u00c9ligibilit\u00e9 (indicative)<\/div>\n            <div class=\"text-sm font-semibold text-slate-800 mt-1\">${eligibility}<\/div>\n          <\/div>\n          <div>\n            <div class=\"text-xs text-slate-500\">${TEXTS.delivery_note}<\/div>\n            <div class=\"text-sm font-semibold text-slate-800 mt-1\">${delay.text}<\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"mt-3 flex gap-2\">\n          <button id=\"copy-btn\" class=\"inline-flex items-center px-3 py-1 rounded bg-indigo-600 text-white text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500\">Copier le r\u00e9sum\u00e9<\/button>\n          <button id=\"explain-btn\" class=\"inline-flex items-center px-3 py-1 rounded border bg-white text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500\">Voir l'heuristique<\/button>\n        <\/div>\n\n        <div id=\"explain-panel\" class=\"mt-3 hidden text-xs text-slate-700 bg-white p-3 border rounded\">\n          <strong>Heuristique utilis\u00e9e (indicative) :<\/strong>\n          <ul class=\"list-disc pl-5 mt-2\">\n            <li>0 : V\u00e9hicule \u00e9lectrique ou hydrog\u00e8ne.<\/li>\n            <li>1 : Hybride rechargeable ou voitures essence r\u00e9centes (g\u00e9n\u00e9ralement <em>apr\u00e8s 2011<\/em>).<\/li>\n            <li>2-5 : Calcul\u00e9es selon une estimation sur l'ann\u00e9e de premi\u00e8re immatriculation et le carburant (les diesels sont, de mani\u00e8re conservatrice, class\u00e9s parfois un cran plus d\u00e9favorables).<\/li>\n            <li>Si le carburant est inconnu, la simulation affiche une fourchette probable (ex : 1\u20133).<\/li>\n          <\/ul>\n          <div class=\"mt-2 text-amber-700\">Rappel : Pour la classification officielle, consultez les services administratifs officiels.<\/div>\n        <\/div>\n      <\/div>\n    `;\n\n    \/\/ Injecter r\u00e9sultat\n    resultContainer.innerHTML = resultHTML;\n    emptyState && emptyState.remove();\n    liveStatus.textContent = 'Simulation termin\u00e9e.';\n    \/\/ Accessibility: focus result\n    const firstInteractive = resultContainer.querySelector('#copy-btn');\n    if (firstInteractive) firstInteractive.focus();\n\n    \/\/ Copy button handling\n    const copyBtn = resultContainer.querySelector('#copy-btn');\n    copyBtn.addEventListener('click', function () {\n      const summary = `Immatriculation: ${plate || '\u2014'}nPays: ${countryLabel}nDate 1re immat.: ${d.toLocaleDateString('fr-FR')}nCarburant: ${fuelLabel}nClasse probable: ${ (estimatedClass === 'Inconnu') ? 'Inconnu' : estimatedClass }n${TEXTS.delivery_note}: ${delay.text}n(${TEXTS.disclaimer})`;\n      navigator.clipboard && navigator.clipboard.writeText(summary).then(() => {\n        showToast(TEXTS.copy_success);\n      }).catch(() => {\n        showToast('Impossible de copier automatiquement.');\n      });\n    });\n\n    \/\/ Explain toggler\n    const explainBtn = resultContainer.querySelector('#explain-btn');\n    const explainPanel = resultContainer.querySelector('#explain-panel');\n    explainBtn.addEventListener('click', function () {\n      if (explainPanel.classList.contains('hidden')) {\n        explainPanel.classList.remove('hidden');\n        explainPanel.scrollIntoView({behavior:'smooth', block:'nearest'});\n      } else {\n        explainPanel.classList.add('hidden');\n      }\n    });\n  });\n\n  resetBtn.addEventListener('click', function () {\n    form.reset();\n    resultContainer.innerHTML = `<div id=\"empty-state\" class=\"text-sm text-slate-600\">${TEXTS.emptyState}<\/div>`;\n    liveStatus.textContent = '';\n    plateInput.focus();\n  });\n\n  function showError(msg) {\n    \/\/ Show small inline alert\n    resultContainer.innerHTML = `<div class=\"p-3 rounded bg-rose-50 border border-rose-200 text-rose-700\">${msg}<\/div>`;\n    liveStatus.textContent = msg;\n  }\n\n  function showToast(msg) {\n    \/\/ Simple temporary toast (accessible)\n    const t = document.createElement('div');\n    t.setAttribute('role','status');\n    t.className = 'fixed bottom-6 right-6 bg-slate-900 text-white px-4 py-2 rounded shadow';\n    t.textContent = msg;\n    document.body.appendChild(t);\n    setTimeout(()=> {\n      t.classList.add('opacity-0');\n      setTimeout(()=> t.remove(), 300);\n    }, 1800);\n  }\n\n  \/\/ Initial focus\n  plateInput.focus();\n\n})();\n<\/script>\n\n<p class=\"wp-block-paragraph\">Insight cl\u00e9 : pr\u00e9parer la <strong>carte grise<\/strong> et v\u00e9rifier l\u2019adresse avant de commencer r\u00e9duit le risque de devoir commander une seconde vignette.<\/p>\n\n<h2 class=\"wp-block-heading\">Erreurs fr\u00e9quentes \u00e0 \u00e9viter pour obtenir la vignette facilement<\/h2>\n\n<p class=\"wp-block-paragraph\">Plusieurs pi\u00e8ges reviennent r\u00e9guli\u00e8rement. Les conna\u00eetre \u00e9vite perte de temps et d\u00e9penses inutiles.<\/p>\n\n<ul class=\"wp-block-list\"><li><strong>Se tromper d\u2019immatriculation<\/strong> : une faute de caract\u00e8re entra\u00eene une erreur de classification et peut obliger \u00e0 repayer.<\/li><li><strong>Adresse sur la carte grise incorrecte<\/strong> : la vignette est envoy\u00e9e \u00e0 cette adresse. Mettre \u00e0 jour la carte grise avant la demande si n\u00e9cessaire.<\/li><li><strong>Passer par un site tiers douteux<\/strong> : v\u00e9rifier l\u2019URL avant de payer. Le prix officiel reste <strong>faible<\/strong>.<\/li><li><strong>Ignorer le certificat provisoire<\/strong> : il permet de justifier la d\u00e9marche imm\u00e9diatement lors d\u2019un contr\u00f4le.<\/li><li><strong>Confondre v\u00e9hicules de collection<\/strong> : certains v\u00e9hicules historiques b\u00e9n\u00e9ficient de r\u00e8gles sp\u00e9cifiques, \u00e0 v\u00e9rifier avant de partir.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Astuce terrain : garder une photo de la carte grise sur votre t\u00e9l\u00e9phone facilite la saisie et \u00e9vite les erreurs de transcription lors de la commande.<\/p>\n\n<h2 class=\"wp-block-heading\">Cas particuliers : v\u00e9hicules \u00e9trangers, v\u00e9hicules de collection et remplacements<\/h2>\n\n<p class=\"wp-block-paragraph\">La proc\u00e9dure \u00e9volue selon le statut du v\u00e9hicule. Voici des solutions pour les situations les plus rencontr\u00e9es.<\/p>\n\n<h3 class=\"wp-block-heading\">V\u00e9hicule immatricul\u00e9 \u00e0 l\u2019\u00e9tranger<\/h3>\n\n<p class=\"wp-block-paragraph\">Pour un v\u00e9hicule \u00e9tranger, pr\u00e9parez une copie lisible du certificat d\u2019immatriculation local. Le formulaire en ligne demandera parfois les caract\u00e9ristiques techniques. Anticiper ces pi\u00e8ces acc\u00e9l\u00e8re le traitement.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour les voyageurs, obtenir la vignette avant d\u2019entrer dans une ZFE fran\u00e7aise \u00e9vite les complications sur place.<\/p>\n\n<h3 class=\"wp-block-heading\">V\u00e9hicule de collection<\/h3>\n\n<p class=\"wp-block-paragraph\">Les voitures de collection immatricul\u00e9es avec la mention sp\u00e9cifique b\u00e9n\u00e9ficient souvent d\u2019exemptions dans plusieurs communes. V\u00e9rifiez la r\u00e8gle locale avant de vous d\u00e9placer.<\/p>\n\n<h3 class=\"wp-block-heading\">Perte ou d\u00e9t\u00e9rioration du macaron<\/h3>\n\n<p class=\"wp-block-paragraph\">La vignette peut \u00eatre remplac\u00e9e par une nouvelle demande : refaites la proc\u00e9dure en ligne en indiquant que vous demandez un duplicata.<\/p>\n\n<p class=\"wp-block-paragraph\">Insight cl\u00e9 : pour chaque cas particulier, conserver une preuve de la demande (re\u00e7u PDF) permet d\u2019anticiper un contr\u00f4le et de prot\u00e9ger vos d\u00e9placements.<\/p>\n\n<h2 class=\"wp-block-heading\">O\u00f9 coller la vignette Crit\u2019air et que faire en cas de probl\u00e8me ?<\/h2>\n\n<p class=\"wp-block-paragraph\">La vignette doit \u00eatre coll\u00e9e de fa\u00e7on visible sur le pare\u2011brise, g\u00e9n\u00e9ralement en bas \u00e0 droite c\u00f4t\u00e9 passager. Nettoyez la zone avant application pour assurer une bonne adh\u00e9rence.<\/p>\n\n<p class=\"wp-block-paragraph\">Si la vignette n\u2019arrive pas : v\u00e9rifier l\u2019\u00e9tat de la commande sur le site officiel et pr\u00e9parer la mise \u00e0 jour de l\u2019adresse si besoin. En cas d\u2019erreur de classification, collecter les documents techniques et contacter le support indiqu\u00e9 sur le site officiel.<\/p>\n\n<p class=\"wp-block-paragraph\">En cas d\u2019amende pour absence de vignette dans une ZFE, conserver la preuve de la demande et du paiement peut aider \u00e0 contester le proc\u00e8s\u2011verbal si la vignette avait \u00e9t\u00e9 command\u00e9e.<\/p>\n\n<p class=\"wp-block-paragraph\">Phrase cl\u00e9 : coller proprement, conserver le re\u00e7u et anticiper la mise \u00e0 jour des donn\u00e9es, voil\u00e0 la routine pratique qui \u00e9vite 80 % des soucis.<\/p>\n\n<h2 class=\"wp-block-heading\">Points de r\u00e9f\u00e9rence et ressources fiables<\/h2>\n\n<p class=\"wp-block-paragraph\">Pour s\u2019informer ou commander, privil\u00e9gier les sources officielles et reconnues :<\/p>\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/www.certificat-air.gouv.fr\/\" rel=\"nofollow noopener\" target=\"_blank\">Site officiel pour commander la vignette<\/a> \u2014 proc\u00e9dure, co\u00fbt et certificat provisoire.<\/li><li><a href=\"https:\/\/www.service-public.gouv.fr\/particuliers\/vosdroits\/simple\/R44284\" rel=\"nofollow noopener\" target=\"_blank\">Fiche pratique Service\u2011Public<\/a> \u2014 droits et obligations selon le v\u00e9hicule.<\/li><li><a href=\"https:\/\/www.vosdemarchesadministratives.fr\/obtenir-vignette-critair\/\" rel=\"nofollow noopener\" target=\"_blank\">Guide pas \u00e0 pas<\/a> \u2014 compl\u00e9ment utile pour les d\u00e9marches postales ou pour les v\u00e9hicules \u00e9trangers.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Ces liens permettent d\u2019\u00e9viter les sites tiers qui appliquent des frais excessifs et garantissent l\u2019acc\u00e8s au <strong>certificat qualit\u00e9 de l&rsquo;air<\/strong> officiel.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>Synth\u00e8se rapide :<\/strong> pr\u00e9parez votre carte grise, v\u00e9rifiez l\u2019adresse, commandez sur le <strong>site officiel<\/strong> et conservez le re\u00e7u PDF. En respectant ces \u00e9tapes simples, vous obtiendrez la <strong>vignette Crit&rsquo;air facilement<\/strong> et pourrez circuler dans les zones r\u00e9glement\u00e9es sans surprise.<\/p>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Quel est le prix officiel de la vignette Crit'Air ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Le prix officiel est de 3,85 u20ac par vu00e9hicule, frais de fabrication et du2019envoi inclus. Mu00e9fiez-vous des sites tiers qui appliquent des frais supplu00e9mentaires.\"}},{\"@type\":\"Question\",\"name\":\"Combien de temps faut-il pour recevoir la vignette ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"En pu00e9riode normale, le du00e9lai moyen est de 5 u00e0 10 jours. Un certificat provisoire PDF est souvent disponible immu00e9diatement apru00e8s paiement pour justifier la du00e9marche.\"}},{\"@type\":\"Question\",\"name\":\"Peut-on commander sans internet ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Oui : une commande par courrier est possible via un formulaire imprimable, mais cette voie est plus lente et sujette aux erreurs. La voie en ligne reste la plus rapide et su00e9curisu00e9e.\"}},{\"@type\":\"Question\",\"name\":\"Que faire en cas du2019erreur du2019immatriculation ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Si lu2019immatriculation est erronu00e9e, la classification et lu2019envoi seront affectu00e9s. Refaire la demande avec la bonne immatriculation et conserver les preuves de paiement. Mettre u00e0 jour la carte grise si nu00e9cessaire.\"}}]}\n<\/script>\n<h3>Quel est le prix officiel de la vignette Crit&rsquo;Air ?<\/h3>\n<p>Le prix officiel est de 3,85 \u20ac par v\u00e9hicule, frais de fabrication et d\u2019envoi inclus. M\u00e9fiez-vous des sites tiers qui appliquent des frais suppl\u00e9mentaires.<\/p>\n<h3>Combien de temps faut-il pour recevoir la vignette ?<\/h3>\n<p>En p\u00e9riode normale, le d\u00e9lai moyen est de 5 \u00e0 10 jours. Un certificat provisoire PDF est souvent disponible imm\u00e9diatement apr\u00e8s paiement pour justifier la d\u00e9marche.<\/p>\n<h3>Peut-on commander sans internet ?<\/h3>\n<p>Oui : une commande par courrier est possible via un formulaire imprimable, mais cette voie est plus lente et sujette aux erreurs. La voie en ligne reste la plus rapide et s\u00e9curis\u00e9e.<\/p>\n<h3>Que faire en cas d\u2019erreur d\u2019immatriculation ?<\/h3>\n<p>Si l\u2019immatriculation est erron\u00e9e, la classification et l\u2019envoi seront affect\u00e9s. Refaire la demande avec la bonne immatriculation et conserver les preuves de paiement. Mettre \u00e0 jour la carte grise si n\u00e9cessaire.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>En bref : Comment obtenir la vignette Crit&rsquo;air facilement en 2026 ? La question revient d\u00e8s que l\u2019on pr\u00e9pare un d\u00e9placement en ville : quelles d\u00e9marches r\u00e9aliser, combien de temps pr\u00e9voir, et comment \u00e9viter les arnaques qui surfent sur la confusion ? Ce guide pratique, pens\u00e9 pour les conducteurs quotidiens et les voyageurs, explique pas &#8230; <a title=\"Comment obtenir la vignette crit&rsquo;air facilement en 2026\" class=\"read-more\" href=\"https:\/\/www.transports-express-caraibes.fr\/blog\/obtenir-vignette-critair-2026\/\" aria-label=\"En savoir plus sur Comment obtenir la vignette crit&rsquo;air facilement en 2026\">Lire plus<\/a><\/p>\n","protected":false},"author":3,"featured_media":23515,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[82],"tags":[],"class_list":["post-23516","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-transport"],"views":28,"_links":{"self":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts\/23516","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=23516"}],"version-history":[{"count":0,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts\/23516\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/media\/23515"}],"wp:attachment":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/media?parent=23516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/categories?post=23516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/tags?post=23516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}