Version PDF
1. Présentation de l’IRPP[1]
Nous
saisissons cette occasion pour rappeler que le barème d’Impôt sur le Revenu des
Personnes Physiques à été modifié par la Loi de Finance 2017 comme détaillé
dans ce qui suit :
Tranche de Revenu en TND
|
Taux
|
Taux Effectif
|
De
0 à 5000
|
0%
|
0%
|
De
5000,001 à 20.000
|
26%
|
19,5%
|
De
20.000,001 à 30.000
|
28%
|
22,33%
|
De
30.000,001 à 50.000
|
32%
|
26,20%
|
Supérieur
à 50.000 DT
|
35%
|
En outre, la déduction des frais professionnel (10%) à été
plafonnée à 2.000 Dinars
2. Modalité de Calcul
Le calcul de la retenue à la source sur les
salaires se fait principalement en se basant sur les critères suivants.
+ Revenue Brut Annuel
|
|
- Cotisation Sociale
|
9,18%*Revenue Brut
|
= Salaire Net Sociale
|
Revenue Brut-Cotisation
|
- Déduction pour Frais Professionnel
|
10%*Salaire Net Sociale
|
- Déduction Commune (chef de famille, enfants à charges, etc.)
|
150 TND Chef de famille
Respectivement (90 ;
75 ; 60 ; 45) pour les quatre 1er enfants.
|
= Salaire Net Imposable
|
|
Retenue à la Source IRPP
|
Selon Un barème
|
3. Fonction Excel
ImpotMensuel (Salaire, Situation Familiale,
Nombre d’Enfant)
Nous vous proposons dans ce qui suit une astuce
pour déterminer l’impôt comme n’importe quelles autres fonctions Excel et ce
telle illustrée dans les images ci-dessous :
Fonction Excel Impôt Mensuel |
Aperçu Fonction Impôt Mensuel |
4. Code VBA
u
Fonction Principale Pour Calculer L’impôt
Annuel
Public Function IRPP_Annuel(Salaire As Double, Mariee As
Boolean, Nombre_Enfant As Integer)
Dim Tranche, Taux
Dim Net_Social As
Double
Taux
= Array(0, 0.26, 0.28, 0.32, 0.34)
Tranche
= Array(0, 5000, 20000, 30000, 50000)
Net_Social
= 12 * (Salaire - CNSS(Salaire))
Annuel
= Net_Social - FraisProfessionel(Salaire) - Deduction_Chef_Famille(Mariee) -
Deduction_Enfant(Nombre_Enfant)
If Annuel <= Tranche(1) Then
IRPP_Annuel
= Annuel * t0
ElseIf Annuel <= Tranche(2) Then
IRPP_Annuel
= (Annuel - Tranche(1)) * Taux(1)
ElseIf Annuel <= Tranche(3) Then
IRPP_Annuel
= (Tranche(2) - Tranche(1)) * Taux(1) + (Annuel - Tranche(2)) * Taux(2)
ElseIf Annuel <= Tranche(4) Then
IRPP_Annuel
= (Tranche(2) - Tranche(1)) * Taux(1) + (Tranche(3) - Tranche(2)) _ *Taux(2) +
(Annuel - Tranche(3)) * Taux(3)
ElseIf Annuel > Tranche(4) Then
IRPP_Annuel
= (Tranche(2) - Tranche(1)) * Taux(1) + (Tranche(3) - Tranche(2)) * Taux(t2) + (Tranche(4)
- Tranche(3)) * Taux(3) + (Annuel - Tranche(4)) * Taux(4)
End If
End Function
u
Fonction Pour Calculer l’Impôt Mensuel
Public Function ImpotMensuel(Salaire As Double, Mariee As
Boolean, Nombre_Enfant As Integer)
ImpotMensuel
= Round(IRPP_Annuel(Salaire, Mariee, Nombre_Enfant) / 12, 3)
'Round pour arrondir au 3 eme chiffre aprés la virgule
End Function
u
Fonction Pour calculer les cotisations
sociales
Public Function CNSS(Salaire As
Double)
'Calculer le CNSS en fonction du salaire Brut
CNSS
= Salaire * 0.0918
End Function
u
Fonction Pour calculer les déductions à titre
de frais Professionnel
Public Function FraisProfessionel(Salaire As Double)
'Calculer les frais professionnel en fonction de la de finance
2017
If 0.1 * (Salaire - CNSS(Salaire)) * 12
> 2000 Then
FraisProfessionel
= 2000
Else
FraisProfessionel
= 0.1 * (Salaire - CNSS(Salaire)) * 12
End If
End Function
u
Fonction pour calculer la déduction à titre
de chef de famille
Public Function Deduction_Chef_Famille(Mariee As Boolean)
If
Mariee = False
Then
Deduction_Chef_Famille
= 0
ElseIf
Mariee = True
Then
Deduction_Chef_Famille
= 150
End If
End Function
u
Fonction pour calculer la déduction au titre
des enfants à charges
Public Function Deduction_Enfant(Nombre_Enfant As Integer)
If Nombre_Enfant = 0 Then
Deduction_Enfant
= 0
ElseIf Nombre_Enfant = 1 Then
Deduction_Enfant
= 90
ElseIf Nombre_Enfant = 2 Then
Deduction_Enfant
= 90 + 75
ElseIf Nombre_Enfant = 3 Then
Deduction_Enfant
= 90 + 75 + 60
ElseIf Nombre_Enfant >= 4 Then
Deduction_Enfant
= 90 + 75 + 60 + 45
End If
End Function
Auteur: N’hésitez pas à me signaler les erreurs qui peuvent glisser dans cet article afin de les corriger.
Auteur: N’hésitez pas à me signaler les erreurs qui peuvent glisser dans cet article afin de les corriger.
il ya une faute dans la ligne 4 de la premiére fonction taux=...........0,35 et non pas 0,34
RépondreSupprimeret merci comme méme
MERCI
SupprimerCe commentaire a été supprimé par l'auteur.
RépondreSupprimerBonjour à tous,
RépondreSupprimerJ'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.
Option Explicit
Function CalculImpotSansQuotient(revenu As Double, Optional annee As Integer = 2024) As Double
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)
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
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:
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
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
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