{"id":23584,"date":"2026-07-01T06:35:40","date_gmt":"2026-07-01T06:35:40","guid":{"rendered":"https:\/\/www.transports-express-caraibes.fr\/blog\/transport-commun-martinique\/"},"modified":"2026-07-01T06:35:40","modified_gmt":"2026-07-01T06:35:40","slug":"transport-commun-martinique","status":"publish","type":"post","link":"https:\/\/www.transports-express-caraibes.fr\/blog\/transport-commun-martinique\/","title":{"rendered":"Comment fonctionne le transport en commun en Martinique aujourd&rsquo;hui"},"content":{"rendered":"<p class=\"wp-block-paragraph\"><strong>En bref :<\/strong><\/p>\n\n<ul class=\"wp-block-list\"><li><strong>R\u00e9seau mixte<\/strong> : bus urbains, navettes maritimes et deux lignes TCSP en activit\u00e9.<\/li><li><strong>Horaires<\/strong> modul\u00e9s selon zones : fr\u00e9quence TCSP 10\u201320 min en heures de pointe.<\/li><li><strong>Tarifs<\/strong> variables : billets unitaires, abonnements scolaires et tarifs r\u00e9duits disponibles.<\/li><li><strong>Mobilit\u00e9<\/strong> confront\u00e9e aux gr\u00e8ves et \u00e0 des baisses de service ; pr\u00e9voir un plan B.<\/li><li><strong>Outils<\/strong> : sites officiels et applications pour consulter itin\u00e9raires et horaires en temps r\u00e9el.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\"><strong>Comment se d\u00e9placer sans voiture sur l&rsquo;\u00eele et \u00e0 quoi s&rsquo;attendre aujourd&rsquo;hui ?<\/strong> La Martinique combine un r\u00e9seau de bus classiques, des navettes et un transport en site propre (TCSP) qui structure les d\u00e9placements autour de Fort-de-France. Malgr\u00e9 des am\u00e9liorations techniques et des projets d&rsquo;extension du TCSP, les usagers subissent encore des interruptions : tensions sociales, lignes partiellement desservies et horaires modifi\u00e9s peuvent compliquer un trajet simple. Ce texte propose une lecture claire du r\u00e9seau actuel, des m\u00e9thodes pratiques pour planifier un d\u00e9placement (horaires, itin\u00e9raire, tarifs), des solutions lorsque le service est perturb\u00e9 et des astuces pour choisir le mode le plus adapt\u00e9 selon votre profil (\u00e9tudiant, travailleur, visiteur). Chaque section contient des rep\u00e8res concrets : fr\u00e9quences en minutes, co\u00fbt indicatif, liens officiels pour v\u00e9rifier en temps r\u00e9el et alternatives \u00e0 privil\u00e9gier lors d\u2019incidents. L&rsquo;objectif : vous permettre de d\u00e9cider vite et bien quand vous devez aller au travail, \u00e0 l&rsquo;\u00e9cole ou explorer l&rsquo;\u00eele sans perdre de temps ni d&rsquo;argent.<\/p>\n\n<h2 class=\"wp-block-heading\">Quels services composent le transport en commun en Martinique aujourd&rsquo;hui<\/h2>\n\n<p class=\"wp-block-paragraph\">Le paysage du <strong>transport en commun<\/strong> martiniquais repose sur plusieurs briques compl\u00e9mentaires. Le TCSP (Bus \u00e0 haut niveau de service) est le pilier structurant avec actuellement deux lignes principales : <strong>TCSP A<\/strong> (Almadies\u2013Carr\u00e8re) et <strong>TCSP B<\/strong> (Almadies\u2013Mahault). Autour, des lignes de bus classiques desservent zones rurales et quartiers, tandis que des <strong>navettes<\/strong> couvrent des liaisons courtes ou maritimes selon les secteurs.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour consulter le r\u00e9seau et les services g\u00e9r\u00e9s par l\u2019autorit\u00e9 locale, les informations officielles sont centralis\u00e9es sur le portail de mobilit\u00e9.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.martiniquemobilites.mq\/\" rel=\"nofollow noopener\" target=\"_blank\">Martinique Mobilit\u00e9s &#8211; site officiel<\/a><\/p>\n\n<h3 class=\"wp-block-heading\">Le TCSP et les lignes structurantes<\/h3>\n\n<p class=\"wp-block-paragraph\">Les deux lignes TCSP dessinent l&rsquo;armature centrale. Fr\u00e9quences observ\u00e9es en p\u00e9riode normale : <strong>10\u201315 minutes<\/strong> aux heures de pointe, <strong>20\u201330 minutes<\/strong> en journ\u00e9e creuse. Le projet pr\u00e9voit des extensions vers le sud, le nord-est et le nord-ouest pour am\u00e9liorer <strong>l&rsquo;accessibilit\u00e9<\/strong> et la <strong>mobilit\u00e9<\/strong> intercommunale.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour suivre le trac\u00e9 et les arr\u00eats du TCSP, la r\u00e9gie propose des fiches d\u00e9taill\u00e9es.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.martiniquetransport.mq\/tcsp\/\" rel=\"nofollow noopener\" target=\"_blank\">Fiches TCSP et itin\u00e9raires<\/a><\/p>\n\n<p class=\"wp-block-paragraph\">Point-cl\u00e9 : le TCSP facilite les d\u00e9placements rapides sur les axes les plus fr\u00e9quent\u00e9s. Fin de l&rsquo;encadr\u00e9.<\/p>\n\n<h2 class=\"wp-block-heading\">Horaires, itin\u00e9raires et tarifs : planifier un trajet<\/h2>\n\n<p class=\"wp-block-paragraph\">Pour organiser un d\u00e9placement, trois \u00e9l\u00e9ments forment le noyau : <strong>horaire<\/strong>, <strong>itin\u00e9raire<\/strong> et <strong>tarifs<\/strong>. Les horaires varient selon la ligne et la p\u00e9riode scolaire. Les itin\u00e9raires sont publi\u00e9s et mis \u00e0 jour par la direction des transports.<\/p>\n\n<p class=\"wp-block-paragraph\">Consultez les horaires actualis\u00e9s pour pr\u00e9parer votre trajet avant de partir.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/itineraires.martiniquemobilites.mq\/fr\/horaires\" rel=\"nofollow noopener\" target=\"_blank\">Consulter les horaires et itin\u00e9raires<\/a><\/p>\n\n<h3 class=\"wp-block-heading\">\u00c9tapes pratiques pour planifier<\/h3>\n\n<ol class=\"wp-block-list\"><li>V\u00e9rifier l&rsquo;<strong>horaire<\/strong> et le <strong>trajet<\/strong> sur le site officiel ou l&rsquo;application.<\/li><li>Comparer les options : TCSP pour les longues liaisons rapides, bus locaux pour desserte fine.<\/li><li>Anticiper 10\u201320 minutes suppl\u00e9mentaires en cas de gr\u00e8ve ou d&rsquo;incident.<\/li><li>Choisir un billet adapt\u00e9 : unit\u00e9, carnet ou abonnement scolaire selon la fr\u00e9quence.<\/li><\/ol>\n\n<p class=\"wp-block-paragraph\">Derni\u00e8re \u00e9tape : validez votre itin\u00e9raire sur une appli de mobilit\u00e9 pour obtenir les temps r\u00e9els.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/transitapp.com\/fr\/region\/fort-de-france\/martinique-transport-zone-centre\/tcsp-a\" rel=\"nofollow noopener\" target=\"_blank\">Itin\u00e9raires en temps r\u00e9el<\/a><\/p>\n\n<h2 class=\"wp-block-heading\">Tarifs et formules : \u00e0 quoi s&rsquo;attendre<\/h2>\n\n<p class=\"wp-block-paragraph\">Les tarifs varient suivant l&rsquo;op\u00e9rateur et le type de service. \u00c0 titre indicatif et pour se rep\u00e9rer :<\/p>\n\n<ul class=\"wp-block-list\"><li><strong>Billet unitaire<\/strong> bus urbain : autour de 1,50 \u20ac \u00e0 2,00 \u20ac.<\/li><li><strong>Abonnement mensuel<\/strong> pour usagers r\u00e9guliers : tarifs r\u00e9duits pour \u00e9tudiants et scolaires.<\/li><li><strong>Navettes sp\u00e9cifiques<\/strong> (liaisons courtes ou maritimes) : tarif propre selon distance.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Points pratiques : achetez ou rechargez la carte de transport en ligne quand c\u2019est possible pour gagner du temps.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/bellemartinique.com\/bus-navettes-martinique\/\" rel=\"nofollow noopener\" target=\"_blank\">Guide pratique des bus et navettes<\/a><\/p>\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Service<\/th>\n<th>Principaux itin\u00e9raires<\/th>\n<th>Fr\u00e9quence (pointe)<\/th>\n<th>Tarif indicatif<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>TCSP A &amp; B<\/strong><\/td>\n<td>Almadies  Carr\u00e8re \/ Mahault<\/td>\n<td>10\u201315 min<\/td>\n<td>Environ 1,80 \u20ac (varie)<\/td>\n<\/tr>\n<tr>\n<td><strong>Bus urbains<\/strong><\/td>\n<td>R\u00e9seau centre et p\u00e9riph\u00e9rie<\/td>\n<td>15\u201330 min<\/td>\n<td>1,50 \u20ac \u2013 2,00 \u20ac<\/td>\n<\/tr>\n<tr>\n<td><strong>Navettes<\/strong><\/td>\n<td>Liaisons courtes et maritimes<\/td>\n<td>Variable<\/td>\n<td>Variable selon trajet<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n<!-- Calculateur \"Estimez votre trajet\" \u2014 \u00c0 coller directement dans votre page (ne contient ni <head> ni <body> complets)\n     D\u00e9pendance CSS l\u00e9g\u00e8re : Tailwind en version \"browser\" (CDN)\n-->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/@tailwindcss\/browser@4\"><\/script>\n\n<div id=\"transport-calculator\" class=\"max-w-3xl mx-auto my-6 p-4 rounded-lg shadow-md bg-white text-gray-800\"\n     style=\"max-height:1800px; overflow:auto;\"\n     aria-labelledby=\"tc-title\">\n  <h2 id=\"tc-title\" class=\"text-2xl font-semibold mb-2\">Estimez votre trajet \u2014 transport en commun (Martinique)<\/h2>\n  <p class=\"text-sm text-gray-600 mb-4\">\n    Entrez la distance en km et la fr\u00e9quence souhait\u00e9e ; le calculateur estime le temps de trajet et le co\u00fbt approximatif en euros.\n    Tous les param\u00e8tres sont modifiables pour mieux correspondre \u00e0 votre situation.\n  <\/p>\n\n  <form id=\"tc-form\" class=\"space-y-4\" onsubmit=\"return false;\" aria-describedby=\"tc-desc\">\n    <div id=\"tc-desc\" class=\"sr-only\">\n      Formulaire pour estimer dur\u00e9e et co\u00fbt d&rsquo;un trajet en transport en commun.\n    <\/div>\n\n    <!-- Distance -->\n    <div>\n      <label for=\"distance\" class=\"block text-sm font-medium\">Distance (km)<\/label>\n      <input id=\"distance\" type=\"number\" min=\"0\" step=\"0.1\" value=\"10\"\n             class=\"mt-1 block w-full rounded-md border-gray-300 shadow-sm focus:ring-indigo-500 focus:border-indigo-500\"\n             aria-describedby=\"distance-help\" \/>\n      <p id=\"distance-help\" class=\"text-xs text-gray-500\">Ex : 10 km<\/p>\n    <\/div>\n\n    <!-- Mode de transport -->\n    <div>\n      <label for=\"mode\" class=\"block text-sm font-medium\">Mode de transport (estimation)<\/label>\n      <select id=\"mode\" class=\"mt-1 block w-full rounded-md border-gray-300 p-2\"\n              aria-describedby=\"mode-help\">\n        <option value=\"bus\" selected>Bus \/ Navette (arr\u00eats fr\u00e9quents)<\/option>\n        <option value=\"express\">Bus express \/ TCSP<\/option>\n        <option value=\"minibus\">Minibus \/ Transport collectif<\/option>\n        <option value=\"velo\">V\u00e9lo \/ Trottinette (moyenne rapide)<\/option>\n        <option value=\"marche\">Marche (pour tr\u00e8s courtes distances)<\/option>\n      <\/select>\n      <p id=\"mode-help\" class=\"text-xs text-gray-500\">Choisir le mode pour adapter la vitesse moyenne.<\/p>\n    <\/div>\n\n    <!-- Vitesse moyenne (editable) -->\n    <div>\n      <label for=\"speed\" class=\"block text-sm font-medium\">Vitesse moyenne estim\u00e9e (km\/h)<\/label>\n      <div class=\"flex gap-2 items-center mt-1\">\n        <input id=\"speed\" type=\"number\" min=\"1\" step=\"0.1\" value=\"25\"\n               class=\"w-32 rounded-md border-gray-300 p-2\" aria-describedby=\"speed-help\" \/>\n        <span class=\"text-sm text-gray-600\">km\/h (modifiable pour affiner)<\/span>\n      <\/div>\n      <p id=\"speed-help\" class=\"text-xs text-gray-500\">Ex : Bus ~25 km\/h, TCSP ~40 km\/h, marche ~5 km\/h.<\/p>\n    <\/div>\n\n    <!-- Fr\u00e9quence souhait\u00e9e -->\n    <div>\n      <label class=\"block text-sm font-medium\">Fr\u00e9quence souhait\u00e9e<\/label>\n      <div class=\"mt-1 grid grid-cols-3 gap-2\">\n        <input id=\"freq-number\" type=\"number\" min=\"0\" step=\"1\" value=\"2\"\n               class=\"rounded-md border-gray-300 p-2\" aria-label=\"Nombre de trajets par p\u00e9riode\" \/>\n        <select id=\"freq-period\" class=\"rounded-md border-gray-300 p-2\" aria-label=\"P\u00e9riode de fr\u00e9quence\">\n          <option value=\"jour\" selected>par jour (ouvr\u00e9s \u2248 22j\/mois)<\/option>\n          <option value=\"semaine\">par semaine<\/option>\n          <option value=\"mois\">par mois<\/option>\n        <\/select>\n        <div class=\"flex items-center\">\n          <label class=\"text-sm text-gray-600 ml-2\">\n            <input id=\"roundtrip\" type=\"checkbox\" checked class=\"mr-2\" \/>\n            Aller-retour compt\u00e9 s\u00e9par\u00e9ment\n          <\/label>\n        <\/div>\n      <\/div>\n      <p class=\"text-xs text-gray-500 mt-1\">\n        Exemple : 2 + \u00ab\u00a0par jour\u00a0\u00bb = 2 trajets simples par jour. Conversion vers \u00ab\u00a0par mois\u00a0\u00bb utilis\u00e9e pour estimer co\u00fbts d&rsquo;abonnement.\n      <\/p>\n    <\/div>\n\n    <!-- Tarifs -->\n    <fieldset class=\"border-t pt-3\">\n      <legend class=\"text-sm font-medium\">Param\u00e8tres tarifaires (modifiable)<\/legend>\n\n      <div class=\"mt-2 grid grid-cols-1 md:grid-cols-2 gap-3\">\n        <div>\n          <label for=\"fare\" class=\"block text-sm font-medium\">Tarif par trajet (EUR)<\/label>\n          <input id=\"fare\" type=\"number\" min=\"0\" step=\"0.01\" value=\"2.20\"\n                 class=\"mt-1 block w-full rounded-md border-gray-300 p-2\" aria-describedby=\"fare-help\" \/>\n          <p id=\"fare-help\" class=\"text-xs text-gray-500\">Tarif approximatif par voyage en transport en commun.<\/p>\n        <\/div>\n\n        <div>\n          <label for=\"monthly-pass\" class=\"block text-sm font-medium\">Abonnement mensuel (EUR)<\/label>\n          <input id=\"monthly-pass\" type=\"number\" min=\"0\" step=\"0.01\" value=\"55\"\n                 class=\"mt-1 block w-full rounded-md border-gray-300 p-2\" aria-describedby=\"pass-help\" \/>\n          <p id=\"pass-help\" class=\"text-xs text-gray-500\">Co\u00fbt d&rsquo;un pass mensuel (si disponible) \u2014 compar\u00e9 au co\u00fbt pay-as-you-go.<\/p>\n        <\/div>\n      <\/div>\n    <\/fieldset>\n\n    <!-- Actions -->\n    <div class=\"flex gap-2 pt-3\">\n      <button id=\"calculate-btn\" type=\"button\"\n              class=\"px-4 py-2 bg-indigo-600 text-white rounded hover:bg-indigo-700 focus:outline-none focus:ring-2 focus:ring-indigo-400\"\n              aria-controls=\"results\" >\n        Calculer\n      <\/button>\n      <button id=\"reset-btn\" type=\"button\"\n              class=\"px-4 py-2 bg-gray-200 rounded hover:bg-gray-300 focus:outline-none\"\n              title=\"R\u00e9initialiser les valeurs\">\n        R\u00e9initialiser\n      <\/button>\n      <button id=\"copy-btn\" type=\"button\"\n              class=\"ml-auto px-3 py-2 bg-green-600 text-white rounded hover:bg-green-700 focus:outline-none\"\n              title=\"Copier le r\u00e9sultat\">\n        Copier le r\u00e9sultat\n      <\/button>\n    <\/div>\n  <\/form>\n\n  <!-- R\u00e9sultats -->\n  <div id=\"results\" class=\"mt-4 p-3 border rounded bg-gray-50\" aria-live=\"polite\" aria-atomic=\"true\">\n    <h3 class=\"text-lg font-medium\">R\u00e9sultats<\/h3>\n    <div id=\"results-content\" class=\"mt-2 text-sm text-gray-800\">\n      <!-- Contenu ins\u00e9r\u00e9 par JS -->\n      Aucun calcul effectu\u00e9 pour l&rsquo;instant.\n    <\/div>\n  <\/div>\n\n  <!-- Astuces \/ Accessibilit\u00e9 -->\n  <div class=\"mt-3 text-xs text-gray-500\">\n    Astuce : adaptez la vitesse moyenne et les tarifs pour refl\u00e9ter des arr\u00eats fr\u00e9quents, correspondances ou abonnements locaux.\n    Cet outil donne des estimations \u2014 il ne remplace pas les tarifs officiels ou la planification d&rsquo;itin\u00e9raire.\n  <\/div>\n<\/div>\n\n<script>\n\/*\n  Script JavaScript pour le calculateur d'estimation de trajet.\n  1) Lisible et comment\u00e9 pour faciliter int\u00e9gration et modification.\n  2) Aucune API externe utilis\u00e9e (100% offline). Si vous souhaitez int\u00e9grer des donn\u00e9es r\u00e9elles d'un service\n     de transport local, ajouter l'API ici et respecter les contraintes (URL + exemple JSON en commentaire).\n*\/\n\n\/* --------------- UTILITAIRES --------------- *\/\n\n\/**\n * Convertit un nombre de trajets selon la p\u00e9riode choisie en \u00e9quivalent \"par mois\".\n * - jour -> multiplie par 22 (jours ouvr\u00e9s approximatifs)\n * - semaine -> multiplie par 4.345 (semaines\/mois moyen)\n * - mois -> multiplie par 1\n *\n * @param {number} number - nombre de trajets dans la p\u00e9riode\n * @param {string} period - 'jour' | 'semaine' | 'mois'\n * @returns {number} trajets estim\u00e9s par mois\n *\/\nfunction convertToMonthly(number, period) {\n  if (!isFinite(number) || number <= 0) return 0;\n  switch (period) {\n    case 'jour': return number * 22;           \/\/ approximation jours ouvr\u00e9s\n    case 'semaine': return number * 4.345;     \/\/ moyenne de semaines par mois\n    case 'mois': return number;\n    default: return number;\n  }\n}\n\n\/**\n * Formate une dur\u00e9e en heures\/minutes lisible.\n * @param {number} hours (peut \u00eatre fractionnaire)\n * @returns {string}\n *\/\nfunction formatDuration(hours) {\n  if (!isFinite(hours) || hours <= 0) return '0 min';\n  const totalMinutes = Math.round(hours * 60);\n  const h = Math.floor(totalMinutes \/ 60);\n  const m = totalMinutes % 60;\n  if (h === 0) return `${m} min`;\n  if (m === 0) return `${h} h`;\n  return `${h} h ${m} min`;\n}\n\n\/* --------------- R\u00c9F\u00c9RENCES DOM --------------- *\/\nconst form = document.getElementById('tc-form');\nconst distanceInput = document.getElementById('distance');\nconst modeSelect = document.getElementById('mode');\nconst speedInput = document.getElementById('speed');\nconst freqNumber = document.getElementById('freq-number');\nconst freqPeriod = document.getElementById('freq-period');\nconst roundtripCheckbox = document.getElementById('roundtrip');\nconst fareInput = document.getElementById('fare');\nconst monthlyPassInput = document.getElementById('monthly-pass');\n\nconst calculateBtn = document.getElementById('calculate-btn');\nconst resetBtn = document.getElementById('reset-btn');\nconst copyBtn = document.getElementById('copy-btn');\n\nconst resultsContent = document.getElementById('results-content');\n\n\/* --------------- LOGIQUE --------------- *\/\n\n\/**\n * V\u00e9rifie et normalise le mode pour proposer une vitesse par d\u00e9faut si n\u00e9cessaire.\n * Retourne la vitesse moyenne \u00e0 utiliser (km\/h).\n *\/\nfunction deriveSpeedFromMode(mode, userSpeed) {\n  \/\/ Si l'utilisateur a modifi\u00e9 la vitesse manuellement (non vide), on privil\u00e9gie cette valeur.\n  if (userSpeed &#038;&#038; userSpeed > 0) return Number(userSpeed);\n\n  \/\/ Valeurs par d\u00e9faut selon le mode \u2014 adaptables.\n  const defaults = {\n    bus: 25,       \/\/ bus \/ navette avec arr\u00eats fr\u00e9quents\n    express: 40,   \/\/ TCSP \/ bus express\n    minibus: 30,   \/\/ minibus (plus de red\u00e9marrages)\n    velo: 15,      \/\/ v\u00e9lo \/ trottinette (moyenne variable)\n    marche: 5      \/\/ marche\n  };\n  return defaults[mode] || 25;\n}\n\n\/**\n * Calcule et affiche les r\u00e9sultats.\n *\/\nfunction calculateAndDisplay() {\n  \/\/ Lecture et validation des entr\u00e9es\n  const distance = Number(distanceInput.value);\n  if (!isFinite(distance) || distance < 0) {\n    resultsContent.innerText = 'Veuillez entrer une distance valide (nombre positif).';\n    return;\n  }\n\n  const mode = modeSelect.value;\n  const userSpeed = Number(speedInput.value);\n  const speed = deriveSpeedFromMode(mode, userSpeed);\n\n  const freq = Number(freqNumber.value) || 0;\n  const period = freqPeriod.value;\n  const isRoundtrip = roundtripCheckbox.checked;\n  const perTripFare = Number(fareInput.value) || 0;\n  const monthlyPass = Number(monthlyPassInput.value) || Infinity;\n\n  \/\/ Si l'aller-retour est coch\u00e9, chaque \"trajet\" saisi est un trajet simple ; on n'ajoute pas de multiplicateur automatique ici.\n  \/\/ L'utilisateur doit indiquer le nombre de trajets simples (ex : 2 pour aller+retour).\n  \/\/ Pour aider, nous proposons une estimation en nombre de trajets par mois.\n  const monthlyTrips = convertToMonthly(freq, period);\n  const totalMonthlyTrips = monthlyTrips; \/\/ d\u00e9j\u00e0 compt\u00e9 en trajets simples\n\n  \/\/ Calcul du temps aller simple et du temps d'attente approximatif.\n  const hoursOneWay = distance \/ speed;\n  \/\/ Estimation du temps \"complet\" incluant attente : on ajoute un coefficient pour arr\u00eats\/attentes.\n  \/\/ Coefficient selon mode (plus d'arr\u00eats -> plus d'impact)\n  const waitingFactorByMode = {\n    bus: 1.25,\n    express: 1.15,\n    minibus: 1.3,\n    velo: 1.05,\n    marche: 1.0\n  };\n  const waitFactor = waitingFactorByMode[mode] || 1.2;\n  const hoursOneWayWithStops = hoursOneWay * waitFactor;\n\n  \/\/ Co\u00fbts\n  const monthlyCostPayAsYouGo = perTripFare * totalMonthlyTrips;\n  const monthlyCostWithPass = monthlyPass;\n  const economical = monthlyCostWithPass < monthlyCostPayAsYouGo ? 'abonnement' : 'paiement \u00e0 l'unit\u00e9';\n\n  \/\/ R\u00e9sum\u00e9 texte (fran\u00e7ais)\n  const resultLines = [];\n\n  resultLines.push(`Distance : ${distance} km (${mode}).`);\n  resultLines.push(`Vitesse moyenne utilis\u00e9e : ${speed} km\/h (modifiable).`);\n  resultLines.push(`Temps estim\u00e9 aller simple : ${formatDuration(hoursOneWayWithStops)} (inclut arr\u00eats\/attentes).`);\n  resultLines.push(`Fr\u00e9quence saisie : ${freq} ${period} \u2192 \u2248 ${Math.round(totalMonthlyTrips)} trajets simples par mois.`);\n  resultLines.push('');\n  resultLines.push(`Co\u00fbt par trajet (pay-as-you-go) : ${perTripFare.toFixed(2)} \u20ac`);\n  resultLines.push(`Co\u00fbt estim\u00e9 par mois (paiement \u00e0 l'unit\u00e9) : ${monthlyCostPayAsYouGo.toFixed(2)} \u20ac`);\n  resultLines.push(`Co\u00fbt suppos\u00e9 d'un abonnement mensuel : ${isFinite(monthlyCostWithPass) ? monthlyCostWithPass.toFixed(2) + ' \u20ac' : '\u2014'}`);\n  resultLines.push('');\n  resultLines.push(`Recommandation : pour ${Math.round(totalMonthlyTrips)} trajets par mois, la solution la plus \u00e9conomique semble \u00eatre : ${economical}.`);\n\n  \/\/ Conseils suppl\u00e9mentaires selon le r\u00e9sultat\n  if (monthlyCostWithPass < monthlyCostPayAsYouGo) {\n    const saving = (monthlyCostPayAsYouGo - monthlyCostWithPass).toFixed(2);\n    resultLines.push(`\u00c9conomie approximative si abonnement : ${saving} \u20ac \/ mois.`);\n  } else {\n    const extra = (monthlyCostWithPass - monthlyCostPayAsYouGo).toFixed(2);\n    resultLines.push(`L'abonnement co\u00fbterait environ ${extra} \u20ac de plus par mois par rapport au paiement \u00e0 l'unit\u00e9.`);\n  }\n\n  \/\/ Affichage enrichi (HTML minimal pour lisibilit\u00e9, reste en fran\u00e7ais)\n  const html = `\n    <div>\n      <p><strong>${distance} km<\/strong> \u2014 <em>${mode}<\/em><\/p>\n      <p>Temps estim\u00e9 (aller simple) : <strong>${formatDuration(hoursOneWayWithStops)}<\/strong><\/p>\n      <p>Fr\u00e9quence mensuelle estim\u00e9e : <strong>${Math.round(totalMonthlyTrips)} trajets<\/strong><\/p>\n      <hr class=\"my-2\" \/>\n      <p>Co\u00fbt par trajet : <strong>${perTripFare.toFixed(2)} \u20ac<\/strong><\/p>\n      <p>Co\u00fbt mensuel (paiement \u00e0 l'unit\u00e9) : <strong>${monthlyCostPayAsYouGo.toFixed(2)} \u20ac<\/strong><\/p>\n      <p>Abonnement mensuel : <strong>${isFinite(monthlyCostWithPass) ? monthlyCostWithPass.toFixed(2) + ' \u20ac' : '\u2014'}<\/strong><\/p>\n      <p class=\"mt-2\"><strong>Recommandation :<\/strong> ${economical}. ${monthlyCostWithPass < monthlyCostPayAsYouGo ? `\u00c9conomie \u2248 ${ (monthlyCostPayAsYouGo - monthlyCostWithPass).toFixed(2) } \u20ac \/ mois.` : `Diff\u00e9rence \u2248 ${ (monthlyCostWithPass - monthlyCostPayAsYouGo).toFixed(2) } \u20ac \/ mois.`}<\/p>\n      <p class=\"text-xs text-gray-600 mt-2\">Remarque : r\u00e9sultats approximatifs. Ajustez la vitesse et les tarifs pour affiner l'estimation.<\/p>\n    <\/div>\n  `;\n  resultsContent.innerHTML = html;\n\n  \/\/ Pour copie par bouton\n  resultsContent.dataset.text = resultLines.join('n');\n}\n\n\/* --------------- GESTION \u00c9V\u00c9NEMENTS --------------- *\/\ncalculateBtn.addEventListener('click', () => {\n  calculateAndDisplay();\n  calculateBtn.focus();\n});\n\nresetBtn.addEventListener('click', () => {\n  \/\/ Valeurs par d\u00e9faut r\u00e9initialis\u00e9es\n  distanceInput.value = '10';\n  modeSelect.value = 'bus';\n  speedInput.value = '25';\n  freqNumber.value = '2';\n  freqPeriod.value = 'jour';\n  roundtripCheckbox.checked = true;\n  fareInput.value = '2.20';\n  monthlyPassInput.value = '55';\n  resultsContent.innerHTML = 'Aucun calcul effectu\u00e9 pour l'instant.';\n  delete resultsContent.dataset.text;\n  resetBtn.focus();\n});\n\ncopyBtn.addEventListener('click', async () => {\n  \/\/ Copie le texte format\u00e9 si disponible, sinon le HTML brut simplifi\u00e9.\n  const text = resultsContent.dataset.text || resultsContent.innerText || 'Aucun r\u00e9sultat \u00e0 copier';\n  try {\n    await navigator.clipboard.writeText(text);\n    copyBtn.textContent = 'Copi\u00e9 \u2713';\n    setTimeout(() => copyBtn.textContent = 'Copier le r\u00e9sultat', 1800);\n  } catch (err) {\n    \/\/ Fallback si clipboard non disponible\n    alert('Impossible de copier automatiquement. S\u00e9lectionnez et copiez manuellement le r\u00e9sultat.');\n  }\n});\n\n\/* Initial calculate to show sample on load *\/\ncalculateAndDisplay();\n\n\/* --------------- NOTES (API \/ Donn\u00e9es externes) --------------- *\/\n\/*\n Aucune API externe n'est utilis\u00e9e par d\u00e9faut pour garder l'outil 100% gratuit et autonome.\n Si vous souhaitez int\u00e9grer des horaires r\u00e9els ou tarifs officiels depuis un service open-data,\n voici un exemple d'API publique potentielle (exemple g\u00e9n\u00e9rique) :\n\n Example API (exemple fictif d'open-data transport local) :\n URL: https:\/\/api.open-data.example\/transport\/martinique\/stops\n Exemple de r\u00e9ponse JSON:\n {\n   \"stop_id\": \"MZP-001\",\n   \"name\": \"Fort-de-France - Gare\",\n   \"lines\": [\n     {\"line\": \"A\", \"type\": \"TCSP\", \"frequency\": \"15min\"},\n     {\"line\": \"12\", \"type\": \"bus\", \"frequency\": \"30min\"}\n   ]\n }\n\n Remarque: si vous int\u00e9grez une API, assurez-vous qu'elle est publique et gratuite, puis\n incluez l'URL et un exemple de JSON r\u00e9el dans un commentaire conforme \u00e0 la contrainte.\n*\/\n<\/script>\n\n<h2 class=\"wp-block-heading\">Erreurs fr\u00e9quentes et conseils terrain<\/h2>\n\n<p class=\"wp-block-paragraph\">Les perturbations r\u00e9centes (gr\u00e8ves, pannes, diminution de service) montrent que pr\u00e9voir un plan B est utile. Les gr\u00e8ves peuvent toucher le TCSP et les lignes CACEM, entra\u00eenant des annulations soudaines.<\/p>\n\n<ul class=\"wp-block-list\"><li><strong>Erreur<\/strong> : partir sans v\u00e9rifier l&rsquo;\u00e9tat du r\u00e9seau le matin. Solution : consulter les alertes avant de quitter.<\/li><li><strong>Erreur<\/strong> : compter uniquement sur une correspondance serr\u00e9e. Solution : ajouter une marge de s\u00e9curit\u00e9 de 15\u201330 minutes.<\/li><li><strong>Erreur<\/strong> : ignorer les abonnements scolaires. Solution : se renseigner aupr\u00e8s de l&rsquo;\u00e9tablissement ou de la r\u00e9gie pour r\u00e9duire le co\u00fbt.<\/li><\/ul>\n\n<p class=\"wp-block-paragraph\">Quand le service manque, privil\u00e9giez le covoiturage local, les lignes alternatives ou la marche pour les faibles distances.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour suivre l\u2019actualit\u00e9 des perturbations et les communiqu\u00e9s, suivez les m\u00e9dias locaux.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/rci.fm\/martinique\/infos\/Social\/Les-usagers-saccommodent-difficilement-de-la-greve-Martinique-Transport\" rel=\"nofollow noopener\" target=\"_blank\">Reportage sur les mouvements et impacts<\/a><\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.radiomediaantilles.com\/en\/transport-martinique-crise-retards-pannes\/\" rel=\"nofollow noopener\" target=\"_blank\">Analyse des retards et pannes<\/a><\/p>\n\n<p class=\"wp-block-paragraph\">Phrase-cl\u00e9 : toujours v\u00e9rifier l\u2019\u00e9tat du r\u00e9seau avant de partir pour \u00e9viter la surprise.<\/p>\n\n<h2 class=\"wp-block-heading\">Alternatives pour voyageurs et nouveaux arrivants<\/h2>\n\n<p class=\"wp-block-paragraph\">Pour un s\u00e9jour touristique ou un d\u00e9m\u00e9nagement sur l&rsquo;\u00eele, combiner TCSP et bus permet d\u2019\u00e9conomiser. Les visiteurs peuvent aussi s\u2019appuyer sur guides locaux pour des itin\u00e9raires optimis\u00e9s.<\/p>\n\n<p class=\"wp-block-paragraph\">Pour des conseils de voyage plus larges sur la Martinique et la r\u00e9gion cara\u00efbe, consultez des r\u00e9cits et guides pratiques qui donnent des id\u00e9es d\u2019itin\u00e9raires et de mobilit\u00e9 locale.<\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.transports-express-caraibes.fr\/blog\/martinique-caraibes-guide-paradis\/\" rel=\"nofollow\">Guide pratique pour visiter la Martinique<\/a><\/p>\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.transports-express-caraibes.fr\/blog\/transport-martinique\/\" rel=\"nofollow\">Article d\u00e9di\u00e9 aux transports en Martinique<\/a><\/p>\n\n<p class=\"wp-block-paragraph\">Phrase-cl\u00e9 : adaptez votre programme quotidien en fonction des fen\u00eatres de service et des temps de trajet annonc\u00e9s.<\/p>\n\n<p class=\"wp-block-paragraph\"><strong>Synth\u00e8se rapide<\/strong> : le r\u00e9seau martiniquais combine TCSP, bus et navettes. Consultez les horaires officiels avant chaque d\u00e9part, anticipez les perturbations et choisissez un billet adapt\u00e9 \u00e0 votre fr\u00e9quence d&rsquo;utilisation. Pour un trajet pr\u00e9cis, v\u00e9rifiez l&rsquo;itin\u00e9raire en temps r\u00e9el.<\/p>\n\n<script type=\"application\/ld+json\">\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"Comment vu00e9rifier rapidement si une ligne est perturbu00e9e ce matin ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Consultez les pages du2019info trafic et les alertes de Martinique Mobilitu00e9s ou les mu00e9dias locaux pour connau00eetre les lignes impactu00e9es et les arru00eats non desservis.\"}},{\"@type\":\"Question\",\"name\":\"Ou00f9 trouver les horaires et itinu00e9raires officiels ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Les horaires et itinu00e9raires du00e9taillu00e9s sont accessibles sur la plateforme des horaires et sur les fiches du TCSP proposu00e9es par la ru00e9gie des transports.\"}},{\"@type\":\"Question\",\"name\":\"Quel mode choisir pour un trajet rapide entre Almadies et Carru00e8re ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Le TCSP reste lu2019option la plus rapide et fru00e9quente pour ce type de liaison. Pru00e9voyez toutefois une marge en cas de mouvement social.\"}},{\"@type\":\"Question\",\"name\":\"Existe-t-il des tarifs ru00e9duits pour les u00e9tudiants et scolaires ?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Oui : des tarifs et abonnements spu00e9cifiques existent pour les scolaires et u00e9tudiants. Renseignez-vous aupru00e8s de la ru00e9gie ou de votre u00e9tablissement pour les du00e9marches et justificatifs requis.\"}}]}\n<\/script>\n<h3>Comment v\u00e9rifier rapidement si une ligne est perturb\u00e9e ce matin ?<\/h3>\n<p>Consultez les pages d\u2019info trafic et les alertes de Martinique Mobilit\u00e9s ou les m\u00e9dias locaux pour conna\u00eetre les lignes impact\u00e9es et les arr\u00eats non desservis.<\/p>\n<h3>O\u00f9 trouver les horaires et itin\u00e9raires officiels ?<\/h3>\n<p>Les horaires et itin\u00e9raires d\u00e9taill\u00e9s sont accessibles sur la plateforme des horaires et sur les fiches du TCSP propos\u00e9es par la r\u00e9gie des transports.<\/p>\n<h3>Quel mode choisir pour un trajet rapide entre Almadies et Carr\u00e8re ?<\/h3>\n<p>Le TCSP reste l\u2019option la plus rapide et fr\u00e9quente pour ce type de liaison. Pr\u00e9voyez toutefois une marge en cas de mouvement social.<\/p>\n<h3>Existe-t-il des tarifs r\u00e9duits pour les \u00e9tudiants et scolaires ?<\/h3>\n<p>Oui : des tarifs et abonnements sp\u00e9cifiques existent pour les scolaires et \u00e9tudiants. Renseignez-vous aupr\u00e8s de la r\u00e9gie ou de votre \u00e9tablissement pour les d\u00e9marches et justificatifs requis.<\/p>\n\n","protected":false},"excerpt":{"rendered":"<p>En bref : Comment se d\u00e9placer sans voiture sur l&rsquo;\u00eele et \u00e0 quoi s&rsquo;attendre aujourd&rsquo;hui ? La Martinique combine un r\u00e9seau de bus classiques, des navettes et un transport en site propre (TCSP) qui structure les d\u00e9placements autour de Fort-de-France. Malgr\u00e9 des am\u00e9liorations techniques et des projets d&rsquo;extension du TCSP, les usagers subissent encore des &#8230; <a title=\"Comment fonctionne le transport en commun en Martinique aujourd&rsquo;hui\" class=\"read-more\" href=\"https:\/\/www.transports-express-caraibes.fr\/blog\/transport-commun-martinique\/\" aria-label=\"En savoir plus sur Comment fonctionne le transport en commun en Martinique aujourd&rsquo;hui\">Lire plus<\/a><\/p>\n","protected":false},"author":3,"featured_media":23583,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[82],"tags":[],"class_list":["post-23584","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-transport"],"views":27,"_links":{"self":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts\/23584","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=23584"}],"version-history":[{"count":0,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/posts\/23584\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/media\/23583"}],"wp:attachment":[{"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/media?parent=23584"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/categories?post=23584"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.transports-express-caraibes.fr\/blog\/wp-json\/wp\/v2\/tags?post=23584"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}