Problème de calcul en VBA

Bonsoir,

Après quelques jours de recherche je me mélange les pinceaux du coup je vient demander de l'aide,

Je termine tout doucement mon programme "gestion vente" pour mon activité avec UserForm donc VBA

Ici voici le code que j'ai pour qu'il me calcul les montant TVA + TVAC de ma ligne (ou je rentre les données de la vente) :

If TextBox19.Value = "" Then TextBox20.Value = "": Exit Sub

TextBox19.Value = Format(CCur(TextBox19.Value), "# ###0.00 €") 'Format en €

TextBox20.Value = Val(Replace(TextBox19.Value, ",", ".")) * Val(TextBox18.Value) 'prix HTVA

TextBox20.Value = Format(CCur(TextBox20.Value), "# ###0.00 €") 'Format en €

TextBox21.Value = (CDbl(TextBox20.Value) * (CDbl(ComboBox1.Value) / 100)) 'Montant de la TVA

TextBox21.Value = Format(CCur(TextBox21.Value), "# ###0.00 €") 'Format en €

TextBox22.Value = Val(Replace(TextBox20.Value, ",", ".")) + Val(Replace(TextBox21.Value, ",", ".")) 'Total TVAC

TextBox22.Value = Format(CCur(TextBox22.Value), "# ###0.00 €") 'Format en €

Le problème vient à la ligne :

" TextBox21.Value = (CDbl(TextBox20.Value) * (CDbl(ComboBox1.Value) / 100)) 'Montant de la TVA"

A la base le code fonctionnais avec "Val" au lieu de "CDbl" mais le calcul du montant de la TVA (donc Montant HTVA * 0.21 par exemple) ne fonctionnais pas correctement au cents prêt. Au lieu de 36.23 il m'affichait par exemple 35.89 ou quelques choses comme sa.

J'ai donc penser qu'il fessais le calcul uniquement avec 2 décimales et donne donc un mauvais résultat.

Du coup j'essaie avec "CDbl" La ici sa fonctionne mieux, mais dés que le nombre devient trop conséquent j'ai une erreur

"erreur 13 incompatibilité de type"

Pour par exemple

QTS / HTVA

5 / 150 Réponse OK

100 / 100 Erreur 13 ....

Du coup je ne sais plus quoi faire :'(

Bonjour Geoffrey,

essaye :

TextBox21.Value = CDbl(Replace$(TextBox20.Value, ",", ".")) * CDbl(Replace$(ComboBox1.Value, ",", ".")) / 100 'Montant de la TVA

(si c'est pas ça, ce serait plus facile de trouver une solution avec ton fichier !)

dhany

Merci d'avoir regarder,

Non il calcule encore + que le taxes de base lol sur 50€ -> 1050€ de TVA Mdr ...

Voici le fichier

Le bouton de l'userform est sur la page Facture (feuille excel)

24test-2.xlsm (450.73 Ko)

Bonsoir,

Tu donnes peu d'éléments pour mener à bien une quelconque investigation sur le problème...

Ce qui est sûr, c'est que si tu utilises des nombres provenant de TextBox où ils sont affichés avec 2 décimales, seules ces deux décimales pourront participer aux calculs.

Il me semble t'avoir conseillé ailleurs de faire un choix en matière du type de données numériques que tu utilises. Le mélange que tu fais n'est pas la meilleure chose.

Maintenant peut-être pourrais-tu envisager de conserver tes valeurs et résultats de calculs sous forme numérique, et n'utiliser les TextBox que pour l'affichage de résultats ?

Cela éviterait des conversions permanentes...

Cordialement.

Certainement oui, c'est Mr "These" du forum qui ma fait le code en question et j'avoue il fonctionne bien

étant novice je me démerde avec ce qu'on me donne ...

Du coup voila je suppose qu'il existe bien une solution à ce problème..

Je suis presque à la fin tout fonctionne juste cela... je n'aimerais abandonner aussi prêt du but...

J'aimerais que mon programme fonctionne entièrement en Userform du coup ...

je suis en train de voir ton fichier ; j'ai déjà amélioré le code VBA de tes 2 modules ; patiente encore : je dois voir la suite.

dhany

Merci Dhany

Du coup voila je suppose qu'il existe bien une solution à ce problème..

Ma foi ! Problème de calcul => faire des calculs dont la précision répond à l'objectif visé...

Bonjour Geoffrey,

je te retourne ton fichier modifié :

20test-2.xlsm (457.36 Ko)

je te laisse faire les tests.


code VBA : j'ai modifié beaucoup de choses, alors regarde bien tout ceci :

Module1 ; Module2 ; module de la feuille "Facture" ; code VBA du UserForm2

à te lire pour avoir ton avis.

dhany

Bonjour, merci c'est top comme sa

Le VBA de la feuille Facture ne sert plus à rien une fois le programme UserForm fini :/

Et du coup, hier j'avait terminer mon code regarde mon fichier :

(il y à pas tes changements mais je le ferait)

et donc moi j'ai copier/coller plusieurs fois le même code de la ligne 1 pour la 2 , 3 4 5 6 7 8 9 et 10éme ligne de mon userform

Il y à surement plus simple.

Et donc si je prend ton code

Private Sub TextBox19_AfterUpdate()

Dim PUHT!, HT!, TVA!, TTC!

With TextBox19

If .Value = "" Then TextBox20 = "": Exit Sub

PUHT = Round(Val(Replace$(.Value, ",", ".")), 2)

.Value = Format(PUHT, "# ##0.00 EURO"): .ForeColor = IIf(PUHT < 1, vbRed, vbGreen)

End With

HT = Round(PUHT * Val(TextBox18), 2): TextBox20 = Format(HT, "# ##0.00")

TVA = Round(HT * Val(ComboBox1) / 100, 2): TTC = HT + TVA

TextBox21 = Format(TVA, "# ##0.00") 'Montant de la TVA

TextBox22 = Format(TTC, "# ##0.00") 'Total TVAC

End Sub

Je recopie donc 10x sa en changeant les n° de combo et textbox ?

12test-2-copie.xlsm (478.68 Ko)

Bonjour Geoffrey,

Tu a écrit :

Je recopie donc 10x ça en changeant les n° de combo et textbox ?

oui, c'est exactement ça ! sauf que je l'ai déjà fait pour toi :

17test-3.xlsm (466.27 Ko)

t'as plus qu'à tout vérifier ! (bon courage pour les tests ! )

je suis parti du fichier "test (2).xlsm" de mon post du 2 juillet à 05:14

pas de ton fichier "test (2) - Copie.xlsm" de ton précédent post.

dhany

Rechercher des sujets similaires à "probleme calcul vba"