Calcul Tva

Résolu/Fermé
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 - 21 déc. 2012 à 13:49
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 - 23 déc. 2012 à 03:12
Bonjour,

j'ai fait un userform pour me calculer la tva et je n'arrive pas a effectuer certains calculs comme il faut et leur format .
je voudrais que la somme s'arrete a 2 chiffres apres la virgule et arrondir au plus pres
je vous mets mon fichier joint
https://www.cjoint.com/?BLvnVzik4NW
merci de votre aide
a bientot

A voir également:

4 réponses

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
21 déc. 2012 à 15:50
Bonjour surplus,

Je regarde à ton fichier .. peux-tu me donner plus de précision ?

Le format, ça, j'ai compris
Mais c'est surtout pour les calculs .. quels sont les numéros des TextBox avec lesquels tu as des difficultés ?

Est-ce que c'est "7%" ou "7.5%" .. car dans l'affichage, j'ai 7% mais dans le code 7.5% !!!
0
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
21 déc. 2012 à 17:28
bonjour
excuse c'est vrai c'est 7% le calcul
en fait c'est celui qui est en commentaire et les additions ne se font pas bien textbox1+textbox2
l'addition n'est pas correcte
merci
0
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
21 déc. 2012 à 21:40
Re
personne pour dépanner?
a bientot
0
Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
21 déc. 2012 à 22:07
Bonsoir surplus,

Tu n'as pas beaucoup de patience à ce que je vois .. alors je te donne le classeur en l'état. Il n'est donc pas terminé ..
A toi de le finir .. http://cjoint.com/12dc/BLvweEyorm5.htm

Bonne fête de Noël.
0
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
Modifié par surplus le 21/12/2012 à 23:00
bonsoir heliotte,
j'ai de la patience sans problème si on me dit d'attendre mais la je te pensais déjà en weekend lol
je voudrais pas te froisser je vais faire avec ce que tu me donnes
merci
Bonnes fêtes
a bientot
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
22 déc. 2012 à 00:58
Bonsoir,

Si tu veux arrondir à 2 décimales, utilises la fonction ROUND(????, 2).
Ca donnera :
Private Sub TextBox18_Change()
    ' Frame1 : "Du HT Au TTC", "Montant HT"
    Me.TextBox17.Text = Round(Round(TextBox18.Text, 2) * Prct(TVA1), 2) ' TTC, TVA1
    Me.TextBox6.Text = Round(Round(TextBox17.Text, 2) - Round(TextBox18.Text, 2), 2) ' TVA, TVA1
    Me.TextBox2.Text = Round(Round(TextBox18.Text, 2) * Prct(TVA2), 2) ' TTC, TVA2
    Me.TextBox4.Text = Round(Round(TextBox2.Text, 2) - Round(TextBox18.Text, 2), 2) ' TVA2
    Me.TextBox1.Text = Round(Round(TextBox18.Text, 2) * Prct(TVA3), 2) ' TTC, TVA3
    Me.TextBox5.Text = Round(Round(TextBox1.Text, 2) - Round(TextBox18.Text, 2), 2) ' TVA, TVA3
End Sub

et
Private Sub TextBox25_Change()
    ' Frame2 : "Du TTC Au HT", "Montant TTC"
    Me.TextBox24.Text = Round(Round(TextBox25.Text, 2) / Prct(TVA1), 2) ' HT, TVA1
    Me.TextBox23.Text = Round(Round(TextBox25.Text, 2) - Round(TextBox24.Text, 2), 2) ' TVA, TVA1
    Me.TextBox20.Text = Round(Round(TextBox25.Text, 2) / Prct(TVA2), 2) ' HT, TVA2
    Me.TextBox21.Text = Round(Round(TextBox25.Text, 2) - Round(TextBox20, 2), 2) ' TVA, TVA2
    Me.TextBox19.Text = Round(Round(TextBox25.Text, 2) / Prct(TVA3), 2) ' HT, TVA3
    Me.TextBox22.Text = Round(Round(TextBox25.Text, 2) - Round(TextBox19, 2), 2) ' TVA, TVA3
End Sub

