Calculateur de Prêt Immobilier

Simulez votre prêt en toute simplicité

150 000 €
3.5%
20 ans

📋 Instructions d'installation

  1. Emplacement du code : Le fichier Python se trouve sur le serveur :
    /var/www/html/Calculateur_pret/calculateur_pret.py
  2. Dépendances nécessaires : sudo apt install python3 python3-pip
  3. Installation de pandas : pip3 install pandas
  4. Exécution : python3 calculateur_pret.py
calculateur_pret.py
#!/usr/bin/env python3
"""
Calculateur de Prêt Immobilier - Version Python
© Laurent Duval - Code libre - 21/11/2025
"""

import pandas as pd
import math
from datetime import datetime, timedelta

class CalculateurPret:
    def __init__(self):
        self.montant = 150000
        self.apport = 30000
        self.taux_annuel = 3.5
        self.duree_annees = 20
        self.assurance_taux = 0.3
        
    def calculer_mensualite_constante(self, montant, taux_annuel, duree_annees):
        """Calcule la mensualité pour des annuités constantes"""
        taux_mensuel = taux_annuel / 100 / 12
        nb_mois = duree_annees * 12
        
        if taux_mensuel == 0:
            return montant / nb_mois
        
        mensualite = (montant * taux_mensuel * (1 + taux_mensuel)**nb_mois) / \
                    ((1 + taux_mensuel)**nb_mois - 1)
        return mensualite
    
    def calculer_mensualite_amortissement_constant(self, montant, taux_annuel, duree_annees):
        """Calcule la première mensualité pour amortissement constant"""
        taux_mensuel = taux_annuel / 100 / 12
        nb_mois = duree_annees * 12
        amortissement_constant = montant / nb_mois
        return amortissement_constant + (montant * taux_mensuel)
    
    def generer_tableau_amortissement(self, type_amortissement="constant"):
        """Génère le tableau d'amortissement complet"""
        montant_finance = self.montant - self.apport
        taux_mensuel = self.taux_annuel / 100 / 12
        nb_mois = self.duree_annees * 12
        assurance_mensuelle = (montant_finance * self.assurance_taux / 100) / 12
        
        capital_restant = montant_finance
        tableau = []
        date_courante = datetime.now()
        
        for mois in range(1, nb_mois + 1):
            if type_amortissement == "constant":
                # Annuités constantes
                mensualite_hors_assurance = self.calculer_mensualite_constante(
                    montant_finance, self.taux_annuel, self.duree_annees)
                interets = capital_restant * taux_mensuel
                capital_rembourse = mensualite_hors_assurance - interets
            else:
                # Amortissement constant
                amortissement_constant = montant_finance / nb_mois
                interets = capital_restant * taux_mensuel
                capital_rembourse = amortissement_constant
                mensualite_hors_assurance = amortissement_constant + interets
            
            capital_restant -= capital_rembourse
            mensualite_totale = mensualite_hors_assurance + assurance_mensuelle
            
            tableau.append({
                'Mois': mois,
                'Date': (date_courante + timedelta(days=30*mois)).strftime('%m/%Y'),
                'Mensualité': round(mensualite_hors_assurance, 2),
                'Assurance': round(assurance_mensuelle, 2),
                'Total': round(mensualite_totale, 2),
                'Capital': round(capital_rembourse, 2),
                'Intérêts': round(interets, 2),
                'Capital restant': round(max(0, capital_restant), 2)
            })
        
        return pd.DataFrame(tableau)
    
    def afficher_resume(self):
        """Affiche un résumé du prêt"""
        montant_finance = self.montant - self.apport
        mensualite = self.calculer_mensualite_constante(
            montant_finance, self.taux_annuel, self.duree_annees)
        assurance_mensuelle = (montant_finance * self.assurance_taux / 100) / 12
        mensualite_totale = mensualite + assurance_mensuelle
        cout_total = mensualite_totale * self.duree_annees * 12
        cout_interets = cout_total - montant_finance
        
        print("╔══════════════════════════════════════════════════╗")
        print("║          CALCULATEUR DE PRÊT IMMOBILIER          ║")
        print("╚══════════════════════════════════════════════════╝")
        print()
        print(f"Montant du prêt : {self.montant:,}€")
        print(f"Apport personnel : {self.apport:,}€")
        print(f"Montant à financer : {montant_finance:,}€")
        print(f"Durée : {self.duree_annees} ans")
        print(f"Taux d'intérêt : {self.taux_annuel}%")
        print(f"Taux d'assurance : {self.assurance_taux}%")
        print()
        print(f"Mensualité hors assurance : {mensualite:,.2f}€")
        print(f"Assurance mensuelle : {assurance_mensuelle:,.2f}€")
        print(f"Mensualité totale : {mensualite_totale:,.2f}€")
        print(f"Coût total des intérêts : {cout_interets:,.2f}€")
        print(f"Coût total du crédit : {cout_total:,.2f}€")

if __name__ == "__main__":
    calculateur = CalculateurPret()
    calculateur.afficher_resume()