Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Discussion :

Calcul impôt sur le revenu


Sujet :

Contribuez

  1. #1
    Membre du Club
    Calcul impôt sur le revenu
    Voici une fonction Excel permettant de calculer l'impôt sur le revenu à payer en fonction du revenu net imposable et de l'année d'imposition.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    Function IR(Rimposable As Double, Optional Annee As Variant = 2007) As Double
    Dim i As Integer
    Dim Tbl As Variant, Taux As Variant
     
    Select Case Annee
        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
            IR = IR + WorksheetFunction.Max(WorksheetFunction.Min( _
            Rimposable - Tbl(i), Tbl(i + 1) - Tbl(i)), 0) * Taux(i)
            i = i + 1
        Loop While Rimposable > Tbl(i) And i < UBound(Tbl)
     
    End Function

  2. #2
    Nouveau membre du Club
    testé mais la fonction semble erroné

    de plus les valeurs des seuils n'est pas bon

  3. #3
    Nouveau membre du Club
    avant de produire ce code en vba, j'ai été étonnée après avoir farfouillé tous les forums de ne pas avoir trouvé des exemples déjà fait du calcul de l'impôt sur le revenu ou de l'impôt sur les sociétés

    voilà j'ai dû corriger, et même amélioré en ajoutant des fonctions supplémentaires,

    voilà pour le calcul de l'impôt sur le revenu,
    avec une option possible de prise en compte des parts,
    avec une option possible d'avoir en retour le TMI c'est-à-dire le taux marginal d'imposition

    il n'y a qu'en France où l'on est obligé d'en arriver à là, c'est-à-dire d'en arriver à devoir faire de la programmation (non à la porté de tous) afin de pouvoir faire face aux mille-feuille administratif et fiscal de notre République ,

    Samedi tous à PARIS avec les gilets jaunes !!!!

    Enjoy






    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
     
    Option Explicit
     
    Function Impot_Revenu(Revenu_Imposable As Double, Optional Annee As Variant = "", Optional Part As Double = 1, Optional Retour_fonction As String = "") As Double
     
    ' On Error Resume Next
    Application.Calculation = xlCalculationManual
    Application.volatile True
     
    Dim i As Integer
    Dim Tbl As Variant, Taux As Variant
    Dim TMI As Double
     
    If (Annee = "") Then Annee = Year(Now())
    If (Annee > 2019) Then Annee = 2019
    If (Annee < 2000) Then Annee = 2000
     
    If (Part <> 1) Then Revenu_Imposable = Revenu_Imposable / Part
     
    Select Case Annee
     
    ' https://fr.wikipedia.org/wiki/Bar%C3%A8mes_de_l%27imp%C3%B4t_sur_le_revenu_en_France
     
        Case 2019
        Tbl = Array(0, 9964, 27519, 73779, 156244)
        Taux = Array(0, 0.14, 0.3, 0.41, 0.45)
     
        Case 2018
        Tbl = Array(0, 9807, 27086, 72617, 153783)
        Taux = Array(0, 0.14, 0.3, 0.41, 0.45)
     
        Case 2017
        Tbl = Array(0, 9690, 26764, 71754, 151956)
        Taux = Array(0, 0.14, 0.3, 0.41, 0.45)
     
        Case 2016
        Tbl = Array(0, 9710, 26818, 71898, 152260)
        Taux = Array(0, 0.14, 0.3, 0.41, 0.45)
     
        Case 2015
        Tbl = Array(0, 9700, 26791, 71826, 152108)
        Taux = Array(0, 0.14, 0.3, 0.41, 0.45)
     
        Case 2014
        Tbl = Array(0, 9690, 26764, 71754, 151956)
        Taux = Array(0, 0.14, 0.3, 0.41, 0.45)
     
        Case 2013
        Tbl = Array(0, 6011, 11991, 26631, 71397, 151200)
        Taux = Array(0, 0.055, 0.14, 0.3, 0.41, 0.45)
     
        Case 2012
        Tbl = Array(0, 5963, 11896, 26420, 70830, 150000)
        Taux = Array(0, 0.055, 0.14, 0.3, 0.41, 0.45)
     
        Case 2011
        Tbl = Array(0, 5963, 11896, 26420, 70830)
        Taux = Array(0, 0.055, 0.14, 0.3, 0.41)
     
        Case 2010
        Tbl = Array(0, 5963, 11896, 26420, 70830)
        Taux = Array(0, 0.055, 0.14, 0.3, 0.41)
     
        Case 2009
        Tbl = Array(0, 5875, 11720, 26030, 69783)
        Taux = Array(0, 0.055, 0.14, 0.3, 0.4)
     
        Case 2008
        Tbl = Array(0, 5852, 11673, 25926, 69505)
        Taux = Array(0, 0.055, 0.14, 0.3, 0.4)
     
        Case 2007
        Tbl = Array(0, 5614, 11198, 248725, 66679)
        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, 4412, 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 = 0
        Do
            Impot_Revenu = Impot_Revenu + WorksheetFunction.Max(WorksheetFunction.Min( _
            Revenu_Imposable - Tbl(i), Tbl(i + 1) - Tbl(i)), 0) * Taux(i)
            TMI = Taux(i)
            i = i + 1
        Loop While Revenu_Imposable > Tbl(i) And i < UBound(Tbl)
            If Revenu_Imposable > Tbl(UBound(Tbl)) Then
                Impot_Revenu = Impot_Revenu + ((Revenu_Imposable - Tbl(UBound(Tbl))) * Taux(UBound(Tbl)))
                TMI = Taux(UBound(Tbl))
            End If
     
    If (Part <> 1) Then Impot_Revenu = Impot_Revenu * Part
     
    If (Retour_fonction <> "") Then Impot_Revenu = TMI
     
    Application.Calculation = xlCalculationAutomatic
     
    End Function



    RAF

  4. #4
    Nouveau membre du Club
    voilà pour le calcul de l'impôt sur les sociétés,



    Enjoy



    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
     
    Option Explicit
     
    Function Impot_Societe(Resultat_Imposable As Double, Optional Annee As Variant = "") As Double
     
    ' On Error Resume Next
    Application.Calculation = xlCalculationManual
    Application.volatile True
     
    Dim x As Double
    Dim i As Integer
    Dim Tbl As Variant, Taux As Variant
     
    If (Annee = "") Then Annee = Year(Now())
    If (Annee > 2022) Then Annee = 2022
    If (Annee < 2016) Then Annee = 2016
     
    Select Case Annee
     
    ' https://www.legifiscal.fr/actualites-fiscales/1732-2018-is-28-500000-benefices.html
     
        Case 2022
        Tbl = Array(0, 38120)
        Taux = Array(0.15, 0.25)
     
        Case 2021
        Tbl = Array(0, 38120)
        Taux = Array(0.15, 0.265)
     
        Case 2020
        Tbl = Array(0, 38120)
        Taux = Array(0.15, 0.28)
     
        Case 2019
        Tbl = Array(0, 38120, 500000)
        Taux = Array(0.15, 0.28, 0.31)
     
        Case 2018
        Tbl = Array(0, 38120, 500000)
        Taux = Array(0.15, 0.28, 0.33)
     
        Case 2017
        Tbl = Array(0, 38120, 75000)
        Taux = Array(0.15, 0.28, 0.33)
     
        Case 2016
        Tbl = Array(0, 38120)
        Taux = Array(0.15, 0.33)
     
    End Select
     
            i = 0
        Do
            Impot_Societe = Impot_Societe + WorksheetFunction.Max(WorksheetFunction.Min( _
            Resultat_Imposable - Tbl(i), Tbl(i + 1) - Tbl(i)), 0) * Taux(i)
            i = i + 1
        Loop While Resultat_Imposable > Tbl(i) And i < UBound(Tbl)
            If Resultat_Imposable > Tbl(UBound(Tbl)) Then Impot_Societe = Impot_Societe + ((Resultat_Imposable - Tbl(UBound(Tbl))) * Taux(UBound(Tbl)))
     
    Application.Calculation = xlCalculationAutomatic
     
    End Function



    RAF

  5. #5
    Nouveau Candidat au Club
    Réponse à Hermes6236
    Bonjour Hermes6236,

    Votre code est intéressant mais il manque pour mois une fonction importante: le plafonnement du quotient familial. En effet pour un couple marié ayant 4 enfants et un revenu imposable de 120 000€, l'impôt n'est pas de 9 935,1€ dans votre code mais bien de 15 424,52€.

    Bien à vous !

  6. #6
    Nouveau membre du Club
    Bonjour,
    je ne suis pas un spécialiste du vba, comment inserer ton code dans un module ?
    Je suppose qu'il manque pas mal de chose pour ça fonctionne ,-)

    Merci beaucoup pour le partage

  7. #7
    Nouveau Candidat au Club
    Calcul impôt sur le revenu
    Bonjour et merci hermes6236 pour ces 2 fonctions