Bonjour à tous,
J'ai cherché sur la toile un code pour calculer les impôts en fonction du revenu, nombre de parts et nombre d'adultes mais ne le trouvant pas voici le mien.
Il prend en compte la décote et le plafonnement de la réduction lié au quotient familial par année.
'Pour créer ces fonctions, vous devez faire
'Appuyez sur Alt+F11 pour ouvrir Visual Basic Editor (sur le Mac, appuyez sur FN+ALT+F11),
'puis cliquez sur Insérer > Module.
'Une nouvelle fenêtre de module s’affiche sur le côté droit de Visual Basic Editor.
'Puis coller ces fonctions
'https://support.microsoft.com/fr-fr/office/cr%C3%A9er-des-fonctions-personnalis%C3%A9es-dans-excel-2f06c10b-3622-40d6-a1b2-b6748ae8231f
Option Explicit
Function CalculImpotSansQuotient(revenu As Double, Optional annee As Integer = 2024) As Double
'https://www.developpez.net/forums/d509486/logiciels/microsoft-office/general-vba/contribuez/calcul-impot-revenu/
Dim i As Integer
Dim calculImpotParAnnee As Double
Dim Tbl As Variant, Taux As Variant
'2023 par defaut
Tbl = Array(0, 11294, 28797, 82341, 177106)
Taux = Array(0, 0.11, 0.3, 0.41, 0.45)
Select Case annee
'https://fr.wikipedia.org/wiki/Bar%C3%A8mes_de_l%27imp%C3%B4t_sur_le_revenu_en_France
Case 2022
Tbl = Array(0, 10777, 27478, 78570, 168994)
Taux = Array(0, 0.11, 0.3, 0.41, 0.45)
Case 2021
Tbl = Array(0, 10225, 26070, 74545, 160336)
Taux = Array(0, 0.11, 0.3, 0.41, 0.45)
Case 2020
Tbl = Array(0, 10084, 25710, 73516, 158122)
Taux = Array(0, 0.11, 0.3, 0.41, 0.45)
Case 2019
Tbl = Array(0, 10064, 27794, 74517, 157806)
Taux = Array(0, 0.14, 0.3, 0.41, 0.45)
Case 2018
Tbl = Array(0, 9964, 27519, 73779, 156244)
Taux = Array(0, 0.14, 0.3, 0.41, 0.45)
Case 2007
Tbl = Array(0, 5687, 11344, 25195, 67546)
Taux = Array(0, 0.055, 0.14, 0.3, 0.4)
Case 2006
Tbl = Array(0, 5614, 11198, 24872, 66679)
Taux = Array(0, 0.055, 0.14, 0.3, 0.4)
Case 2005
Tbl = Array(0, 4413, 8677, 15274, 24731, 40241, 49624)
Taux = Array(0, 0.0683, 0.194, 0.2826, 0.3738, 0.4262, 0.4809)
Case 2004
Tbl = Array(0, 4334, 8524, 15004, 24294, 39529, 48747)
Taux = Array(0, 0.0683, 0.194, 0.2826, 0.3738, 0.4262, 0.4809)
Case 2003
Tbl = Array(0, 4263, 8382, 14753, 23888, 38868, 47932)
Taux = Array(0, 0.0683, 0.194, 0.2826, 0.3738, 0.4262, 0.4809)
Case 2002
Tbl = Array(0, 4191, 8242, 14506, 23489, 38218, 47131)
Taux = Array(0, 0.0683, 0.194, 0.2826, 0.3738, 0.4262, 0.4809)
Case 2001
Tbl = Array(0, 4121, 8104, 14264, 23096, 37579, 46343)
Taux = Array(0, 0.075, 0.21, 0.31, 0.41, 0.4675, 0.5275)
Case 2000
Tbl = Array(0, 26600, 52320, 92090, 149110, 242620, 299200)
Taux = Array(0, 0.085, 0.2175, 0.3175, 0.4175, 0.4725, 0.5325)
End Select
i = 1
Do
calculImpotParAnnee = calculImpotParAnnee + WorksheetFunction.Max(WorksheetFunction.Min(revenu - Tbl(i), Tbl(i + 1) - Tbl(i)), 0) * Taux(i)
i = i + 1
Loop While revenu > Tbl(i) And i < UBound(Tbl)
CalculImpotSansQuotient = calculImpotParAnnee
End Function
Function CalculImpot(revenu As Double, nbPart As Double, nbAdultes As Double, Optional SalaireDejaAbattu As Boolean = False, Optional annee As Integer = 2024, Optional plafondDemiePart As Double = 1759) As Double
Dim impotParPart As Double
Dim impotParPartRameneATouteLesParts As Double
Dim impotPourAdultes As Double
Dim reductionImpotGraceAuxEnfants As Double
Dim nbDemiPartSupplementaire As Double
Dim plafondCalcule As Double
Dim sommeAAjouterLieeAuPlafond As Double
Dim impotAvantDecote As Double
Dim impotFinal As Double
If SalaireDejaAbattu = FALSE Then
revenu = revenu * 0.9 'abattement de 10%
End If
'Le plafondDemiePart est de 1759 le 14/03/2024 https://www.economie.gouv.fr/particuliers/tranches-imposition-impot-revenu
'Calcul lié aux 880 € pour chaque quart de part supplémentaire. non pris en compte
'Nombre de parts - quotient familial : 2
'Nombre d'adultes dans le foyer : 1
'Revenus du foyer avant abattement de 10%: 66 667 €
'Revenus du foyer après abattement de 10%: 60 000 €
'Résultat: 7 768 € =CalculImpot(66667;2;1) ou =CalculImpot(60000;2;1;TRUE)
'D'après le simulateur du gouvernement: 7 768,00 € (https://simulateur-ir-ifi.impots.gouv.fr)
impotParPart = CalculImpotSansQuotient(revenu / nbPart, annee)
impotParPartRameneATouteLesParts = impotParPart * nbPart
impotPourAdultes = CalculImpotSansQuotient(revenu / nbAdultes, annee)
reductionImpotGraceAuxEnfants = impotPourAdultes - impotParPartRameneATouteLesParts
nbDemiPartSupplementaire = (nbPart - nbAdultes) * 2
plafondCalcule = nbDemiPartSupplementaire * plafondDemiePart
sommeAAjouterLieeAuPlafond = reductionImpotGraceAuxEnfants - plafondCalcule
If sommeAAjouterLieeAuPlafond > 0 Then
impotAvantDecote = impotParPartRameneATouteLesParts + sommeAAjouterLieeAuPlafond
Else
impotAvantDecote = impotParPartRameneATouteLesParts
End If
If annee < 2020 Then 'Decote par cherchée avant cette date (a faire)
CalculImpot = impotAvantDecote
Else
'Partie decote:
'https://www.economie.gouv.fr/particuliers/tranches-imposition-impot-revenu
'Pour bénéficier de ce mécanisme, votre impôt sur le revenu brut ne doit pas dépasser les seuils suivants en 2024 (déclaration des revenus de 2023) :
'
'1 929 € pour les célibataires, divorcés, veufs
'3 191 € pour un couple marié soumis à l'imposition commune.
'La décote s’applique automatiquement. Pour en connaître le montant, vous devez soustraire d’un montant forfaitaire
'(873 euros pour une personne seule ou 1 444 euros pour un couple) votre impôt brut, auquel s’applique un taux de 45,25 %.
impotFinal = impotAvantDecote
If (impotAvantDecote < 1929 And nbAdultes = 1) Then
impotFinal = impotAvantDecote - (873 - (impotAvantDecote * 45.25 / 100)) '2023
ElseIf impotAvantDecote < 3191 And nbAdultes > 1 Then
impotFinal = impotAvantDecote - (1144 - (impotAvantDecote * 45.25 / 100)) '2023
End If
Select Case annee
Case 2022
'https://www.economie.gouv.fr/particuliers/decote-impot-revenu
If (impotAvantDecote < 1840 And nbAdultes = 1) Then
impotFinal = impotAvantDecote - (833 - (impotAvantDecote * 45.25 / 100)) '2023
ElseIf impotAvantDecote < 3045 And nbAdultes > 1 Then
impotFinal = impotAvantDecote - (1307 - (impotAvantDecote * 45.25 / 100)) '2023
End If
'https://www.boursorama.com/patrimoine/fiches-pratiques/2021-une-decote-d-impot-nouvelle-version-deb7ef74b1172895f187ec6856ebb7e0
'https://impotsurlerevenu.org/comprendre-le-calcul-de-l-impot/559-decote-de-l-impot.php
Case 2021
If (impotAvantDecote < 1746 And nbAdultes = 1) Then
impotFinal = impotAvantDecote - (790 - (impotAvantDecote * 45.25 / 100)) '2023
ElseIf impotAvantDecote < 2888 And nbAdultes > 1 Then
impotFinal = impotAvantDecote - (1307 - (impotAvantDecote * 45.25 / 100)) '2023
End If
Case 2020
If (impotAvantDecote < 1611 And nbAdultes = 1) Then
impotFinal = impotAvantDecote - (779 - (impotAvantDecote * 45.25 / 100)) '2023
ElseIf impotAvantDecote < 2653 And nbAdultes > 1 Then
impotFinal = impotAvantDecote - (1289 - (impotAvantDecote * 45.25 / 100)) '2023
End If
End Select
'Cas de calcul d'impôt à 527 euros (impotAvantDecote) pour un adulte: dans ce cas, négatif
If impotFinal < 0 Then
impotFinal = 0
End If
CalculImpot = impotFinal
End If
End Function
Bonne journée,
Olivier