Pour l'entrée TVA, il faut savoir que tu peux trouver plusieurs HT qui répondent à la question.
Tu auras peut-être intérêt à fournir la valeur inférieure et supérieure du HT qui fournit ta TVA.
En dehors de ça, ta formule n'est pas bonne. Il faut diviser par le taux.
Dans le code qui suit, j'ai dénaturé tes textboxes TTC pour y mettre le HT mini et j'ai laissé dans HT le HT maxi.
Fait un essai avec une TVA de 0,20 pour te convaincre des écarts.
Private Sub TextBox32_Change()
    ' Frame3 : "Da la TVA au HT", "Montant TVA"
    'If ((CDbl(TextBox31.Text) <> 0) And (CDbl(TextBox32.Text) <> 0)) Then
    If (TextBox32.Text <> "" And TextBox32.Text <> ".") Then
        Me.TextBox31.Text = WorksheetFunction.RoundDown((Round(TextBox32.Text, 2) + 0.00499999999999) * 100 / TVA1, 2) ' HT, TVA1
        Me.TextBox27.Text = WorksheetFunction.RoundDown((Round(TextBox32.Text, 2) + 0.00499999999999) * 100 / TVA2, 2) ' HT, TVA2
        Me.TextBox26.Text = WorksheetFunction.RoundDown((Round(TextBox32.Text, 2) + 0.00499999999999) * 100 / TVA3, 2) ' HT, TVA3
        
        Me.TextBox30.Text = WorksheetFunction.RoundUp((Round(TextBox32.Text, 2) - 0.00499999999999) * 100 / TVA1, 2) ' HT, TVA1
        Me.TextBox28.Text = WorksheetFunction.RoundUp((Round(TextBox32.Text, 2) - 0.00499999999999) * 100 / TVA2, 2) ' HT, TVA2
        Me.TextBox29.Text = WorksheetFunction.RoundUp((Round(TextBox32.Text, 2) - 0.00499999999999) * 100 / TVA3, 2) ' HT, TVA3
    End If
    'Me.TextBox30.Text = CDbl(TextBox31.Text) * 5.5 / 100 ' TTC, TVA1
'    Me.TextBox30.Text = CDbl(TextBox31.Text) * PrctInv(TVA1) ' TTC, TVA1
    'Me.TextBox28.Text = CDbl(TextBox27.Text) + CDbl(TextBox32.Text) ' TTC, TVA2
'    Me.TextBox28.Text = CDbl(TextBox27.Text) + CDbl(TextBox32.Text) ' TTC, TVA2
    'Me.TextBox29.Text = CDbl(TextBox32.Text) + CDbl(TextBox31.Text) ' TTC, TVA3
'    Me.TextBox29.Text = CDbl(TextBox32.Text) + CDbl(TextBox31.Text) ' TTC, TVA3
End Sub

Pour finir, tu devrais contrôler le nbre de décimales saisies pour n'en accepter que 2.

Cordialement

PS : j'ai pris le code d'Heliotte et je n'ai pas vérifié les écarts par rapport à ton code d'origine.
0
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
22 déc. 2012 à 02:06
bonsoir
je pensais pas que ce serait si difficile de mettre 18 calculs en place
le fichier est bon sur les 2 premières frames
la 3eme frame a des erreurs de calculs sur les valeurs TTC qui devraient être égal a
montant TVA+ HT
je vous mets le dernier fichier avec les modifs avec une feuille avec les calculs pour comparer
https://www.cjoint.com/?BLwcds2e4XW
autre soucis pour meilleure esthétique si on efface les valeurs entrés dans les cases "montant"
est il possible de vider les autres listbox car la ça garde les valeurs?
merci
a bientôt
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
Modifié par JvDo le 22/12/2012 à 03:23
A fait, pourquoi passes-tu par un formulaire?
Une simple feuille de calcul ne suffisait pas? Ta feuille 1 est très bien.

Pour le 3ème frame, c'est normal que je TTC soit faux puisque, comme je l'ai indiqué dans mon message, j'ai utilisé tes textboxes TTC pour y faire apparaître les limites inf et sup du HT calculé à partir de la TVA.

Si je reprends l'exemple de ta feuille 1, tu as saisi 3,00€ de TVA et tu trouves 42,86€ de HT pour une TVA de 7%.
Il se trouve que tous les HT de 42,79€ à 42,92€ donnent 3,00€ de TVA à 7%.
C'est parce que la fonction de calcul de TVA n'est pas injective dans le monde des nombres à 2 décimales..
Qu'est-ce qui te fait choisir 42,86€ de HT plutôt que 42,83€ ou n'importe quelle valeur parmi les 14 possibles?
Je comprends bien que 42,86€ de HT se calcule directement et se trouve au milieu de toutes les possibilités mais si tu espères lettrer des listes de HT à partir de montant de TVA, tu risques d'avoir des écarts.

