{"id":5024,"date":"2025-11-07T00:47:49","date_gmt":"2025-11-06T23:47:49","guid":{"rendered":"https:\/\/www.service-public.pf\/dicp\/?page_id=5024"},"modified":"2026-02-10T04:02:05","modified_gmt":"2026-02-10T03:02:05","slug":"simulateur-repartition-impots","status":"publish","type":"page","link":"https:\/\/www.service-public.pf\/dicp\/simulateur-repartition-impots\/","title":{"rendered":"Simulateur de r\u00e9partition des imp\u00f4ts"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1216.8px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><!-- Simulateur \"\u00c0 quoi servent mes imp\u00f4ts ?\" -->\n<div style=\"text-align: center; max-width: 800px; margin: 0 auto; padding: 20px;\">\n    <h1>\u00c0 quoi servent mes imp\u00f4ts ?<\/h1>\n    <p>Explorez la r\u00e9partition de votre contribution et d\u00e9couvrez comment vos imp\u00f4ts soutiennent les services essentiels : h\u00f4pitaux, \u00e9coles, routes, aides sociales\u2026<\/p>\n  \n    <label for=\"montant\">Indiquez le montant de votre imp\u00f4t (en XPF) :<\/label><br>\n    <input type=\"number\" id=\"montant\" placeholder=\"Ex: 10000\" min=\"0\" step=\"100\" value=\"10000\" style=\"padding: 10px; font-size: 16px; width: 200px; margin: 10px;\">\n    <span> XPF<\/span><br>\n    <button onclick=\"calculerRepartition()\" style=\"padding: 10px 20px; margin: 10px; background: #007cba; color: white; border: none; cursor: pointer; border-radius: 5px;\">Voir la r\u00e9partition<\/button>\n  \n    <div style=\"display: flex; justify-content: center; align-items: flex-start; flex-wrap: wrap; gap: 20px; margin: 20px auto;\">\n        <div style=\"flex: 1; min-width: 300px;\">\n            <canvas id=\"pieChart\" width=\"400\" height=\"400\" style=\"max-width: 100%;\"><\/canvas>\n        <\/div>\n    <\/div>\n  \n    <div id=\"legende\" style=\"display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 10px; margin-top: 20px;\">\n        <!-- Remplie dynamiquement -->\n    <\/div>\n  \n    <p style=\"font-style: italic; margin-top: 30px;\">Le civisme fiscal, notre int\u00e9r\u00eat \u00e0 tous. *Donn\u00e9es issues du compte administratif 2024.<\/p>\n<\/div>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n<script>\n    \/\/ Donn\u00e9es mises \u00e0 jour avec les pourcentages pr\u00e9cis du nouveau fichier Excel\n    const missions = [\n        { libelle: 'Environnement',                   pourcentage: 0.006087253250517137, icon: '\ud83c\udf3f', sous: 'Gestion de la biodiversit\u00e9 et des ressources naturelles' },\n        { libelle: 'Culture et patrimoine',           pourcentage: 0.007307217081645143, icon: '\ud83d\udc83\ud83c\udffd', sous: 'Culture et art contemporain' },\n        { libelle: 'Personnel',                       pourcentage: 0.010715431256215558, icon: '\ud83d\udc65', sous: 'Ressources humaines' },\n        { libelle: 'Tourisme',                        pourcentage: 0.014684791234019032, icon: '\u2708\ufe0f', sous: '\u00c9quipements et am\u00e9nagements touristiques' },\n        { libelle: 'Moyens internes',                 pourcentage: 0.021511039485982993, icon: '\u2699\ufe0f', sous: 'Finances, informatique, b\u00e2timents' },\n        { libelle: 'Pouvoirs publics',                pourcentage: 0.03131899135994957,  icon: '\ud83c\udfdb\ufe0f', sous: 'Gouvernement et institutions' },\n        { libelle: 'D\u00e9veloppement des ressources propres', pourcentage: 0.03477050404249863, icon: '\ud83c\udf4d', sous: 'Agriculture, p\u00eache, perliculture' },\n        { libelle: 'Enseignement',                    pourcentage: 0.040506519733720214, icon: '\ud83c\udf93', sous: 'Enseignement primaire, secondaire, sup\u00e9rieur' },\n        { libelle: 'Economie g\u00e9n\u00e9rale',               pourcentage: 0.04237523624996211,  icon: '\ud83d\udcc8', sous: 'R\u00e9gulation et d\u00e9veloppement des entreprises' },\n        { libelle: 'Gestion fiscale',                 pourcentage: 0.051595386081878275, icon: '\ud83e\uddee', sous: 'Fiscalit\u00e9 indirecte et directe' },\n        { libelle: 'Urbanisme, habitat et foncier',   pourcentage: 0.05354600254290303,  icon: '\ud83c\udfd7\ufe0f', sous: 'Urbanisme et affaires fonci\u00e8res' },\n        { libelle: 'Travail et emploi',               pourcentage: 0.06015495625466659,  icon: '\ud83d\udcbc', sous: 'Formation professionnelle et insertion' },\n        { libelle: 'Transports',                      pourcentage: 0.06340570425795297,  icon: '\ud83d\ude9b', sous: 'Transports terrestres, maritimes, a\u00e9riens' },\n        { libelle: 'Sant\u00e9',                           pourcentage: 0.08336699178142226,  icon: '\ud83c\udfe5', sous: 'Offre de sant\u00e9 et pr\u00e9vention' },\n        { libelle: 'R\u00e9seaux et \u00e9quipements structurants', pourcentage: 0.08795904580302566, icon: '\ud83d\udee3\ufe0f', sous: 'R\u00e9seaux routiers, ports, \u00e9nergie' },\n        { libelle: 'Gestion financi\u00e8re',              pourcentage: 0.08831334223659813,  icon: '\ud83d\udcb0', sous: 'Dette et op\u00e9rations financi\u00e8res' },\n        { libelle: 'Partenariat avec les collectivit\u00e9s', pourcentage: 0.12158999470984089, icon: '\ud83e\udd1d', sous: 'Partenariat avec communes et archipels' },\n        { libelle: 'Vie sociale',                     pourcentage: 0.18079159263720182,  icon: '\ud83d\udc6b', sous: 'Protection de l\u2019enfance, solidarit\u00e9, jeunesse, sports' }\n    ];\n\n    let chart;\n\n    function calculerRepartition() {\n        let montant = parseFloat(document.getElementById('montant').value) || 10000;\n        montant = Math.round(montant); \/\/ On travaille avec un entier\n\n        \/\/ Calcul des parts exactes\n        const parts = missions.map(m => montant * m.pourcentage);\n\n        \/\/ Arrondi \u00e0 l'entier inf\u00e9rieur\n        let arrondis = parts.map(p => Math.floor(p));\n\n        \/\/ Somme des arrondis inf\u00e9rieurs\n        let sommeArrondis = arrondis.reduce((a, b) => a + b, 0);\n\n        \/\/ Diff\u00e9rence \u00e0 distribuer (toujours positive ou nulle)\n        let difference = montant - sommeArrondis;\n\n        if (difference > 0) {\n            \/\/ Calcul des restes fractionnaires\n            const restes = parts.map((p, i) => ({ reste: p - arrondis[i], index: i }));\n            \/\/ Tri par reste d\u00e9croissant\n            restes.sort((a, b) => b.reste - a.reste);\n            \/\/ Distribution des unit\u00e9s suppl\u00e9mentaires aux plus grands restes\n            for (let i = 0; i < difference; i++) {\n                arrondis[restes[i].index]++;\n            }\n        }\n\n        const data = arrondis;\n\n        const couleurs = [\n            '#FF6384', '#36A2EB', '#FFCE56', '#4BC0C0', '#9966FF', '#FF9F40',\n            '#C9CBCF', '#E7E9ED', '#F7464A', '#00A0B0', '#C4B5FD', '#7BC225',\n            '#FDBCB4', '#E377C2', '#7F7F7F', '#17BECF', '#BCBD22', '#2E91E5'\n        ];\n\n        \/\/ Tri d\u00e9croissant pour l'affichage (Vie sociale en t\u00eate)\n        const indicesTries = data.map((val, idx) => idx).sort((a, b) => data[b] - data[a]);\n        const labels = indicesTries.map(i => missions[i].libelle);\n        const dataTriee = indicesTries.map(i => data[i]);\n        const couleursTriees = indicesTries.map(i => couleurs[i]);\n        const missionsTriees = indicesTries.map(i => missions[i]);\n\n        \/\/ Mise \u00e0 jour du graphique\n        const ctx = document.getElementById('pieChart').getContext('2d');\n        if (chart) chart.destroy();\n        chart = new Chart(ctx, {\n            type: 'pie',\n            data: { labels: labels, datasets: [{ data: dataTriee, backgroundColor: couleursTriees }] },\n            options: {\n                responsive: true,\n                maintainAspectRatio: false,\n                plugins: {\n                    legend: {\n                        position: 'right',\n                        labels: {\n                            padding: 20,\n                            usePointStyle: true,\n                            font: { size: 12 }\n                        }\n                    },\n                    tooltip: {\n                        callbacks: {\n                            label: function(context) {\n                                const mission = missionsTriees[context.dataIndex];\n                                return `${mission.libelle}: ${context.parsed.toLocaleString('fr-FR')} XPF (${(mission.pourcentage * 100).toFixed(2)}%) - ${mission.sous}`;\n                            }\n                        }\n                    }\n                }\n            }\n        });\n\n        \/\/ Mise \u00e0 jour de la l\u00e9gende d\u00e9taill\u00e9e en bas\n        let htmlLegende = '';\n        missionsTriees.forEach((m, i) => {\n            const montantAffiche = dataTriee[i];\n            htmlLegende += `\n                <div style=\"display: flex; align-items: center; padding: 10px; border: 1px solid #ddd; border-radius: 5px; background: #f9f9f9;\">\n                    <span style=\"font-size: 24px; margin-right: 10px; color: ${couleursTriees[i]};\">${m.icon}<\/span>\n                    <div style=\"text-align: left;\">\n                        <strong>${m.libelle}<\/strong><br>\n                        <small>${montantAffiche.toLocaleString('fr-FR')} XPF (${(m.pourcentage * 100).toFixed(2)}%)<\/small>\n                    <\/div>\n                <\/div>\n            `;\n        });\n        document.getElementById('legende').innerHTML = htmlLegende;\n    }\n\n    \/\/ Calcul au chargement de la page\n    calculerRepartition();\n<\/script><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":145,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_seopress_titles_title":"","_seopress_titles_desc":"","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"both","_seopress_redirections_param":"","_seopress_redirections_type":301,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"class_list":["post-5024","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.service-public.pf\/dicp\/wp-json\/wp\/v2\/pages\/5024","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.service-public.pf\/dicp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.service-public.pf\/dicp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.service-public.pf\/dicp\/wp-json\/wp\/v2\/users\/145"}],"replies":[{"embeddable":true,"href":"https:\/\/www.service-public.pf\/dicp\/wp-json\/wp\/v2\/comments?post=5024"}],"version-history":[{"count":23,"href":"https:\/\/www.service-public.pf\/dicp\/wp-json\/wp\/v2\/pages\/5024\/revisions"}],"predecessor-version":[{"id":5226,"href":"https:\/\/www.service-public.pf\/dicp\/wp-json\/wp\/v2\/pages\/5024\/revisions\/5226"}],"wp:attachment":[{"href":"https:\/\/www.service-public.pf\/dicp\/wp-json\/wp\/v2\/media?parent=5024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}