{"id":603,"date":"2025-10-19T19:14:13","date_gmt":"2025-10-19T17:14:13","guid":{"rendered":"https:\/\/huguesg.fr\/site\/?p=603"},"modified":"2025-10-19T19:55:40","modified_gmt":"2025-10-19T17:55:40","slug":"le-plf-2026-pour-les-transports","status":"publish","type":"post","link":"https:\/\/huguesg.fr\/site\/index.php\/2025\/10\/19\/le-plf-2026-pour-les-transports\/","title":{"rendered":"Le PLF 2026 pour les transports"},"content":{"rendered":"\n<p>Suite \u00e0 la publication des documents pr\u00e9paratoires aux discussions budg\u00e9taires 2026, la page <a href=\"https:\/\/huguesg.fr\/site\/index.php\/budget-national-transports\/\" data-type=\"link\" data-id=\"https:\/\/huguesg.fr\/site\/index.php\/budget-national-transports\/\">Budget National des Transports<\/a> a \u00e9t\u00e9 mise \u00e0 jour avec les Pr\u00e9visions 2026.<\/p>\n\n\n\n<p>Elle permet d&#8217;observer les principales variations suivantes :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Un budget pr\u00e9visionnel en baisse de 2.6% (en 2026 par rapport au pr\u00e9visionnel 2025, lui-m\u00eame en tr\u00e8s forte baisse par rapport au r\u00e9alis\u00e9 2024 de 10.1%).<\/li>\n\n\n\n<li>Cette baisse est principalement due \u00e0 l&#8217;arr\u00eat des aides \u00e0 l&#8217;acquisition de v\u00e9hicules propres.<\/li>\n\n\n\n<li>Le budget pr\u00e9visionnel de l&#8217;AFITF ressort quand \u00e0 lui quasiment stable (+1%), avec une remont\u00e9e des montants de TICPE affect\u00e9e \u00e0 l&#8217;agence, mais compens\u00e9e par une baisse des ressources pr\u00e9visionnelles issues de la taxe sur les exploitants d&#8217;infrastructures de transports, du produit des amendes radars, et de la dotation issue du plan de relance.<\/li>\n\n\n\n<li>A noter \u00e9galement une augmentation de 137M\u20ac du financement par le groupe SNCF du fonds de concours d\u00e9di\u00e9 \u00e0 la r\u00e9g\u00e9n\u00e9ration et la modernisation du r\u00e9seau ferroviaire national.<\/li>\n<\/ul>\n\n\n\n<p>Le graphique ci-dessous reprend les principales \u00e9volutions entre le pr\u00e9visionnel 2025, et le pr\u00e9visionnel 2026.<\/p>\n\n\n\n<div class=\"custom-chart-container\">\n  <div id=\"waterfall_chart\" style=\"width: 100%; height: 800px;\"><\/div>\n<\/div>\n\n<script type=\"text\/javascript\" src=\"https:\/\/www.gstatic.com\/charts\/loader.js\"><\/script>\n<script type=\"text\/javascript\">\n  google.charts.load('current', {packages: ['corechart']});\n  google.charts.setOnLoadCallback(drawChart);\n\n  function drawChart() {\n    fetch('https:\/\/huguesg.fr\/docs\/bridge_2025p_2026p.csv')\n      .then(response => response.arrayBuffer())\n      \/\/ \u2b07\ufe0f D\u00e9codage compatible avec ton CSV\n      .then(buffer => new TextDecoder('windows-1252').decode(buffer))\n      .then(text => {\n        \/\/ Parse robuste (s\u00e9parateur ';', trim, suppression lignes vides)\n        const rawRows = text.split(\/\\r?\\n\/).map(r => r.split(';').map(c => c.trim()));\n        if (!rawRows.length) throw new Error('CSV vide');\n\n        const headers = rawRows[0];\n\n        \/\/ Filtrer les lignes invalides (label ou valeur manquants)\n        const dataRows = rawRows\n          .slice(1)\n          .filter(r => r.length >= 2 && r[0] && r[1]) \/\/ label + valeur pr\u00e9sents\n          .map(r => [r[0], r[1], (r[2] || '')]);      \/\/ forcer 3 colonnes max\n\n        const dataTable = new google.visualization.DataTable();\n        dataTable.addColumn('string', 'Cat\u00e9gorie');\n        dataTable.addColumn('number', 'Base');                         \/\/ s\u00e9rie cach\u00e9e\n        dataTable.addColumn({type: 'string', role: 'style'});          \/\/ style Base\n        dataTable.addColumn('number', 'Delta');                        \/\/ s\u00e9rie visible\n        dataTable.addColumn({type: 'string', role: 'style'});          \/\/ style Delta\n        dataTable.addColumn({type: 'string', role: 'annotation'});     \/\/ annotation Delta\n        dataTable.addColumn({type: 'string', role: 'tooltip', p: {html: true}}); \/\/ tooltip\n\n        let cumulative = 0;\n\n        dataRows.forEach(row => {\n          const label = row[0];\n          const raw = row[1].replace(',', '.');\n          const value = Number.isFinite(+raw) ? parseFloat(raw) : NaN;\n          const isTotal = (row[2] || '').toLowerCase() === 'x';\n\n          \/\/ Ignore toute ligne non num\u00e9rique pour \u00e9viter les \u201cbarres vides\u201d\n          if (!Number.isFinite(value)) return;\n\n          let deltaStyle, tooltip, annotation = null;\n\n          if (isTotal) {\n            \/\/ Barre de total (noire)\n            tooltip = `<div><strong>${label}<\/strong><br>Total: ${value.toFixed(1)} M\u20ac<\/div>`;\n            dataTable.addRow([\n              label,\n              0,                       \/\/ Base invisible\n              'opacity: 0',\n              value,                   \/\/ Delta = total\n              'color: black; stroke-width: 2',\n              `Total: ${value.toFixed(1)}`,\n              tooltip\n            ]);\n            cumulative = value;        \/\/ on fixe le cumul au total\n          } else {\n            \/\/ Barre interm\u00e9diaire (delta +\/\u2212)\n            deltaStyle = value >= 0 ? 'color: green' : 'color: red';\n            const formattedValue = `${value >= 0 ? '' : '-'}${Math.abs(value).toFixed(1)} M\u20ac`;\n            tooltip = `<div><strong>${label}<\/strong><br>Delta: ${formattedValue}<\/div>`;\n\n            if (value >= 0) {\n              dataTable.addRow([label, cumulative, 'opacity: 0', value, deltaStyle, null, tooltip]);\n            } else {\n              dataTable.addRow([label, cumulative + value, 'opacity: 0', -value, deltaStyle, null, tooltip]);\n            }\n            cumulative += value;\n          }\n        });\n\n        const options = {\n          title: '\u00c9volution des cr\u00e9dits transport pr\u00e9visionnels entre 2025 et 2026',\n          legend: { position: 'none' },\n          hAxis: { textStyle: { fontSize: 8 } },\n          vAxis: { minValue: 0 },\n          isStacked: true,\n          tooltip: { isHtml: true },\n          annotations: { alwaysOutside: true, textStyle: { fontSize: 10, color: '#333' } },\n        };\n\n        const chart = new google.visualization.ColumnChart(document.getElementById('waterfall_chart'));\n        chart.draw(dataTable, options);\n      })\n      .catch(error => console.error('Erreur lors du chargement des donn\u00e9es CSV:', error));\n  }\n<\/script>\n\n\n\n<p>Chacune des barres peut \u00eatre s\u00e9lectionn\u00e9e pour afficher la nature et le montant associ\u00e9s.<\/p>\n\n\n\n<p>Le p\u00e9rim\u00e8tre du budget pr\u00e9visionnel 2026 est celui repris dans la page <a href=\"https:\/\/huguesg.fr\/site\/index.php\/budget-national-transports\/\" data-type=\"page\" data-id=\"111\">Budget National des Transports<\/a>, et ne reprend donc que les montants financ\u00e9s par l&#8217;Etat.<\/p>\n\n\n\n<p>A noter que le budget de l&#8217;AFITF est estim\u00e9 sur la base des documents diffus\u00e9s par le gouvernement mais reste soumis \u00e0 un vote du conseil d&#8217;administration de l&#8217;agence, qui d\u00e9taillera de mani\u00e8re plus fine les diff\u00e9rents financements. Il ne sont donc pas encore repris dans la page <a href=\"https:\/\/huguesg.fr\/site\/index.php\/budget-national-transports\/\" data-type=\"page\" data-id=\"111\">Budget National des Transports<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Suite \u00e0 la publication des documents pr\u00e9paratoires aux discussions budg\u00e9taires 2026, la page Budget National des Transports a \u00e9t\u00e9 mise \u00e0 jour avec les Pr\u00e9visions 2026. Elle permet d&#8217;observer les principales variations suivantes : Le graphique ci-dessous reprend les principales \u00e9volutions entre le pr\u00e9visionnel 2025, et le pr\u00e9visionnel 2026. Chacune des barres peut \u00eatre s\u00e9lectionn\u00e9e [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[1],"tags":[],"class_list":["post-603","post","type-post","status-publish","format-standard","hentry","category-non-classe","entry"],"_links":{"self":[{"href":"https:\/\/huguesg.fr\/site\/index.php\/wp-json\/wp\/v2\/posts\/603","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/huguesg.fr\/site\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/huguesg.fr\/site\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/huguesg.fr\/site\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/huguesg.fr\/site\/index.php\/wp-json\/wp\/v2\/comments?post=603"}],"version-history":[{"count":4,"href":"https:\/\/huguesg.fr\/site\/index.php\/wp-json\/wp\/v2\/posts\/603\/revisions"}],"predecessor-version":[{"id":616,"href":"https:\/\/huguesg.fr\/site\/index.php\/wp-json\/wp\/v2\/posts\/603\/revisions\/616"}],"wp:attachment":[{"href":"https:\/\/huguesg.fr\/site\/index.php\/wp-json\/wp\/v2\/media?parent=603"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/huguesg.fr\/site\/index.php\/wp-json\/wp\/v2\/categories?post=603"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/huguesg.fr\/site\/index.php\/wp-json\/wp\/v2\/tags?post=603"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}