Ceci dit, si 42,86€ de HT est pour toi le bon résultat, moi ça me va.

Tu feras attention, dans mon code, j'ai mis le point en séparateur décimal vu que ce sont mes options régionales.

Pour l'effacement des textboxes lorsque les données sources sont effacées, il suffit de rajouter un Else avec une affectation de la chaîne vide à chaque textbox :
Private Sub TextBox18_Change()
    ' Frame1 : "Du HT Au TTC", "Montant HT"
    If (TextBox18.Text <> "" And TextBox18.Text <> ".") Then
        Me.TextBox17.Text = Round(Round(TextBox18.Text, 2) * Prct(TVA1), 2) ' TTC, TVA1
        Me.TextBox6.Text = Round(Round(TextBox17.Text, 2) - Round(TextBox18.Text, 2), 2) ' TVA, TVA1
        Me.TextBox2.Text = Round(Round(TextBox18.Text, 2) * Prct(TVA2), 2) ' TTC, TVA2
        Me.TextBox4.Text = Round(Round(TextBox2.Text, 2) - Round(TextBox18.Text, 2), 2) ' TVA2
        Me.TextBox1.Text = Round(Round(TextBox18.Text, 2) * Prct(TVA3), 2) ' TTC, TVA3
        Me.TextBox5.Text = Round(Round(TextBox1.Text, 2) - Round(TextBox18.Text, 2), 2) ' TVA, TVA3
    Else
        Me.TextBox17.Text = "" ' TTC, TVA1
        Me.TextBox6.Text = "" ' TVA, TVA1
        Me.TextBox2.Text = "" ' TTC, TVA2
        Me.TextBox4.Text = "" ' TVA2
        Me.TextBox1.Text = "" ' TTC, TVA3
        Me.TextBox5.Text = "" ' TVA, TVA3
    End If
End Sub


ensuite :
Private Sub TextBox25_Change()
    ' Frame2 : "Du TTC Au HT", "Montant TTC"
    If (TextBox25.Text <> "" And TextBox25.Text <> ".") Then
        Me.TextBox24.Text = Round(Round(TextBox25.Text, 2) / Prct(TVA1), 2) ' HT, TVA1
        Me.TextBox23.Text = Round(Round(TextBox25.Text, 2) - Round(TextBox24.Text, 2), 2) ' TVA, TVA1
        Me.TextBox20.Text = Round(Round(TextBox25.Text, 2) / Prct(TVA2), 2) ' HT, TVA2
        Me.TextBox21.Text = Round(Round(TextBox25.Text, 2) - Round(TextBox20, 2), 2) ' TVA, TVA2
        Me.TextBox19.Text = Round(Round(TextBox25.Text, 2) / Prct(TVA3), 2) ' HT, TVA3
        Me.TextBox22.Text = Round(Round(TextBox25.Text, 2) - Round(TextBox19, 2), 2) ' TVA, TVA3
    Else
        Me.TextBox24.Text = "" ' HT, TVA1
        Me.TextBox23.Text = "" ' TVA, TVA1
        Me.TextBox20.Text = "" ' HT, TVA2
        Me.TextBox21.Text = "" ' TVA, TVA2
        Me.TextBox19.Text = "" ' HT, TVA3
        Me.TextBox22.Text = "" ' TVA, TVA3
    End If
End Sub


