Simulez votre prêt en toute simplicité
/var/www/html/Calculateur_pret/calculateur_pret.pysudo apt install python3 python3-pippip3 install pandaspython3 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()