{"id":164,"date":"2025-02-04T11:45:30","date_gmt":"2025-02-04T16:45:30","guid":{"rendered":"https:\/\/e.bip-s.com\/?page_id=164"},"modified":"2025-10-26T03:27:57","modified_gmt":"2025-10-26T07:27:57","slug":"calculator","status":"publish","type":"page","link":"https:\/\/e.bip-s.com\/index.php\/calculator\/","title":{"rendered":"Calculator"},"content":{"rendered":"\n<figure class=\"wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\">\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"491\" height=\"491\" data-id=\"217\" src=\"https:\/\/e.bip-s.com\/wp-content\/uploads\/2025\/10\/8371-modified-1.png\" alt=\"\" class=\"wp-image-217\" srcset=\"https:\/\/e.bip-s.com\/wp-content\/uploads\/2025\/10\/8371-modified-1.png 491w, https:\/\/e.bip-s.com\/wp-content\/uploads\/2025\/10\/8371-modified-1-300x300.png 300w, https:\/\/e.bip-s.com\/wp-content\/uploads\/2025\/10\/8371-modified-1-150x150.png 150w, https:\/\/e.bip-s.com\/wp-content\/uploads\/2025\/10\/8371-modified-1-100x100.png 100w\" sizes=\"auto, (max-width: 491px) 100vw, 491px\" \/><\/figure>\n<\/figure>\n\n\n\n<!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Calculatrice d&rsquo;int\u00e9r\u00eats mensuels<\/title>\n    <style>\n        body {\n            font-family: Arial, sans-serif;\n            background-color: #f4f4f4;\n            margin: 0;\n            padding: 20px;\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            height: 100vh;\n        }\n\n        .container {\n            background-color: white;\n            padding: 20px;\n            border-radius: 8px;\n            box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\n            width: 400px;\n        }\n\n        h1 {\n            text-align: center;\n        }\n\n        label {\n            display: block;\n            margin-top: 10px;\n        }\n\n        input, select {\n            width: 100%;\n            padding: 8px;\n            margin-top: 5px;\n            border-radius: 4px;\n            border: 1px solid #ccc;\n        }\n\n        button {\n            margin-top: 20px;\n            padding: 10px;\n            width: 100%;\n            background-color: #28a745;\n            color: white;\n            border: none;\n            border-radius: 4px;\n            cursor: pointer;\n        }\n\n        button:hover {\n            background-color: #218838;\n        }\n\n        .transaction {\n            margin-top: 10px;\n            padding: 10px;\n            border: 1px solid #ccc;\n            border-radius: 4px;\n        }\n    <\/style>\n<\/head>\n<body>\n    <div class=\"container\">\n        <h1>Calculatrice d&rsquo;int\u00e9r\u00eats mensuels<\/h1>\n        <form id=\"interestCalculator\">\n            <label for=\"startDate\">Date de d\u00e9but des transactions :<\/label>\n            <input type=\"date\" id=\"startDate\" required>\n\n            <label for=\"endDate\">Date de fin des transactions :<\/label>\n            <input type=\"date\" id=\"endDate\" required>\n\n            <label for=\"interestRate\">Taux d&rsquo;int\u00e9r\u00eat mensuel (%) :<\/label>\n            <input type=\"number\" id=\"interestRate\" step=\"0.01\" required>\n\n            <div id=\"transactions\">\n                <div class=\"transaction\">\n                    <label>Type :<\/label>\n                    <select class=\"type\">\n                        <option value=\"deposit\">D\u00e9p\u00f4t<\/option>\n                        <option value=\"withdrawal\">Retrait<\/option>\n                    <\/select>\n                    <label>Montant :<\/label>\n                    <input type=\"number\" class=\"amount\" step=\"0.01\">\n                    <label>Date :<\/label>\n                    <input type=\"date\" class=\"date\">\n                <\/div>\n            <\/div>\n\n            <button type=\"button\" id=\"addTransactionButton\">Ajouter une transaction<\/button>\n            <button type=\"button\" id=\"calculateInterestButton\">Calculer les int\u00e9r\u00eats<\/button>\n        <\/form>\n\n        <h2>R\u00e9sultat :<\/h2>\n        <p id=\"result\"><\/p>\n    <\/div>\n\n    <script>\n        \/\/ Ajouter une transaction\n        document.getElementById('addTransactionButton').addEventListener('click', function () {\n            const transactionsDiv = document.getElementById('transactions');\n            const newTransaction = document.createElement('div');\n            newTransaction.className = 'transaction';\n            newTransaction.innerHTML = `\n                <label>Type :<\/label>\n                <select class=\"type\">\n                    <option value=\"deposit\">D\u00e9p\u00f4t<\/option>\n                    <option value=\"withdrawal\">Retrait<\/option>\n                <\/select>\n                <label>Montant :<\/label>\n                <input type=\"number\" class=\"amount\" step=\"0.01\">\n                <label>Date :<\/label>\n                <input type=\"date\" class=\"date\">\n            `;\n            transactionsDiv.appendChild(newTransaction);\n        });\n\n        \/\/ Calculer les int\u00e9r\u00eats\n        document.getElementById('calculateInterestButton').addEventListener('click', function () {\n            const startDate = new Date(document.getElementById('startDate').value);\n            const endDate = new Date(document.getElementById('endDate').value);\n            const interestRate = parseFloat(document.getElementById('interestRate').value) \/ 100;\n\n            if (isNaN(interestRate) || !startDate || !endDate) {\n                alert(\"Veuillez remplir tous les champs obligatoires.\");\n                return;\n            }\n\n            \/\/ Trier les transactions par date\n            const transactions = Array.from(document.querySelectorAll('.transaction'))\n                .map(transaction => {\n                    const type = transaction.querySelector('.type').value;\n                    const amount = parseFloat(transaction.querySelector('.amount').value);\n                    const date = new Date(transaction.querySelector('.date').value);\n                    return { type, amount, date };\n                })\n                .filter(transaction => !isNaN(transaction.amount) && transaction.date)\n                .sort((a, b) => a.date - b.date);\n\n            let balance = 0; \/\/ Solde du compte\n            let totalInterest = 0; \/\/ Int\u00e9r\u00eats totaux\n            let previousDate = startDate; \/\/ Date pr\u00e9c\u00e9dente pour le calcul des int\u00e9r\u00eats\n\n            transactions.forEach(transaction => {\n                const { type, amount, date } = transaction;\n\n                \/\/ Calculer les int\u00e9r\u00eats pour la p\u00e9riode pr\u00e9c\u00e9dente\n                const days = (date - previousDate) \/ (1000 * 60 * 60 * 24); \/\/ Nombre de jours entre les transactions\n                const interest = balance * interestRate * (days \/ 30); \/\/ Int\u00e9r\u00eats proportionnels\n                totalInterest += interest;\n\n                \/\/ Mettre \u00e0 jour le solde\n                if (type === 'deposit') {\n                    balance += amount;\n                } else if (type === 'withdrawal') {\n                    balance -= amount;\n                }\n\n                \/\/ Mettre \u00e0 jour la date pr\u00e9c\u00e9dente\n                previousDate = date;\n            });\n\n            \/\/ Calculer les int\u00e9r\u00eats pour la derni\u00e8re p\u00e9riode (entre la derni\u00e8re transaction et la date de fin)\n            const days = (endDate - previousDate) \/ (1000 * 60 * 60 * 24);\n            const interest = balance * interestRate * (days \/ 30);\n            totalInterest += interest;\n\n            \/\/ Afficher le r\u00e9sultat\n            document.getElementById('result').innerText = `Int\u00e9r\u00eats mensuels : ${totalInterest.toFixed(2)} \u20ac`;\n        });\n    <\/script>\n<\/body>\n<\/html>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Calculatrice d&rsquo;int\u00e9r\u00eats mensuels Calculatrice d&rsquo;int\u00e9r\u00eats mensuels Date de d\u00e9but des transactions : Date de fin des transactions : Taux d&rsquo;int\u00e9r\u00eat mensuel (%) : Type : D\u00e9p\u00f4tRetrait Montant : Date : Ajouter une transaction Calculer les int\u00e9r\u00eats R\u00e9sultat :<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-164","page","type-page","status-publish","hentry"],"blocksy_meta":[],"acf":[],"_links":{"self":[{"href":"https:\/\/e.bip-s.com\/index.php\/wp-json\/wp\/v2\/pages\/164","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/e.bip-s.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/e.bip-s.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/e.bip-s.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/e.bip-s.com\/index.php\/wp-json\/wp\/v2\/comments?post=164"}],"version-history":[{"count":16,"href":"https:\/\/e.bip-s.com\/index.php\/wp-json\/wp\/v2\/pages\/164\/revisions"}],"predecessor-version":[{"id":218,"href":"https:\/\/e.bip-s.com\/index.php\/wp-json\/wp\/v2\/pages\/164\/revisions\/218"}],"wp:attachment":[{"href":"https:\/\/e.bip-s.com\/index.php\/wp-json\/wp\/v2\/media?parent=164"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}