Finance TVA, TTC, HT

Etoto

XLDnaute Barbatruc
Bonjour à tous,

Y a 2 ans, grâce à ce site web, j'ai appris à créer une fonction pour calculer la TVA, le TTC et le HT mais je l'avais adaptée à mon pays. Et aujourd'hui, j'ai décidé de l'améliorer pour les trois pays francophones les plus présents sur ce site :
France
Belgique
Suisse

Si vous voulez que je rajoute d'autres pays, dites-le moi !

Voici leur codes :

VB:
Enum TvaType
    Pas_Tva
    Tva_Normal ' 20 %
    Tva_Intermédiaire ' 10 %
    TVA_Réduit '5,5 %
    TVA_particulier '2,1 %
End Enum
Function TVA(HTVA, Optional code As TvaType = Tva_Normal, Optional pays = "FR")
Select Case UCase(pays)
    Case "FR"
        Select Case code
            Case 0: TVA = 0
            Case 1: TVA = 0.2
            Case 2: TVA = 0.1
            Case 3: TVA = 0.055
            Case 4: TVA = 0.021
            Case Else: TVA = "Code trop élevé"
        End Select
    Case "CH"
        Select Case code
               Case 0: TVA = 0
               Case 1: TVA = 0.077
               Case 2: TVA = 0.037
               Case 3: TVA = 0.025
               Case Else: TVA = "Code trop élevé"
           End Select
    Case "BE"
        Select Case code
               Case 0: TVA = 0
               Case 1: TVA = 0.21
               Case 2: TVA = 0.12
               Case 3: TVA = 0.06
               Case Else: TVA = "Code trop élevé"
           End Select
End Select
If TVA <> "Code trop élevé" Then TVA = HTVA * TVA
End Function
Sub test()
Debug.Print TVA(100), TVA(100, Tva_Intermédiaire), TVA(100, pays:="CH")
End Sub
VB:
Function TTC(HTVA, code, Optional pays)
If pays = "fr" Then
    If code = 0 Then
        TTC = HTVA
    ElseIf code = 1 Then
        TTC = HTVA * 1.2
    ElseIf code = 2 Then
        TTC = HTVA * 1.1
    ElseIf code = 3 Then
        TTC = HTVA * 1.055
    ElseIf code = 4 Then
        TTC = HTVA * 1.021
    ElseIf code <> 0 And code <> 1 And code <> 2 And code <> 3 And code <> 4 Then
        TTC = "Code trop élevé"
    End If
ElseIf pays = "ch" Then
    If code = 0 Then
        TTC = HTVA
    ElseIf code = 1 Then
        TTC = HTVA * 1.077
    ElseIf code = 2 Then
        TTC = HTVA * 1.037
    ElseIf code = 3 Then
        TTC = HTVA * 1.025
    ElseIf code <> 0 And code <> 1 And code <> 2 And code <> 3 Then
        TTC = "Code trop élevé"
    End If
ElseIf pays = "be" Then
    If code = 0 Then
        TTC = HTVA
    ElseIf code = 1 Then
        TTC = HTVA * 1.21
    ElseIf code = 2 Then
        TTC = HTVA * 1.12
    ElseIf code = 3 Then
        TTC = HTVA * 1.06
    ElseIf code <> 0 And code <> 1 And code <> 2 And code <> 3 Then
        TTC = "Code trop élevé"
    End If
End If
End Function
VB:
Function HT(TTC, code, Optional pays)
If pays = "fr" Then
    If code = 0 Then
        HT = TTC
    ElseIf code = 1 Then
        HT = TTC / 1.2
    ElseIf code = 2 Then
        HT = TTC / 1.1
    ElseIf code = 3 Then
        HT = TTC / 1.055
    ElseIf code = 4 Then
        HT = TTC / 1.021
    ElseIf code <> 0 And code <> 1 And code <> 2 And code <> 3 And code <> 4 Then
        HT = "Code trop élevé"
    End If
ElseIf pays = "ch" Then
    If code = 0 Then
        HT = TTC
    ElseIf code = 1 Then
        HT = TTC / 1.077
    ElseIf code = 2 Then
        HT = TTC / 1.037
    ElseIf code = 3 Then
        HT = TTC / 1.025
    ElseIf code <> 0 And code <> 1 And code <> 2 And code <> 3 Then
        HT = "Code trop élevé"
    End If
