{"id":23564,"date":"2026-05-31T06:33:43","date_gmt":"2026-05-31T06:33:43","guid":{"rendered":"https:\/\/www.transports-express-caraibes.fr\/blog\/regles-transport-animaux-france\/"},"modified":"2026-05-31T06:33:43","modified_gmt":"2026-05-31T06:33:43","slug":"regles-transport-animaux-france","status":"publish","type":"post","link":"https:\/\/www.transports-express-caraibes.fr\/blog\/regles-transport-animaux-france\/","title":{"rendered":"R\u00e8gles pour le transport des animaux en voiture en france en 2026"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>En bref :<\/strong><\/p>\n\n<ul class=\"wp-block-list\"><li><strong>R\u00e9glementation 2026<\/strong> impose des <strong>attaches obligatoires<\/strong> pour les animaux en voiture ; un animal libre peut entra\u00eener amende et immobilisation.<\/li><li>Choisir un harnais homologu\u00e9, une caisse rigide arrim\u00e9e ou une grille de s\u00e9paration s\u00e9curise le trajet et prot\u00e8ge la responsabilit\u00e9 du conducteur.<\/li><li>Pour les professionnels, autorisations, agr\u00e9ments et certificats sont requis au-del\u00e0 de certains trajets ; pour les particuliers, le bien-\u00eatre animal reste obligatoire.<\/li><li>Pr\u00e9parez la <strong>dur\u00e9e du trajet<\/strong>, les pauses, l\u2019hydratation et v\u00e9rifiez les dispositifs avant chaque d\u00e9part.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\"><strong>Transport animalier<\/strong> et voiture se conjuguent souvent pendant les vacances, les visites chez le v\u00e9t\u00e9rinaire ou les d\u00e9m\u00e9nagements. Depuis la mise en place de la <strong>r\u00e9glementation 2026<\/strong>, la loi fran\u00e7aise encadre strictement la fa\u00e7on dont un animal est retenu dans l\u2019habitacle : un chien circulant librement repr\u00e9sente une source de distraction reconnue capable de bloquer les p\u00e9dales, obstruer la visibilit\u00e9 ou provoquer des mouvements brusques en cas de freinage. Les forces de l\u2019ordre disposent d\u00e9sormais de moyens concrets pour sanctionner et, si n\u00e9cessaire, immobiliser le v\u00e9hicule jusqu\u2019\u00e0 mise en conformit\u00e9. Cet article d\u00e9crit pr\u00e9cis\u00e9ment les r\u00e8gles applicables pour les particuliers et les professionnels, d\u00e9taille les dispositifs homologu\u00e9s \u00e0 privil\u00e9gier, propose une checklist pratique avant tout d\u00e9part, et explique les cons\u00e9quences juridiques en cas de manquement. Vous trouverez aussi des exemples chiffr\u00e9s, des conseils terrain pour am\u00e9liorer le confort des animaux et des ressources officielles pour approfondir les d\u00e9marches. L\u2019objectif : transformer une contrainte r\u00e9glementaire en bonne pratique de s\u00e9curit\u00e9 animale, tout en gardant la s\u00e9r\u00e9nit\u00e9 du conducteur et le confort des passagers \u00e0 quatre pattes.<\/p>\n\n<h2 class=\"wp-block-heading\">Que dit la loi fran\u00e7aise sur le transport d&rsquo;animaux en voiture (r\u00e9glementation 2026)<\/h2>\n\n<p class=\"wp-block-paragraph\">La <strong>r\u00e9glementation 2026<\/strong> assimile un animal non s\u00e9curis\u00e9 \u00e0 un chargement dangereux. L\u2019article R412-6 impose au conducteur de garder sa concentration, et l\u2019article R312-19 exige que tout chargement soit s\u00e9curis\u00e9.<\/p>\n\n<p class=\"wp-block-paragraph\">En pratique, un animal libre peut valoir une amende forfaitaire de <strong>35 \u20ac \u00e0 150 \u20ac<\/strong> et l\u2019immobilisation du v\u00e9hicule lors d\u2019un <strong>contr\u00f4le routier<\/strong>. En cas de r\u00e9cidive ou d\u2019accident grave, la sanction peut \u00eatre aggrav\u00e9e jusqu\u2019\u00e0 375 \u20ac.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour compl\u00e9ter la lecture, la synth\u00e8se officielle des obligations pour le transport des animaux vivants est accessible via les ressources administratives, et des articles juridiques concrets \u00e9valuent l\u2019impact pour les automobilistes.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.haute-loire.gouv.fr\/Actions-de-l-Etat\/Animaux\/14-Transport-des-animaux-vivants\/14-Vos-obligations-pour-transporter-par-route-des-animaux-vivants\" rel=\"nofollow noopener\" target=\"_blank\">Obligations pour transporter des animaux vivants (source officielle)<\/a><\/p>\n\n<h3 class=\"wp-block-heading\">Risques concrets d\u2019un animal non s\u00e9curis\u00e9<\/h3>\n\n<p class=\"wp-block-paragraph\">Un chien qui se d\u00e9place peut g\u00eaner l\u2019usage des p\u00e9dales, d\u00e9tourner le regard du conducteur ou provoquer des r\u00e9actions paniques. Ces situations augmentent la probabilit\u00e9 d\u2019accident<\/p>\n\n<p class=\"wp-block-paragraph\">Les statistiques r\u00e9centes montraient que pr\u00e8s d\u2019un quart des accidents imputables \u00e0 l\u2019inattention en 2025 \u00e9taient li\u00e9s \u00e0 des facteurs internes au v\u00e9hicule, d\u2019o\u00f9 la fermet\u00e9 du contr\u00f4le routier sur ce point.<\/p>\n\n<p class=\"wp-block-paragraph\">Phrase-cl\u00e9 : s\u00e9curiser l\u2019animal r\u00e9duit nettement le risque d\u2019accident et prot\u00e8ge votre responsabilit\u00e9 civile.<\/p>\n\n<h2 class=\"wp-block-heading\">Dispositifs homologu\u00e9s et comparatif pratique<\/h2>\n\n<p class=\"wp-block-paragraph\">Trois grandes familles de dispositifs r\u00e9pondent aux attentes r\u00e9glementaires et au <strong>confort des animaux<\/strong> : harnais attach\u00e9s \u00e0 la ceinture, caisses rigides arrim\u00e9es et grilles de s\u00e9paration. Le choix d\u00e9pend de la taille de l\u2019animal et des caract\u00e9ristiques du v\u00e9hicule.<\/p>\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Dispositif<\/th>\n<th>Usage recommand\u00e9<\/th>\n<th>Avantages<\/th>\n<th>Points \u00e0 v\u00e9rifier<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Harnais de s\u00e9curit\u00e9<\/strong><\/td>\n<td>Chiens de petite \u00e0 moyenne taille, trajet passager<\/td>\n<td>Confort, facilit\u00e9 d&rsquo;installation, conforme aux attaches ceinture<\/td>\n<td>Certifier homologation, taille adapt\u00e9e<\/td>\n<\/tr>\n<tr>\n<td><strong>Caisses\/cages rigides<\/strong><\/td>\n<td>Longs trajets, chiens de grande taille<\/td>\n<td>Protection compl\u00e8te, stabilit\u00e9 en cas de choc<\/td>\n<td>Doit \u00eatre solidement arrim\u00e9e, ventilation suffisante<\/td>\n<\/tr>\n<tr>\n<td><strong>Grille de s\u00e9paration<\/strong><\/td>\n<td>SUV, breaks, van<\/td>\n<td>S\u00e9pare l\u2019habitacle, accessibilit\u00e9<\/td>\n<td>Installation professionnelle recommand\u00e9e<\/td>\n<\/tr>\n<tr>\n<td><strong>Sac ou si\u00e8ge auto pour petits chiens<\/strong><\/td>\n<td>Chiens &lt; 5 kg<\/td>\n<td>Stabilit\u00e9, confort<\/td>\n<td>Contr\u00f4ler fixation et respirabilit\u00e9<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n<p class=\"wp-block-paragraph\">Exemple terrain : pour un trajet de 400 km en famille, une caisse rigide bien arrim\u00e9e offrira plus de s\u00e9curit\u00e9 qu\u2019un harnais sommaire, surtout si l\u2019animal p\u00e8se plus de 20 kg.<\/p>\n\n<h2 class=\"wp-block-heading\">Checklist pratique avant tout d\u00e9part en voiture avec un animal<\/h2>\n\n<p class=\"wp-block-paragraph\">Suivez ces \u00e9tapes pour que le transport respecte la loi fran\u00e7aise et le bien-\u00eatre de l\u2019animal.<\/p>\n\n<ul class=\"wp-block-list\"><li>V\u00e9rifier que le dispositif est homologu\u00e9 et adapt\u00e9 au poids\/\u00e0 la taille.<\/li><li>Tester la fixation de la caisse ou du harnais avant le trajet.<\/li><li>Pr\u00e9voir pauses toutes les 2 \u00e0 3 heures pour la <strong>dur\u00e9e du trajet<\/strong>, l\u2019hydratation et les besoins.<\/li><li>Ne jamais laisser l\u2019animal seul dans la voiture par temps chaud.<\/li><li>Documenter le voyage si vous \u00eates professionnel (autorisation, origine, destination) pour les trajets soumis au r\u00e8glement CE 1\/2005.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Phrase-cl\u00e9 : une pr\u00e9paration simple \u00e9vite amende, immobilisation et stress pour l\u2019animal.<\/p>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script>\n\n<!--\nCalculateur : \"Calculez vos pauses\" pour l'article \"R\u00e8gles pour le transport des animaux en voiture en france en 2026\".\nAucune API externe utilis\u00e9e (100% local). Toutes les cha\u00eenes en fran\u00e7ais.\nHauteur maximale de l'outil limit\u00e9e via CSS (max-height: 800px).\n-->\n\n<style>\n  \/* Limite la taille de l'outil et g\u00e8re le scroll si n\u00e9cessaire pour rester sous 2000px *\/\n  .pause-calculator { max-height: 800px; }\n  \/* Petite am\u00e9lioration d'accessibilit\u00e9 pour le focus *\/\n  .focus-ring:focus { outline: 3px solid rgba(59,130,246,0.5); outline-offset: 2px; }\n<\/style>\n\n<div id=\"pause-calculator\" class=\"pause-calculator mx-auto my-4 p-4 rounded-lg shadow-md bg-white text-gray-800 max-w-3xl\">\n  <h2 class=\"text-2xl font-semibold mb-2\">Calculateur de pauses &#8211; Transport des animaux<\/h2>\n  <p class=\"text-sm text-gray-600 mb-4\">\n    Entrez la dur\u00e9e totale du trajet, la vitesse moyenne et l&rsquo;intervalle de pause souhait\u00e9.\n    Le calculateur renvoie le nombre de pauses recommand\u00e9es et les horaires estim\u00e9s pour chaque arr\u00eat.\n  <\/p>\n\n  <form id=\"calc-form\" class=\"grid grid-cols-1 md:grid-cols-2 gap-3\" onsubmit=\"return false;\">\n    <label class=\"block\">\n      <span class=\"text-sm font-medium\">Dur\u00e9e totale du trajet (minutes)<\/span>\n      <input id=\"total-minutes\" class=\"mt-1 block w-full rounded border-gray-300 p-2 focus-ring\" type=\"number\" min=\"1\" step=\"1\" value=\"240\" aria-describedby=\"totalHelp\" \/>\n      <span id=\"totalHelp\" class=\"text-xs text-gray-500\">Ex : 240 pour 4h<\/span>\n    <\/label>\n\n    <label class=\"block\">\n      <span class=\"text-sm font-medium\">Vitesse moyenne (km\/h)<\/span>\n      <input id=\"avg-speed\" class=\"mt-1 block w-full rounded border-gray-300 p-2 focus-ring\" type=\"number\" min=\"1\" step=\"0.1\" value=\"90\" \/>\n    <\/label>\n\n    <label class=\"block\">\n      <span class=\"text-sm font-medium\">Intervalle de pause souhait\u00e9 (minutes)<\/span>\n      <input id=\"interval-mins\" class=\"mt-1 block w-full rounded border-gray-300 p-2 focus-ring\" type=\"number\" min=\"1\" step=\"1\" value=\"120\" \/>\n    <\/label>\n\n    <label class=\"block\">\n      <span class=\"text-sm font-medium\">Dur\u00e9e estim\u00e9e d&rsquo;une pause (minutes) \u2014 optionnel<\/span>\n      <input id=\"pause-duration\" class=\"mt-1 block w-full rounded border-gray-300 p-2 focus-ring\" type=\"number\" min=\"0\" step=\"1\" value=\"15\" \/>\n      <span class=\"text-xs text-gray-500\">La dur\u00e9e moyenne d&rsquo;une pause (influence l&rsquo;heure d&rsquo;arriv\u00e9e r\u00e9elle).<\/span>\n    <\/label>\n\n    <label class=\"block\">\n      <span class=\"text-sm font-medium\">Heure de d\u00e9part (optionnel)<\/span>\n      <input id=\"start-time\" class=\"mt-1 block w-full rounded border-gray-300 p-2 focus-ring\" type=\"time\" value=\"08:00\" \/>\n      <span class=\"text-xs text-gray-500\">Si renseign\u00e9e, les horaires list\u00e9s seront des horaires horloge.<\/span>\n    <\/label>\n\n    <div class=\"flex items-end gap-2\">\n      <button id=\"compute-btn\" class=\"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 focus-ring\" type=\"button\">Calculer<\/button>\n      <button id=\"reset-btn\" class=\"px-4 py-2 bg-gray-200 text-gray-800 rounded hover:bg-gray-300 focus-ring\" type=\"button\">R\u00e9initialiser<\/button>\n    <\/div>\n  <\/form>\n\n  <div id=\"messages\" class=\"mt-4\" role=\"status\" aria-live=\"polite\"><\/div>\n\n  <section id=\"results\" class=\"mt-4 hidden\" aria-labelledby=\"results-title\">\n    <h3 id=\"results-title\" class=\"text-lg font-semibold\">R\u00e9sultats<\/h3>\n    <div id=\"summary\" class=\"mt-2 text-sm text-gray-700\"><\/div>\n\n    <div class=\"mt-3 overflow-auto border rounded\">\n      <table id=\"stops-table\" class=\"min-w-full text-sm\">\n        <thead class=\"bg-gray-50 sticky top-0\">\n          <tr>\n            <th class=\"px-3 py-2 text-left\">#<\/th>\n            <th class=\"px-3 py-2 text-left\">Heure (depuis le d\u00e9part)<\/th>\n            <th class=\"px-3 py-2 text-left\">Heure horloge<\/th>\n            <th class=\"px-3 py-2 text-left\">Distance cumul\u00e9e (km)<\/th>\n            <th class=\"px-3 py-2 text-left\">Temps total \u00e9coul\u00e9 (avec pauses)<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody id=\"stops-body\" class=\"bg-white\"><\/tbody>\n      <\/table>\n    <\/div>\n\n    <div class=\"mt-3 flex gap-2\">\n      <button id=\"copy-btn\" class=\"px-3 py-2 bg-green-600 text-white rounded hover:bg-green-700 focus-ring\">Copier CSV<\/button>\n      <button id=\"download-btn\" class=\"px-3 py-2 bg-indigo-600 text-white rounded hover:bg-indigo-700 focus-ring\">T\u00e9l\u00e9charger CSV<\/button>\n      <button id=\"print-btn\" class=\"px-3 py-2 bg-yellow-500 text-white rounded hover:bg-yellow-600 focus-ring\">Imprimer<\/button>\n    <\/div>\n  <\/section>\n<\/div>\n\n<script>\n\/*\n  Script principal du calculateur de pauses.\n  - Toutes les cha\u00eenes sont en fran\u00e7ais.\n  - Pas d'API externe utilis\u00e9e.\n  - Logique comment\u00e9e en fran\u00e7ais.\n*\/\n\n\/*\n  I18N : toutes les cha\u00eenes utilis\u00e9es ici sont centralis\u00e9es pour faciliter l'\u00e9dition.\n*\/\nconst I18N = {\n  noStops: \"Aucune pause n\u00e9cessaire pour la dur\u00e9e indiqu\u00e9e.\",\n  summaryTemplate: (nStops, totalDistance, totalTimeStr) =>\n    `Pauses recommand\u00e9es : ${nStops} \u2022 Distance estim\u00e9e totale : ${totalDistance.toFixed(1)} km \u2022 Dur\u00e9e sans pauses : ${totalTimeStr}`,\n  invalidInputs: \"Veuillez renseigner des valeurs valides (nombres positifs).\",\n  copied: \"CSV copi\u00e9 dans le presse-papiers.\",\n  downloadName: \"pauses_trajet.csv\"\n};\n\n\/*\n  S\u00e9lecteurs et \u00e9l\u00e9ments DOM\n*\/\nconst totalMinutesEl = document.getElementById('total-minutes');\nconst avgSpeedEl = document.getElementById('avg-speed');\nconst intervalMinsEl = document.getElementById('interval-mins');\nconst pauseDurationEl = document.getElementById('pause-duration');\nconst startTimeEl = document.getElementById('start-time');\nconst computeBtn = document.getElementById('compute-btn');\nconst resetBtn = document.getElementById('reset-btn');\nconst messagesEl = document.getElementById('messages');\nconst resultsSection = document.getElementById('results');\nconst summaryEl = document.getElementById('summary');\nconst stopsBodyEl = document.getElementById('stops-body');\nconst copyBtn = document.getElementById('copy-btn');\nconst downloadBtn = document.getElementById('download-btn');\nconst printBtn = document.getElementById('print-btn');\n\n\/*\n  Utilitaires temps et formatage\n*\/\nfunction minutesToHHMM(totalMinutes) {\n  const h = Math.floor(totalMinutes \/ 60);\n  const m = Math.round(totalMinutes % 60);\n  return `${String(h).padStart(2,'0')}h${String(m).padStart(2,'0')}`;\n}\nfunction addMinutesToTimeString(timeString, minutesToAdd) {\n  \/\/ timeString format \"HH:MM\"\n  if (!timeString) return '';\n  const [hh, mm] = timeString.split(':').map(Number);\n  if (Number.isNaN(hh) || Number.isNaN(mm)) return '';\n  const base = hh * 60 + mm + Math.round(minutesToAdd);\n  const dayMinutes = ((base % (24*60)) + (24*60)) % (24*60);\n  const h = Math.floor(dayMinutes \/ 60);\n  const m = dayMinutes % 60;\n  return `${String(h).padStart(2,'0')}:${String(m).padStart(2,'0')}`;\n}\n\n\/*\n  Calcul des arr\u00eats\n  - On calcule les temps de pause en minutes \u00e0 intervalles r\u00e9guliers : interval, 2*interval, ...\n  - On exclut tout arr\u00eat qui se produirait exactement \u00e0 l'arriv\u00e9e.\n  - Pour l'affichage horloge, on ajoute la dur\u00e9e des pauses pr\u00e9c\u00e9dentes (nombre_de_pauses_pr\u00e9c\u00e9dentes * pauseDuration).\n*\/\nfunction computeStops(totalMinutes, avgSpeedKmh, intervalMinutes, pauseDurationMinutes, startTimeStr) {\n  const stops = [];\n  \/\/ G\u00e9n\u00e9rez les temps (en minutes depuis le d\u00e9part, sans compter les pauses)\n  for (let t = intervalMinutes; t < totalMinutes; t += intervalMinutes) {\n    \/\/ t est le moment (minutes depuis d\u00e9part) o\u00f9 une pause est recommand\u00e9e\n    const stopIndex = stops.length + 1;\n    \/\/ Distance cumul\u00e9e jusqu'\u00e0 ce point (en km)\n    const dist = avgSpeedKmh * (t \/ 60);\n    \/\/ Nombre de pauses d\u00e9j\u00e0 effectu\u00e9es avant ce stop (c'est \u00e9gal \u00e0 stopIndex-1)\n    const pausesBefore = stopIndex - 1;\n    \/\/ Heure horloge : d\u00e9part + t minutes + (pausesBefore * pauseDurationMinutes)\n    const wallClock = startTimeStr ? addMinutesToTimeString(startTimeStr, t + pausesBefore * pauseDurationMinutes) : '';\n    \/\/ Temps total \u00e9coul\u00e9 depuis d\u00e9part en tenant compte des pauses pr\u00e9c\u00e9dentes\n    const elapsedWithPauses = t + pausesBefore * pauseDurationMinutes;\n    stops.push({\n      index: stopIndex,\n      minuteFromStart: t,\n      wallClock,\n      distance: dist,\n      elapsedWithPauses\n    });\n  }\n  \/\/ Distance totale estim\u00e9e (sans inclure le temps pass\u00e9 en pause, puisque elles n'ajoutent pas de distance)\n  const totalDistance = avgSpeedKmh * (totalMinutes \/ 60);\n  return { stops, totalDistance };\n}\n\n\/*\n  Validation simple des champs\n*\/\nfunction validateInputs(totalMinutes, avgSpeed, intervalMinutes, pauseDuration) {\n  if (![totalMinutes, avgSpeed, intervalMinutes, pauseDuration].every(n => typeof n === 'number' && isFinite(n))) return false;\n  if (totalMinutes <= 0 || avgSpeed <= 0 || intervalMinutes <= 0 || pauseDuration < 0) return false;\n  return true;\n}\n\n\/*\n  Rendu des r\u00e9sultats dans la table et le r\u00e9sum\u00e9\n*\/\nfunction renderResults(computation, totalMinutes, avgSpeedKmh, pauseDurationMinutes) {\n  const { stops, totalDistance } = computation;\n  \/\/ R\u00e9sum\u00e9\n  const durationStr = minutesToHHMM(totalMinutes);\n  summaryEl.textContent = stops.length === 0 ? I18N.noStops : I18N.summaryTemplate(stops.length, totalDistance, durationStr);\n\n  \/\/ Table\n  stopsBodyEl.innerHTML = '';\n  if (stops.length === 0) {\n    const tr = document.createElement('tr');\n    tr.innerHTML = `<td class=\"px-3 py-3\" colspan=\"5\">${I18N.noStops}<\/td>`;\n    stopsBodyEl.appendChild(tr);\n  } else {\n    stops.forEach(s => {\n      const tr = document.createElement('tr');\n      tr.className = 'border-t';\n      tr.innerHTML = `\n        <td class=\"px-3 py-2\">${s.index}<\/td>\n        <td class=\"px-3 py-2\">${minutesToHHMM(s.minuteFromStart)}<\/td>\n        <td class=\"px-3 py-2\">${s.wallClock || '\u2014'}<\/td>\n        <td class=\"px-3 py-2\">${s.distance.toFixed(1)} km<\/td>\n        <td class=\"px-3 py-2\">${minutesToHHMM(s.elapsedWithPauses)}<\/td>\n      `;\n      stopsBodyEl.appendChild(tr);\n    });\n  }\n  resultsSection.classList.remove('hidden');\n}\n\n\/*\n  Export CSV (simple)\n*\/\nfunction stopsToCSV(computation) {\n  const { stops } = computation;\n  const headers = ['#', 'Heure depuis d\u00e9part', 'Heure horloge', 'Distance cumul\u00e9e (km)', 'Temps \u00e9coul\u00e9 (avec pauses)'];\n  const rows = [headers];\n  if (stops.length === 0) {\n    rows.push(['0', I18N.noStops, '', '', '']);\n  } else {\n    stops.forEach(s => {\n      rows.push([\n        s.index,\n        minutesToHHMM(s.minuteFromStart),\n        s.wallClock || '',\n        s.distance.toFixed(1),\n        minutesToHHMM(s.elapsedWithPauses)\n      ]);\n    });\n  }\n  return rows.map(r => r.map(cell => `\"${String(cell).replace(\/\"\/g,'\"\"')}\"`).join(',')).join('n');\n}\n\n\/*\n  Gestion des actions : calculer, r\u00e9initialiser, copier, t\u00e9l\u00e9charger, imprimer\n*\/\nlet lastComputation = null;\n\ncomputeBtn.addEventListener('click', () => {\n  messagesEl.textContent = '';\n  \/\/ R\u00e9cup\u00e8re et parse les valeurs\n  const totalMinutes = Number(totalMinutesEl.value);\n  const avgSpeed = Number(avgSpeedEl.value);\n  const intervalMinutes = Number(intervalMinsEl.value);\n  const pauseDuration = Number(pauseDurationEl.value);\n  const startTime = startTimeEl.value || '';\n\n  if (!validateInputs(totalMinutes, avgSpeed, intervalMinutes, pauseDuration)) {\n    messagesEl.innerHTML = `<div class=\"text-red-600\">${I18N.invalidInputs}<\/div>`;\n    resultsSection.classList.add('hidden');\n    return;\n  }\n\n  \/\/ Calcul\n  const computation = computeStops(totalMinutes, avgSpeed, intervalMinutes, pauseDuration, startTime);\n  lastComputation = computation; \/\/ m\u00e9morisation pour export\/copy\n  renderResults(computation, totalMinutes, avgSpeed, pauseDuration);\n});\n\nresetBtn.addEventListener('click', () => {\n  \/\/ Valeurs par d\u00e9faut r\u00e9initialis\u00e9es\n  totalMinutesEl.value = 240;\n  avgSpeedEl.value = 90;\n  intervalMinsEl.value = 120;\n  pauseDurationEl.value = 15;\n  startTimeEl.value = '08:00';\n  messagesEl.textContent = '';\n  resultsSection.classList.add('hidden');\n  stopsBodyEl.innerHTML = '';\n  summaryEl.textContent = '';\n  lastComputation = null;\n});\n\ncopyBtn.addEventListener('click', async () => {\n  if (!lastComputation) {\n    messagesEl.innerHTML = `<div class=\"text-red-600\">Aucun calcul disponible \u00e0 copier.<\/div>`;\n    return;\n  }\n  const csv = stopsToCSV(lastComputation);\n  try {\n    await navigator.clipboard.writeText(csv);\n    messagesEl.innerHTML = `<div class=\"text-green-700\">${I18N.copied}<\/div>`;\n  } catch (err) {\n    messagesEl.innerHTML = `<div class=\"text-red-600\">Impossible de copier (v\u00e9rifiez les permissions du navigateur).<\/div>`;\n  }\n});\n\ndownloadBtn.addEventListener('click', () => {\n  if (!lastComputation) {\n    messagesEl.innerHTML = `<div class=\"text-red-600\">Aucun calcul disponible \u00e0 t\u00e9l\u00e9charger.<\/div>`;\n    return;\n  }\n  const csv = stopsToCSV(lastComputation);\n  const blob = new Blob([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 = I18N.downloadName;\n  document.body.appendChild(a);\n  a.click();\n  document.body.removeChild(a);\n  URL.revokeObjectURL(url);\n});\n\nprintBtn.addEventListener('click', () => {\n  \/\/ Impression simple : on ouvre une nouvelle fen\u00eatre avec le tableau et on lance print\n  if (!lastComputation) {\n    messagesEl.innerHTML = `<div class=\"text-red-600\">Aucun calcul disponible \u00e0 imprimer.<\/div>`;\n    return;\n  }\n  const csv = stopsToCSV(lastComputation);\n  const html = `\n    <html>\n      <head><title>Impression - Pauses<\/title><\/head>\n      <body>\n        <pre>${csv.replace(\/<\/g,'&lt;')}<\/pre>\n      <\/body>\n    <\/html>\n  `;\n  const w = window.open('', '_blank');\n  if (!w) {\n    messagesEl.innerHTML = `<div class=\"text-red-600\">Impossible d'ouvrir la fen\u00eatre d'impression (bloqueur de fen\u00eatres pop-up ?).<\/div>`;\n    return;\n  }\n  w.document.open();\n  w.document.write(html);\n  w.document.close();\n  w.print();\n});\n\n\/* Fin du script - pas d'API externe utilis\u00e9e. *\/\n<\/script>\n\n<h2 class=\"wp-block-heading\">Obligations sp\u00e9cifiques pour les professionnels et conditions de transport<\/h2>\n\n<p class=\"wp-block-paragraph\">Les transports r\u00e9alis\u00e9s dans le cadre d\u2019une activit\u00e9 \u00e9conomique sont soumis au r\u00e8glement (CE) 1\/2005. Les transporteurs doivent obtenir une autorisation valable 5 ans et, pour certains voyages, un agr\u00e9ment des v\u00e9hicules.<\/p>\n\n<p class=\"wp-block-paragraph\">Le convoyeur doit justifier d\u2019un certificat de comp\u00e9tence pour les esp\u00e8ces vis\u00e9es (ruminants, porcs, chevaux, volailles). Pour chiens et chats, une formation ou qualification est requise pour garantir le bien-\u00eatre animal.<\/p>\n\n<p class=\"wp-block-paragraph\">Sanctions : le non-respect peut entra\u00eener des amendes allant jusqu\u2019\u00e0 <strong>7 500 \u20ac<\/strong> et des peines, selon la gravit\u00e9 et la finalit\u00e9 du transport.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.autoexpertbrest.com\/articles\/reglementation-securite-routiere\/securiser-le-transport-danimaux-en-voiture-obligations-reglementaires-2026\/\" rel=\"nofollow noopener\" target=\"_blank\">Obligations et dispositifs recommand\u00e9s 2026<\/a><\/p>\n\n<h2 class=\"wp-block-heading\">Erreurs fr\u00e9quentes \u00e0 \u00e9viter et cas pratiques<\/h2>\n\n<p class=\"wp-block-paragraph\">Erreur courante : tenir l\u2019animal sur les genoux. Cela restreint les mouvements du conducteur et est assimil\u00e9 \u00e0 une distraction sanctionnable. Autre erreur : une caisse non arrim\u00e9e qui bascule lors d\u2019un freinage.<\/p>\n\n<p class=\"wp-block-paragraph\">Cas concret : Am\u00e9lie, conductrice d\u2019un break, a \u00e9t\u00e9 immobilis\u00e9e lors d\u2019un contr\u00f4le parce que son chien \u00e9tait libre \u00e0 l\u2019arri\u00e8re. Elle a d\u00fb acheter un harnais homologu\u00e9 sur place et payer une amende. Le temps perdu et le stress auraient \u00e9t\u00e9 \u00e9vit\u00e9s en appliquant la checklist.<\/p>\n\n<p class=\"wp-block-paragraph\">Phrase-cl\u00e9 : bannissez les solutions improvis\u00e9es, privil\u00e9giez des \u00e9quipements test\u00e9s et entretenus.<\/p>\n\n<h2 class=\"wp-block-heading\">Synth\u00e8se rapide pour agir imm\u00e9diatement<\/h2>\n\n<p class=\"wp-block-paragraph\">Pour respecter la <strong>loi fran\u00e7aise<\/strong> et assurer la <strong>s\u00e9curit\u00e9 animale<\/strong> : \u00e9quipez l\u2019animal d\u2019un syst\u00e8me homologu\u00e9 (harnais, caisse, grille), v\u00e9rifiez les fixations avant chaque trajet et planifiez les pauses selon la <strong>dur\u00e9e du trajet<\/strong>. En tant que professionnel, obtenez les autorisations et certificats n\u00e9cessaires pour \u00e9viter sanctions lourdes.<\/p>\n\n<p class=\"wp-block-paragraph\">Action imm\u00e9diate : placez un harnais homologu\u00e9 ou une caisse arrim\u00e9e avant de reprendre la route\u2014c\u2019est la meilleure protection pour l\u2019animal et pour vous.<\/p>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Quelle amende pour un animal libre dans l'habitacle ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Un animal non su00e9curisu00e9 expose au paiement du2019une amende forfaitaire de 35 u20ac u00e0 150 u20ac et peut entrau00eener lu2019immobilisation du vu00e9hicule lors du2019un contru00f4le. En cas de ru00e9cidive ou du2019accident grave, lu2019amende peut u00eatre majoru00e9e jusquu2019u00e0 375 u20ac.\"}},{\"@type\":\"Question\",\"name\":\"Quel dispositif choisir pour un chien de 25 kg ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Pour un chien de 25 kg, privilu00e9giez une caisse rigide arrimu00e9e ou un harnais robuste reliu00e9 u00e0 la ceinture. La caisse offre une protection maximale sur longs trajets, tandis que le harnais peut convenir pour trajets courts si homologuu00e9.\"}},{\"@type\":\"Question\",\"name\":\"Les particuliers ont-ils des obligations particuliu00e8res ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Les particuliers nu2019ont pas besoin du2019autorisation administrative, mais doivent respecter les ru00e8gles de bien-u00eatre animal : animal apte au voyage, espace et ventilation suffisants, pauses ru00e9guliu00e8res et absence de souffrance.\"}},{\"@type\":\"Question\",\"name\":\"Que doit faire un transporteur professionnel ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Le transporteur professionnel doit du00e9tenir une autorisation de transport (valable 5 ans), un agru00e9ment de vu00e9hicule pour les longues distances, et su2019assurer de la pru00e9sence du2019un convoyeur qualifiu00e9 ; des documents relatifs u00e0 lu2019origine et destination des animaux doivent u00eatre tenus u00e0 bord.\"}}]}\n<\/script>\n<h3>Quelle amende pour un animal libre dans l'habitacle ?<\/h3>\n<p>Un animal non s\u00e9curis\u00e9 expose au paiement d\u2019une amende forfaitaire de 35 \u20ac \u00e0 150 \u20ac et peut entra\u00eener l\u2019immobilisation du v\u00e9hicule lors d\u2019un contr\u00f4le. En cas de r\u00e9cidive ou d\u2019accident grave, l\u2019amende peut \u00eatre major\u00e9e jusqu\u2019\u00e0 375 \u20ac.<\/p>\n<h3>Quel dispositif choisir pour un chien de 25 kg ?<\/h3>\n<p>Pour un chien de 25 kg, privil\u00e9giez une caisse rigide arrim\u00e9e ou un harnais robuste reli\u00e9 \u00e0 la ceinture. La caisse offre une protection maximale sur longs trajets, tandis que le harnais peut convenir pour trajets courts si homologu\u00e9.<\/p>\n<h3>Les particuliers ont-ils des obligations particuli\u00e8res ?<\/h3>\n<p>Les particuliers n\u2019ont pas besoin d\u2019autorisation administrative, mais doivent respecter les r\u00e8gles de bien-\u00eatre animal : animal apte au voyage, espace et ventilation suffisants, pauses r\u00e9guli\u00e8res et absence de souffrance.<\/p>\n<h3>Que doit faire un transporteur professionnel ?<\/h3>\n<p>Le transporteur professionnel doit d\u00e9tenir une autorisation de transport (valable 5 ans), un agr\u00e9ment de v\u00e9hicule pour les longues distances, et s\u2019assurer de la pr\u00e9sence d\u2019un convoyeur qualifi\u00e9 ; des documents relatifs \u00e0 l\u2019origine et destination des animaux doivent \u00eatre tenus \u00e0 bord.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour approfondir la lecture et comparer t\u00e9moignages et guides pratiques, consultez des analyses sp\u00e9cialis\u00e9es et retours d'exp\u00e9rience sur le <a href=\"https:\/\/www.autosblog.fr\/transport-danimaux-en-voiture-reglementation-securite-et-sanctions-en-france\/\" rel=\"nofollow noopener\" target=\"_blank\">transport d'animaux en voiture<\/a> et les conseils terrain sur les \u00e9quipements adapt\u00e9s.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>En bref : Transport animalier et voiture se conjuguent souvent pendant les vacances, les visites chez le v\u00e9t\u00e9rinaire ou les d\u00e9m\u00e9nagements. Depuis la mise en place de la r\u00e9glementation 2026, la loi fran\u00e7aise encadre strictement la fa\u00e7on dont un animal est retenu dans l\u2019habitacle : un chien circulant librement repr\u00e9sente une source de distraction reconnue &#8230; <a title=\"R\u00e8gles pour le transport des animaux en voiture en france en 2026\" class=\"read-more\" href=\"https:\/\/www.transports-express-caraibes.fr\/blog\/regles-transport-animaux-france\/\" aria-label=\"En savoir plus sur R\u00e8gles pour le transport des animaux en voiture en france en 2026\">Lire plus<\/a><\/p>\n","protected":false},"author":3,"featured_media":23563,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[82],"tags":[],"class_list":["post-23564","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-transport"],"views":275,"_links":{"self":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts\/23564","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=23564"}],"version-history":[{"count":0,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts\/23564\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/media\/23563"}],"wp:attachment":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/media?parent=23564"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/categories?post=23564"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/tags?post=23564"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}