et enfin :
Private Sub TextBox32_Change()
    ' Frame3 : "Da la TVA au HT", "Montant TVA"
    'If ((CDbl(TextBox31.Text) <> 0) And (CDbl(TextBox32.Text) <> 0)) Then
    If (TextBox32.Text <> "" And TextBox32.Text <> ".") Then
        Me.TextBox31.Text = WorksheetFunction.RoundDown((Round(TextBox32.Text, 2) + 0.00499999999999) * 100 / TVA1, 2) ' HT, TVA1
        Me.TextBox27.Text = WorksheetFunction.RoundDown((Round(TextBox32.Text, 2) + 0.00499999999999) * 100 / TVA2, 2) ' HT, TVA2
        Me.TextBox26.Text = WorksheetFunction.RoundDown((Round(TextBox32.Text, 2) + 0.00499999999999) * 100 / TVA3, 2) ' HT, TVA3
        
        Me.TextBox30.Text = WorksheetFunction.RoundUp((Round(TextBox32.Text, 2) - 0.00499999999999) * 100 / TVA1, 2) ' HT, TVA1
        Me.TextBox28.Text = WorksheetFunction.RoundUp((Round(TextBox32.Text, 2) - 0.00499999999999) * 100 / TVA2, 2) ' HT, TVA2
        Me.TextBox29.Text = WorksheetFunction.RoundUp((Round(TextBox32.Text, 2) - 0.00499999999999) * 100 / TVA3, 2) ' HT, TVA3
    Else
        Me.TextBox31.Text = "" ' HT, TVA1
        Me.TextBox27.Text = "" ' HT, TVA2
        Me.TextBox26.Text = "" ' HT, TVA3
        
        Me.TextBox30.Text = "" ' HT, TVA1
        Me.TextBox28.Text = "" ' HT, TVA2
        Me.TextBox29.Text = "" ' HT, TVA3
    End If
    'Me.TextBox30.Text = CDbl(TextBox31.Text) * 5.5 / 100 ' TTC, TVA1
'    Me.TextBox30.Text = CDbl(TextBox31.Text) * PrctInv(TVA1) ' TTC, TVA1
    'Me.TextBox28.Text = CDbl(TextBox27.Text) + CDbl(TextBox32.Text) ' TTC, TVA2
'    Me.TextBox28.Text = CDbl(TextBox27.Text) + CDbl(TextBox32.Text) ' TTC, TVA2
    'Me.TextBox29.Text = CDbl(TextBox32.Text) + CDbl(TextBox31.Text) ' TTC, TVA3
'    Me.TextBox29.Text = CDbl(TextBox32.Text) + CDbl(TextBox31.Text) ' TTC, TVA3
End Sub


Je te laisse corriger le montant TTC du 3ème frame si mes bornesinf et sup ne t'intéressent pas.

Cordialement
0
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
22 déc. 2012 à 05:04
bonsoir
je passe par un userform car le fichier est pour une amie et si je lui donne une feuille elle va effacer les formules en moins de 2 alors qu'en userform les calculs sont sécurisés
quand aux calculs de tva je me suis pas vraiment penché 42,88 est un chiffre au hasard
la 3eme frame je pense pas qu'elle s'en serve beaucoup
il faudrait faire quoi pour etre au plus juste dans les calculs en fait?
les points je les laisse ou je dois mettre des "virgules" a la place?
merci
a bientot
0
surplus Messages postés 675 Date d'inscription mardi 17 août 2010 Statut Membre Dernière intervention 14 novembre 2021 4
22 déc. 2012 à 12:13
bonjour
apres essai les totaux TTC du 3eme frame sont faux
merci de ton aide
a bientôt
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 856
22 déc. 2012 à 20:22
Bonsoir,

1) tu peux utiliser une feuille de calcul avec protection en ne dévérouillant que les 3 cellules de saisie. Ainsi, plus de problème d'effacement des formules. Pour la protection, pas obligé de mettre un mot de passe, tu peux le laisser à vide, ça évite de s'en souvenir.
Sur ta dernière feuille exemple, c'est déjà le cas. Il ne te reste plus qu'à faire Révision\Protéger la feuille + Valider et le tour est joué.
Au passage, tu verras que tu passes d'une cellule non verouillée à la suivante par un TAB et à la précédente par un SHIFT+TAB.

2) maintenant, si je reprends le formulaire, je pense qu'il faut que tu remettes une virgule et que tu modifies la formule du TTC..
Quand tu dis que tu as testé les totaux TTC et qu'ils sont faux, quelle formule as-tu utilisé?
Si tu as laissé mes formules, c'est normal que ce soit faux puisque (je te l'ai déjà dit) je ne calcule pas le TTC mais une borne inf du HT.
Si tu veux ton TTC, tu reprends ta formule de la feuille de calcul : HT+TVA

3) Pour le calcul du HT à partir soit de la TVA, soit du TTC, tu obtiendras plusieurs valeurs de HT du fait de l'arrondi à la 2ème décimale.
Il suffit de choisir : soit tu veux un résultat unique fourni par tes formules, soit tu souhaites obtenir un intervalle de résultats possibles dont tu peux afficher les bornes.
Ce choix dépend des besoins de l'utilisateur.

Cordialement
0