ElseIf pays = "be" Then
    If code = 0 Then
        HT = TTC
    ElseIf code = 1 Then
        HT = TTC / 1.21
    ElseIf code = 2 Then
        HT = TTC / 1.12
    ElseIf code = 3 Then
        HT = TTC / 1.06
    ElseIf code <> 0 And code <> 1 And code <> 2 And code <> 3 Then
        HT = "Code trop élevé"
    End If
End If
End Function

Je suis pratiquement certain qu'il existe un moyen d'améliorer cette fonction, alors comme d'habitude, je suis ouvert à toute amélioration.

Voici un fichier qui explique comment utiliser cette fonction.

V1 TVA : Daniel
V2 TVA : Etoto
V3 TVA : @dysorthographie
Créateur TTC : Daniel
Amélioration TTC : Etoto
Créateur HT : Etoto


Cordialement
 

Pièces jointes

  • TVA, TTC et HT.xlsm
    18.2 KB · Affichages: 83
Dernière édition:

dysorthographie

XLDnaute Accro
bonjour,
pour rajouter des élément des select case c'est mieux!
notes également que tu peux définir des valeur par défaut à des paramètreso ptionnels!

j'ai rajouté TVA_particulier en vigueur en France bien que je doute que les particuliers face une déclaration au percepteur !
VB:
Enum TvaType
    Pas_Tva
    Tva_Normal ' 20 %
    Tva_Intermédiaire ' 10 %
    TVA_Réduit '5,5 %
    TVA_particulier '2,1 %
End Enum
Function TVA(HTVA, Optional code As TvaType = Tva_Normal, Optional pays = "FR")
Select Case UCase(pays)
    Case "FR"
        Select Case code
            Case 0: TVA = 0
            Case 1: TVA = 0.2
            Case 2: TVA = 0.1
            Case 3: TVA = 0.055
            Case 4: TVA = 0.021
            Case Else: TVA = "Code trop élevé"
        End Select
    Case "CH"
        Select Case code
               Case 0: TVA = 0
               Case 1: TVA = 0.077
               Case 2: TVA = 0.037
               Case 3: TVA = 0.025
               Case Else: TVA = "Code trop élevé"
           End Select
    Case "BE"
        Select Case code
               Case 0: TVA = 0
               Case 1: TVA = 0.21
               Case 2: TVA = 0.12
               Case 3: TVA = 0.06
               Case Else: TVA = "Code trop élevé"
           End Select
End Select
If TVA <> "Code trop élevé" Then TVA = HTVA * TVA
End Function
Sub test()
Debug.Print TVA(100), TVA(100, Tva_Intermédiaire), TVA(100, pays:="CH")
End Sub
 
Dernière édition:

Etoto

XLDnaute Barbatruc
bonjour,
pour rajouter des élément des select case c'est mieux!
notes également que tu peux définir des valeur par défaut à des paramètreso ptionnels!

j'ai rajouté TVA_particulier en vigueur en France bien que je doute que les particuliers face une déclaration au percepteur !
VB:
Enum TvaType
    Pas_Tva
    Tva_Normal ' 20 %
    Tva_Intermédiaire ' 10 %
    TVA_Réduit '5,5 %
    TVA_particulier '2,1 %
End Enum
Function TVA(HTVA, Optional code As TvaType = Tva_Normal, Optional pays = "FR")
Select Case UCase(pays)
    Case "FR"
        Select Case code
            Case 0: TVA = 0
            Case 1: TVA = 0.2
            Case 2: TVA = 0.1
            Case 3: TVA = 0.055
            Case 4: TVA = 0.021
            Case Else: TVA = "Code trop élevé"
        End Select
    Case "CH"
        Select Case code
               Case 0: TVA = 0
               Case 1: TVA = 0.077
               Case 2: TVA = 0.037
               Case 3: TVA = 0.025
               Case Else: TVA = "Code trop élevé"
           End Select
    Case "BE"
        Select Case code
               Case 0: TVA = 0
               Case 1: TVA = 0.21
               Case 2: TVA = 0.12
               Case 3: TVA = 0.06
               Case Else: TVA = "Code trop élevé"
           End Select
End Select
If TVA <> "Code trop élevé" Then TVA = HTVA * TVA
End Function
Sub test()
Debug.Print TVA(100), TVA(100, Tva_Intermédiaire), TVA(100, pays:="CH")
End Sub
Re,

Super, je connais le select case mais n'étant pas un pro dans ce domaine, j'ai préféré faire avec des If. En tout cas merci de ton amélioration et je vais de ce pas la garder comme fonction de base pour la TVA et je vais essayer de m'en inspirer pour les fonctions HT et TTC que j'améliorerai plus tard.

Cordialement
 

Discussions similaires