{"id":575,"date":"2025-04-11T14:02:52","date_gmt":"2025-04-11T15:02:52","guid":{"rendered":"https:\/\/mon-coach-informatique.com\/?page_id=575"},"modified":"2026-04-17T16:00:20","modified_gmt":"2026-04-17T17:00:20","slug":"tarifs","status":"publish","type":"page","link":"https:\/\/mon-coach-informatique.com\/tarifs","title":{"rendered":"Tarifs"},"content":{"rendered":"\n<div class=\"mci-expert-container\">\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/jspdf\/2.5.1\/jspdf.umd.min.js\"><\/script>\n    <style>\n        :root {\n            --primary: #E8461F;\n            --secondary: #c53b1a;\n            --text-dark: #333333;\n            --text-grey: #55595B;\n            --bg-light: #f8fafc;\n        }\n\n        .mci-expert-container {\n            width: 100%;\n            font-family: 'Segoe UI', system-ui, -apple-system, sans-serif;\n            color: var(--text-dark);\n            padding: 10px 0;\n            box-sizing: border-box;\n        }\n\n        .mci-expert-container * { box-sizing: border-box; }\n\n        .mci-expert-container header { text-align: center; margin-bottom: 30px; }\n        .mci-expert-container h2 { color: var(--text-grey); font-size: 1.8rem; margin: 0; }\n        .mci-expert-container p.subtitle { color: var(--primary); font-weight: bold; margin-top: 5px; text-transform: uppercase; font-size: 0.9rem;}\n\n        \/* Stepper *\/\n        .mci-expert-container .steps { display: flex; justify-content: space-between; margin-bottom: 30px; position: relative; }\n        .mci-expert-container .step { background: #e2e8f0; width: 35px; height: 35px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: bold; color: #64748b; z-index: 2; transition: 0.3s; }\n        .mci-expert-container .step.active { background: var(--primary); color: white; box-shadow: 0 0 10px rgba(232, 70, 31, 0.3); }\n        .mci-expert-container .steps::after { content: \"\"; position: absolute; top: 17px; left: 0; right: 0; height: 2px; background: #e2e8f0; z-index: 1; }\n\n        .mci-expert-container .section-card { background: var(--bg-light); padding: 25px; border-radius: 12px; margin-bottom: 20px; border: 1px solid #f1f5f9; text-align: center; }\n        .mci-expert-container label { display: block; font-weight: 600; font-size: 0.9rem; margin-bottom: 12px; color: var(--text-grey); text-align: center; }\n\n        \/* S\u00e9lecteur de profil en tuiles *\/\n        .profile-selector { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 20px; }\n        .profile-option { \n            background: white; border: 2px solid #cbd5e0; padding: 15px; border-radius: 10px; \n            text-align: center; cursor: pointer; transition: 0.2s; font-weight: 600; color: var(--text-grey);\n            display: flex; flex-direction: column; align-items: center; gap: 5px;\n        }\n        .profile-option.active { border-color: var(--primary); background: #fff5f2; color: var(--primary); }\n        .profile-option span { font-size: 0.75rem; font-weight: normal; opacity: 0.8; }\n\n        \/* Inputs et Select centr\u00e9s *\/\n        .mci-expert-container input, .mci-expert-container select { \n            width: 100%; padding: 12px; border: 1px solid #cbd5e0; border-radius: 8px; font-size: 1rem; transition: 0.2s; background: white;\n            text-align: center; text-align-last: center; \/* Pour centrer le texte dans le select *\/\n        }\n        .mci-expert-container input:focus, .mci-expert-container select:focus { border-color: var(--primary); outline: none; }\n\n        .mci-expert-container .row { display: flex; gap: 15px; margin-bottom: 15px; }\n        .mci-expert-container .flex-1 { flex: 1; }\n\n        .mci-expert-container .btn-geo { \n            background: white; border: 1px dashed var(--primary); color: var(--primary); \n            padding: 10px; border-radius: 8px; cursor: pointer; font-weight: 600; \n            display: flex; align-items: center; justify-content: center; gap: 8px; transition: 0.2s; margin-top: 10px; width: 100%;\n        }\n\n        .mci-expert-container .btn-calc { \n            width: 100%; background: var(--primary); color: white; padding: 16px; \n            border: none; border-radius: 10px; font-size: 1.1rem; font-weight: bold; \n            cursor: pointer; transition: 0.3s; margin-top: 10px;\n        }\n        .mci-expert-container .btn-calc:hover { background: var(--secondary); transform: translateY(-2px); }\n\n        .mci-expert-container .btn-call { \n            width: 100%; background: var(--text-grey); color: white; padding: 14px; \n            border: none; border-radius: 10px; font-size: 1rem; font-weight: bold; \n            cursor: pointer; transition: 0.3s; margin-top: 12px; text-decoration: none;\n            display: flex; align-items: center; justify-content: center; gap: 10px;\n        }\n        .mci-expert-container .btn-call:hover { background: var(--text-dark); }\n\n        \/* R\u00e9sultats *\/\n        #result-area { display: none; margin-top: 30px; animation: slideUp 0.5s ease-out; }\n        @keyframes slideUp { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } }\n\n        .mci-expert-container .result-pill { background: white; border: 1px solid #eee; padding: 25px; border-radius: 12px; box-shadow: 0 4px 6px -1px rgba(0,0,0,0.05); }\n        .mci-expert-container .price-line { display: flex; justify-content: space-between; margin-bottom: 10px; color: var(--text-grey); font-size: 0.95rem; }\n        .mci-expert-container .total-line { font-size: 1.4rem; font-weight: 800; color: var(--text-dark); margin-top: 15px; border-top: 2px solid #eee; padding-top: 15px; }\n\n        \/* Bloc Reste \u00e0 charge centr\u00e9 *\/\n        .mci-expert-container .deduction-alert { \n            background: #fff5f2; border: 1px solid #ffe8df; color: var(--primary); \n            padding: 15px; border-radius: 8px; margin-top: 15px; \n            display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 5px; \n        }\n\n        .mci-expert-container .action-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-top: 20px; }\n        .mci-expert-container .btn-action { padding: 14px; border-radius: 8px; font-weight: 600; cursor: pointer; text-align: center; font-size: 0.95rem; border: none; transition: 0.3s; }\n        .mci-expert-container .btn-pdf { background: white; border: 1px solid #cbd5e0; color: var(--text-grey); }\n        .mci-expert-container .btn-rdv { background: var(--text-grey); color: white; }\n\n        .mci-expert-container .disclaimer { font-size: 0.75rem; color: #94a3b8; text-align: center; margin-top: 30px; line-height: 1.5; }\n\n        @media (max-width: 600px) {\n            .mci-expert-container .row { flex-direction: column; gap: 10px; }\n            .mci-expert-container .action-btns { grid-template-columns: 1fr; }\n        }\n    <\/style>\n\n    <header>\n        <h2>Estimez votre Prestation<\/h2>\n        <p class=\"subtitle\">Saint-Guinoux &#038; alentours (30km)<\/p>\n    <\/header>\n\n    <div class=\"steps\">\n        <div class=\"step active\">1<\/div>\n        <div class=\"step\" id=\"step-2\">2<\/div>\n        <div class=\"step\" id=\"step-3\">3<\/div>\n    <\/div>\n\n    <div class=\"section-card\">\n        <label>Vous \u00eates :<\/label>\n        <div class=\"profile-selector\">\n            <div class=\"profile-option active\" id=\"prof-particulier\" onclick=\"setProfile('particulier')\">\n                &#x1f3e0; Particulier\n                <span>-50% Cr\u00e9dit d&rsquo;imp\u00f4t<\/span>\n            <\/div>\n            <div class=\"profile-option\" id=\"prof-professionnel\" onclick=\"setProfile('professionnel')\">\n                &#x1f4bc; Professionnel\n                <span>Tarifs HT \/ TVA 20%<\/span>\n            <\/div>\n        <\/div>\n\n        <div class=\"row\">\n            <div class=\"flex-1\">\n                <label>Votre commune :<\/label>\n                <select id=\"commune\" onchange=\"saveData()\">\n                    <option value=\"\" data-zone=\"0\">&#8212; Choisir &#8212;<\/option>\n                    <optgroup label=\"Zone 1 (0\u201310 km | 100\u20ac HT)\">\n                        <option value=\"La Gouesni\u00e8re\" data-zone=\"1\">La Gouesni\u00e8re<\/option>\n                        <option value=\"Lillemer\" data-zone=\"1\">Lillemer<\/option>\n                        <option value=\"Miniac-Morvan\" data-zone=\"1\">Miniac-Morvan<\/option>\n                        <option value=\"Plerguer\" data-zone=\"1\">Plerguer<\/option>\n                        <option value=\"Saint-Guinoux\" data-zone=\"1\">Saint-Guinoux<\/option>\n                        <option value=\"Saint-Jouan-des-Gu\u00e9rets\" data-zone=\"1\">Saint-Jouan-des-Gu\u00e9rets<\/option>\n                        <option value=\"Saint-M\u00e9loir-des-Ondes\" data-zone=\"1\">Saint-M\u00e9loir-des-Ondes<\/option>\n                        <option value=\"Saint-P\u00e8re-Marc-en-Poulet\" data-zone=\"1\">Saint-P\u00e8re-Marc-en-Poulet<\/option>\n                        <option value=\"Saint-Suliac\" data-zone=\"1\">Saint-Suliac<\/option>\n                    <\/optgroup>\n                    <optgroup label=\"Zone 2 (10\u201320 km | 110\u20ac HT)\">\n                        <option value=\"Cancale\" data-zone=\"2\">Cancale<\/option>\n                        <option value=\"Ch\u00e2teauneuf-d'Ille-et-Vilaine\" data-zone=\"2\">Ch\u00e2teauneuf-d&rsquo;Ille-et-Vilaine<\/option>\n                        <option value=\"Dinard\" data-zone=\"2\">Dinard<\/option>\n                        <option value=\"Hirel\" data-zone=\"2\">Hirel<\/option>\n                        <option value=\"La Fresnais\" data-zone=\"2\">La Fresnais<\/option>\n                        <option value=\"Le Vivier-sur-Mer\" data-zone=\"2\">Le Vivier-sur-Mer<\/option>\n                        <option value=\"Pleurtuit\" data-zone=\"2\">Pleurtuit<\/option>\n                        <option value=\"Saint-Beno\u00eet-des-Ondes\" data-zone=\"2\">Saint-Beno\u00eet-des-Ondes<\/option>\n                        <option value=\"Saint-Coulomb\" data-zone=\"2\">Saint-Coulomb<\/option>\n                        <option value=\"Saint-Malo\" data-zone=\"2\">Saint-Malo<\/option>\n                    <\/optgroup>\n                    <optgroup label=\"Zone 3 (20\u201330 km | 120\u20ac HT)\">\n                        <option value=\"Saint-Jacut-de-la-Mer\" data-zone=\"3\">Saint-Jacut-de-la-Mer<\/option>\n                        <option value=\"Cherrueix\" data-zone=\"3\">Cherrueix<\/option>\n                        <option value=\"Combourg\" data-zone=\"3\">Combourg<\/option>\n                        <option value=\"Dol-de-Bretagne\" data-zone=\"3\">Dol-de-Bretagne<\/option>\n                        <option value=\"Dinan\" data-zone=\"3\">Dinan<\/option>\n                        <option value=\"Lancieux\" data-zone=\"3\">Lancieux<\/option>\n                        <option value=\"Pleudihen-sur-Rance\" data-zone=\"3\">Pleudihen-sur-Rance<\/option>\n                        <option value=\"Ploubalay\" data-zone=\"3\">Ploubalay<\/option>\n                        <option value=\"Saint-Broladre\" data-zone=\"3\">Saint-Broladre<\/option>\n                        <option value=\"Saint-Cast-le-Guildo\" data-zone=\"3\">Saint-Cast-le-Guildo<\/option>\n                    <\/optgroup>\n                <\/select>\n                <button class=\"btn-geo\" onclick=\"locateMe()\">&#x1f4cd; Me localiser (automatique)<\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"section-card\">\n        <div class=\"row\">\n            <div class=\"flex-1\">\n                <label>Arriv\u00e9e pr\u00e9vue :<\/label>\n                <input type=\"time\" id=\"h_in\" onchange=\"saveData()\"\/>\n            <\/div>\n            <div class=\"flex-1\">\n                <label>D\u00e9part pr\u00e9vu :<\/label>\n                <input type=\"time\" id=\"h_out\" onchange=\"saveData()\"\/>\n            <\/div>\n        <\/div>\n        <label>Mat\u00e9riel \/ Fournitures estim\u00e9 (Optionnel) :<\/label>\n        <input type=\"number\" id=\"material\" placeholder=\"0.00 \u20ac HT\" onchange=\"saveData()\"\/>\n    <\/div>\n\n    <button class=\"btn-calc\" onclick=\"runSimulation()\">&#x26a1; Calculer mon estimation<\/button>\n    <a href=\"tel:0663153535\" class=\"btn-call\">&#x1f4de; Appeler maintenant (06 63 15 35 35)<\/a>\n\n    <div id=\"result-area\">\n        <div class=\"result-pill\">\n            <div class=\"price-line\"><span>Main d&rsquo;\u0153uvre<\/span> <span id=\"out_mo\">0 \u20ac<\/span><\/div>\n            <div class=\"price-line\"><span>Mat\u00e9riel &#038; Fournitures<\/span> <span id=\"out_mat\">0 \u20ac<\/span><\/div>\n            <div class=\"price-line\"><span>TVA (20%)<\/span> <span id=\"out_tva\">0 \u20ac<\/span><\/div>\n            <div class=\"total-line price-line\"><span>TOTAL TTC<\/span> <span id=\"out_ttc\">0 \u20ac<\/span><\/div>\n            \n            <div id=\"tax-box\" class=\"deduction-alert\">\n                <span>&#x1f381;<\/span>\n                <div>\n                    <strong>Reste \u00e0 charge : <span id=\"out_net\">0 \u20ac<\/span><\/strong>\n                    <br \/><small>Apr\u00e8s cr\u00e9dit d&rsquo;imp\u00f4t de 50% (Services \u00e0 la personne)<\/small>\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <div class=\"action-btns\">\n            <button class=\"btn-action btn-pdf\" onclick=\"exportPDF()\">&#x1f4c4; T\u00e9l\u00e9charger l&rsquo;offre<\/button>\n            <button class=\"btn-action btn-rdv\" onclick=\"openContact()\">&#x1f4c5; Valider RDV par e-mail<\/button>\n        <\/div>\n    <\/div>\n\n    <p class=\"disclaimer\">\n        Estimation bas\u00e9e sur les tarifs 2026. Document non contractuel. Toute intervention n\u00e9cessite un devis pr\u00e9alable sign\u00e9 sur place.\n    <\/p>\n<\/div>\n\n<script>\n    const ORIGIN = { lat: 48.5758, lon: -1.8839 };\n    let selectedProfile = 'particulier';\n    let finalQuote = {};\n\n    window.onload = () => {\n        const saved = JSON.parse(localStorage.getItem('expert_simul_data'));\n        if(saved) {\n            setProfile(saved.profile || 'particulier');\n            document.getElementById('h_in').value = saved.h_in || '';\n            document.getElementById('h_out').value = saved.h_out || '';\n            document.getElementById('material').value = saved.material || '';\n        }\n    };\n\n    function setProfile(val) {\n        selectedProfile = val;\n        document.getElementById('prof-particulier').classList.toggle('active', val === 'particulier');\n        document.getElementById('prof-professionnel').classList.toggle('active', val === 'professionnel');\n        saveData();\n    }\n\n    function saveData() {\n        const data = {\n            profile: selectedProfile,\n            h_in: document.getElementById('h_in').value,\n            h_out: document.getElementById('h_out').value,\n            material: document.getElementById('material').value\n        };\n        localStorage.setItem('expert_simul_data', JSON.stringify(data));\n    }\n\n    function locateMe() {\n        if (!navigator.geolocation) return alert(\"G\u00e9olocalisation indisponible.\");\n        navigator.geolocation.getCurrentPosition((pos) => {\n            const R = 6371;\n            const dLat = (pos.coords.latitude - ORIGIN.lat) * Math.PI \/ 180;\n            const dLon = (pos.coords.longitude - ORIGIN.lon) * Math.PI \/ 180;\n            const a = Math.sin(dLat\/2)**2 + Math.cos(ORIGIN.lat*Math.PI\/180) * Math.cos(pos.coords.latitude*Math.PI\/180) * Math.sin(dLon\/2)**2;\n            const dist = R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));\n            let zone = dist <= 10 ? 1 : (dist <= 20 ? 2 : 3);\n            if (dist > 35) return alert(\"Vous semblez \u00eatre hors zone. Appelez-nous au 06 63 15 35 35.\");\n            document.getElementById('commune').value = \"\"; \n            document.getElementById('commune').setAttribute('data-gps-zone', zone);\n            alert(`&#x1f4cd; Localisation : Zone ${zone} (${dist.toFixed(1)}km).`);\n        });\n    }\n\n    function runSimulation() {\n        const sel = document.getElementById('commune');\n        let zone = parseInt(sel.options[sel.selectedIndex].getAttribute('data-zone')) || parseInt(sel.getAttribute('data-gps-zone'));\n        \n        if(!zone) return alert(\"Veuillez choisir une commune.\");\n        const t1 = document.getElementById('h_in').value, t2 = document.getElementById('h_out').value;\n        if(!t1 || !t2) return alert(\"Veuillez saisir les horaires d'intervention.\");\n\n        const d1 = new Date(\"1970-01-01T\"+t1), d2 = new Date(\"1970-01-01T\"+t2);\n        let diff = Math.round(((d2 < d1 ? d2.setDate(d2.getDate()+1) : d2) - d1)\/60000);\n        \n        let baseHT = zone === 1 ? 100 : (zone === 2 ? 110 : 120);\n        let supHT = diff > 60 ? Math.ceil((diff-60)\/15) * 15 : 0; \n        let materialHT = parseFloat(document.getElementById('material').value) || 0;\n        \n        let totalHT = baseHT + supHT + materialHT;\n        let tva = totalHT * 0.20;\n        let ttc = totalHT + tva;\n\n        document.getElementById('out_mo').innerText = (baseHT + supHT).toFixed(2) + \" \u20ac\";\n        document.getElementById('out_mat').innerText = materialHT.toFixed(2) + \" \u20ac\";\n        document.getElementById('out_tva').innerText = tva.toFixed(2) + \" \u20ac\";\n        document.getElementById('out_ttc').innerText = ttc.toFixed(2) + \" \u20ac\";\n        document.getElementById('out_net').innerText = (ttc\/2).toFixed(2) + \" \u20ac\";\n        \n        document.getElementById('tax-box').style.display = selectedProfile === 'particulier' ? 'flex' : 'none';\n        document.getElementById('result-area').style.display = 'block';\n        document.getElementById('step-2').classList.add('active');\n        document.getElementById('step-3').classList.add('active');\n\n        finalQuote = { \n            ttc: ttc.toFixed(2), \n            ville: sel.options[sel.selectedIndex].text || \"Secteur d\u00e9tect\u00e9 par GPS\", \n            duree: diff \n        };\n    }\n\n    function exportPDF() {\n        const { jsPDF } = window.jspdf;\n        const doc = new jsPDF();\n        doc.setFont(\"helvetica\", \"bold\");\n        doc.text(\"ESTIMATION MON COACH INFORMATIQUE\", 20, 20);\n        doc.setFont(\"helvetica\", \"normal\");\n        doc.text(`Profil : ${selectedProfile.toUpperCase()}`, 20, 40);\n        doc.text(`Commune : ${finalQuote.ville}`, 20, 50);\n        doc.text(`TOTAL ESTIM\u00c9 : ${finalQuote.ttc} EUR TTC`, 20, 65);\n        doc.save(`MCI_Estimation.pdf`);\n    }\n\n    function openContact() {\n        const body = `Bonjour,\\n\\nJe souhaite valider un rendez-vous informatique pour le secteur de ${finalQuote.ville}.\\n\\nR\u00e9sum\u00e9 de mon estimation :\\n- Profil : ${selectedProfile}\\n- Montant estim\u00e9 : ${finalQuote.ttc}\u20ac TTC\\n\\nMerci de me recontacter pour confirmer.`;\n        window.location.href = `mailto:contact@mon-coach-informatique.com?subject=Demande de RDV&body=${encodeURIComponent(body)}`;\n    }\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Estimez votre Prestation Saint-Guinoux &#038; alentours (30km) 1 2 3 Vous \u00eates : &#x1f3e0; Particulier -50% Cr\u00e9dit d&rsquo;imp\u00f4t &#x1f4bc; Professionnel Tarifs HT \/ TVA 20% Votre commune : &#8212; Choisir &#8212;La Gouesni\u00e8reLillemerMiniac-MorvanPlerguerSaint-GuinouxSaint-Jouan-des-Gu\u00e9retsSaint-M\u00e9loir-des-OndesSaint-P\u00e8re-Marc-en-PouletSaint-Suliac CancaleCh\u00e2teauneuf-d&rsquo;Ille-et-VilaineDinardHirelLa FresnaisLe Vivier-sur-MerPleurtuitSaint-Beno\u00eet-des-OndesSaint-CoulombSaint-Malo Saint-Jacut-de-la-MerCherrueixCombourgDol-de-BretagneDinanLancieuxPleudihen-sur-RancePloubalaySaint-BroladreSaint-Cast-le-Guildo &#x1f4cd; Me localiser (automatique) Arriv\u00e9e pr\u00e9vue : D\u00e9part pr\u00e9vu : Mat\u00e9riel \/ Fournitures estim\u00e9 (Optionnel) : &#x26a1; Calculer mon [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":2,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-575","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/mon-coach-informatique.com\/wp-json\/wp\/v2\/pages\/575","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mon-coach-informatique.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/mon-coach-informatique.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/mon-coach-informatique.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mon-coach-informatique.com\/wp-json\/wp\/v2\/comments?post=575"}],"version-history":[{"count":34,"href":"https:\/\/mon-coach-informatique.com\/wp-json\/wp\/v2\/pages\/575\/revisions"}],"predecessor-version":[{"id":727,"href":"https:\/\/mon-coach-informatique.com\/wp-json\/wp\/v2\/pages\/575\/revisions\/727"}],"wp:attachment":[{"href":"https:\/\/mon-coach-informatique.com\/wp-json\/wp\/v2\/media?parent=575"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}