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 |
Partager