Pb de calcule de somme dans un label
Sahmy021
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
f894009 Messages postés 17277 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je suis tréso d'une association et je souhaite faire un formulaire de saisie de ligne comptable ou cette dernière comprend des sous catégories (ventilation budgétaire).
J'aimerais faire un formulaire de saisies ou on saisie les montants des sous lignes et le calcule du total se fait en automatique dans un label.
voici mon code pour ce point :
Le pb c'est que :
- le calcul ne prend pas en compte les chiffre apres la virgule.
- Qd je re-sélectionne une textbox et que je fais [Enter],sans rien changer, il me zappe les chiffre après la virgule
Je pens eque ca vient d'un confli dans les format de décimal entre "." et ",".
je ne vois pas comment régler ce pb ! merci
Je suis tréso d'une association et je souhaite faire un formulaire de saisie de ligne comptable ou cette dernière comprend des sous catégories (ventilation budgétaire).
J'aimerais faire un formulaire de saisies ou on saisie les montants des sous lignes et le calcule du total se fait en automatique dans un label.
voici mon code pour ce point :
Private Sub TxbD1_AfterUpdate() TxbD1 = Format(Val(TxbD1.Value), "# ##0.00€") LblTotal.Caption = Format(Val(TxbD1.Value) + Val(TxbD2.Value) + Val(TxbD3.Value), "# ##0.00€") End Sub Private Sub TxbD2_AfterUpdate() TxbD2 = Format(Val(TxbD2.Value), "# ##0.00€") LblTotal.Caption = Format(Val(TxbD1.Value) + Val(TxbD2.Value) + Val(TxbD3.Value), "# ##0.00€") End Sub Private Sub TxbD3_AfterUpdate() TxbD3 = Format(Val(TxbD3.Value), "# ##0.00€") LblTotal.Caption = Format(Val(TxbD1.Value) + Val(TxbD2.Value) + Val(TxbD3.Value), "# ##0.00€") End Sub
Le pb c'est que :
- le calcul ne prend pas en compte les chiffre apres la virgule.
- Qd je re-sélectionne une textbox et que je fais [Enter],sans rien changer, il me zappe les chiffre après la virgule
Je pens eque ca vient d'un confli dans les format de décimal entre "." et ",".
je ne vois pas comment régler ce pb ! merci
A voir également:
- Pb de calcule de somme dans un label
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Label printer logiciel - Télécharger - Outils professionnels
- Somme en anglais excel - Guide
- Recherchev somme plusieurs lignes ✓ - Forum Excel
8 réponses
Bonsoir
même raison qu'ici
https://codes-sources.commentcamarche.net/forum/affich-10080770-calcul-de-l-age-grace-a-un-textbox-et-a-la-date-d-aujourd-hui#4
lui c'était une date, toi c'est un nombre.
même raison qu'ici
https://codes-sources.commentcamarche.net/forum/affich-10080770-calcul-de-l-age-grace-a-un-textbox-et-a-la-date-d-aujourd-hui#4
lui c'était une date, toi c'est un nombre.
Salut,
Je te demande un peu d’indulgence pour ce qui va suivre, mais j'ai zéro base en prog.
Donc si je comprend bien le pb viens du fait que qd j'utilise format, ce qui apparais dans la TXB est une chaine de caractère. c'est bien ca ?
Et du coup il n'arrive pas a additionner ? Pourtant je pensais que la fonction Val convertissait cette chaine de caractère en en valeur....
franchement je suis perdu !
je vois pas comment faire même après la lecture de :
https://docs.microsoft.com/fr-FR/office/vba/Language/Reference/User-Interface-Help/format-function-visual-basic-for-applications
merci
Je te demande un peu d’indulgence pour ce qui va suivre, mais j'ai zéro base en prog.
Donc si je comprend bien le pb viens du fait que qd j'utilise format, ce qui apparais dans la TXB est une chaine de caractère. c'est bien ca ?
Et du coup il n'arrive pas a additionner ? Pourtant je pensais que la fonction Val convertissait cette chaine de caractère en en valeur....
franchement je suis perdu !
je vois pas comment faire même après la lecture de :
https://docs.microsoft.com/fr-FR/office/vba/Language/Reference/User-Interface-Help/format-function-visual-basic-for-applications
merci
Bonjour,
une facon de faire:
une facon de faire:
Private Sub TxbD1_AfterUpdate() TxbD1 = Format(Val(TxbD1.Value), "# ##0.00€") Call Totaltxt End Sub Private Sub TxbD2_AfterUpdate() TxbD2 = Format(Val(TxbD2.Value), "# ##0.00€") Call Totaltxt End Sub Private Sub TxbD3_AfterUpdate() TxbD3 = Format(Val(TxbD3.Value), "# ##0.00€") Call Totaltxt End Sub Sub Totaltxt() If IsNumeric(TxbD1) Then Total = CDbl(TxbD1.Value) If IsNumeric(TxbD2) Then Total = Total + CDbl(TxbD2.Value) If IsNumeric(TxbD3) Then Total = Total + CDbl(TxbD3.Value) LblTotal.Caption = Format(Total, "# ##0.00€") End Sub
Bonjour
C’est le problème quand on débute en autodidacte, on part direct sur un projet et ce faisant on brule des étapes. J’ai fait pareil y’a longtemps....
Ce qui est écrit dans le textbox est toujours du texte. Val convertit bien ce texte en nombre, mais Format reconvertit le nombre en texte, et en plus y ajoute une unité.
Là tu te retrouve avec par exemple "1 234.12€" + "1 234.12€" + "1 234.12€" et Val qui doit se démerder avec un espace, un € et peut-être même le point si ton PC est configuré avec la virgule comme symbole décimal.
Je te conseille d’enlever l’€ dans le Format et de regarder si ça marche.
Si oui, alors pose un label à côté de chaque textBox dans lequel tu écris €.
Si non, enlève l’espase puis si besoin vérifie ton symbole décimal.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Salut,
Je te demande un peu d’indulgence pour ce qui va suivre, mais j'ai zéro base en prog.
C’est le problème quand on débute en autodidacte, on part direct sur un projet et ce faisant on brule des étapes. J’ai fait pareil y’a longtemps....
Donc si je comprend bien le pb viens du fait que qd j'utilise format, ce qui apparais dans la TXB est une chaine de caractère. c'est bien ca ?
Et du coup il n'arrive pas a additionner ? Pourtant je pensais que la fonction Val convertissait cette chaine de caractère en en valeur...
Ce qui est écrit dans le textbox est toujours du texte. Val convertit bien ce texte en nombre, mais Format reconvertit le nombre en texte, et en plus y ajoute une unité.
Là tu te retrouve avec par exemple "1 234.12€" + "1 234.12€" + "1 234.12€" et Val qui doit se démerder avec un espace, un € et peut-être même le point si ton PC est configuré avec la virgule comme symbole décimal.
Je te conseille d’enlever l’€ dans le Format et de regarder si ça marche.
Si oui, alors pose un label à côté de chaque textBox dans lequel tu écris €.
Si non, enlève l’espase puis si besoin vérifie ton symbole décimal.
Quand j'étais petit, la mer Morte n'était que malade.
George Burns
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
re-salut à tous,
Bon je crois que j'ai compris.... (j'ai bien dit je crois)
EN fait "If IsNumeric" vient tester la chaine de caractère de ma TxtBox. cela me permet de savoir si je dois utiliser "CDbl" ou "Val" pour convertir en nombre.
Du coup j'ai fait le code suivant qui marche :
Dans mon fichier définitif j'ai 15 TxtBox à additionner. Donc pour la "sub Totaltxt()" je devrais m'en sortir avec des "Controls()" et une boucle "For i=1 to 15"
Par contre est-il possible de faire une boucle pour les "Private Sub" ?
si pas possible je bourrinnerai ...^^
Encore merci pour votre patience et la disponibilité.
Bon je crois que j'ai compris.... (j'ai bien dit je crois)
EN fait "If IsNumeric" vient tester la chaine de caractère de ma TxtBox. cela me permet de savoir si je dois utiliser "CDbl" ou "Val" pour convertir en nombre.
Du coup j'ai fait le code suivant qui marche :
Private Sub TxbD1_AfterUpdate() If IsNumeric(TxbD1) Then TxbD1 = Format(CDbl(TxbD1.Value), "# ##0.00€") Else TxbD1 = Format(Val(TxbD1.Value), "# ##0.00€") End If Call Totaltxt End Sub Private Sub TxbD2_AfterUpdate() If IsNumeric(TxbD2) Then TxbD2 = Format(CDbl(TxbD2.Value), "# ##0.00€") Else TxbD2 = Format(Val(TxbD2.Value), "# ##0.00€") End If Call Totaltxt End Sub Private Sub TxbD3_AfterUpdate() If IsNumeric(TxbD3) Then TxbD3 = Format(CDbl(TxbD3.Value), "# ##0.00€") Else TxbD3 = Format(Val(TxbD3.Value), "# ##0.00€") End If Call Totaltxt End Sub Sub Totaltxt() If IsNumeric(TxbD1) Then Total = CDbl(TxbD1.Value) If IsNumeric(TxbD2) Then Total = Total + CDbl(TxbD2.Value) If IsNumeric(TxbD3) Then Total = Total + CDbl(TxbD3.Value) LblTotal.Caption = Format(Total, "# ##0.00€") End Sub
Dans mon fichier définitif j'ai 15 TxtBox à additionner. Donc pour la "sub Totaltxt()" je devrais m'en sortir avec des "Controls()" et une boucle "For i=1 to 15"
Par contre est-il possible de faire une boucle pour les "Private Sub" ?
si pas possible je bourrinnerai ...^^
Encore merci pour votre patience et la disponibilité.
Re,
Comprends pas votre histoire de val ou cdbl, chez moi pas besoin de ca
Par contre est-il possible de faire une boucle pour les "Private Sub" ?
Quelle boucle???
Comprends pas votre histoire de val ou cdbl, chez moi pas besoin de ca
Par contre est-il possible de faire une boucle pour les "Private Sub" ?
Quelle boucle???
Re
en fait si j'ai bien suivit :
Val traduit du texte en nombre qd il y a un "."
Cdbl traduit du text en nombre qd il y a une ","
pour la boucle :
vue que dans le fichier final j'aurais 15 TexteBox ben je vais etre obligé de répéter 15 fois la séquence suivante en changeant que le chiffre dans le nom de mes textbox:
je voulais savoir si il y a moyen de faire une boucle pour éviter CA.
Tu vois mieux ?
en fait si j'ai bien suivit :
Val traduit du texte en nombre qd il y a un "."
Cdbl traduit du text en nombre qd il y a une ","
pour la boucle :
vue que dans le fichier final j'aurais 15 TexteBox ben je vais etre obligé de répéter 15 fois la séquence suivante en changeant que le chiffre dans le nom de mes textbox:
Private Sub TxbD3_AfterUpdate() If IsNumeric(TxbD3) Then TxbD3 = Format(CDbl(TxbD3.Value), "# ##0.00€") Else TxbD3 = Format(Val(TxbD3.Value), "# ##0.00€") End If Call Totaltxt End Sub
je voulais savoir si il y a moyen de faire une boucle pour éviter CA.
Tu vois mieux ?
Bonsoir,
je viens de tester de mon coté.
En effet, quand le pc est configuré avec la virgule comme symbole décimal,
Y'a une subtilité qui m'échappe.
Cependant ceci
non ça n'est pas possible, pas plus qu'il n'est possible de dire, tous mes AfterUpdate pointent vers la même sub (en VB.net c'est possible).
Par contre, rien ne t'empêche de faire faire le boulot à Totaltxt (ou une autre sub)
Ça marche avec ou sans le Call.
je viens de tester de mon coté.
En effet, quand le pc est configuré avec la virgule comme symbole décimal,
- si je tape 1,5 dans un textbox avec Cdbl j'obtiens bien la conversion, et avec Val ça retourne 1
- si je tape 1.5 avec Cdbl, j'ai "incompatibilité de type" et avec Val j'ai la bonne conversion.
Y'a une subtilité qui m'échappe.
Cependant ceci
TextBox1.Text = Format(CDbl(Replace(TextBox1.Text, ".", ",")), "# ##0.00")résout le problème, attention ça ne marchera pas avec un PC dont le symbole décimal est le point.
Par contre est-il possible de faire une boucle pour les "Private Sub" ?
non ça n'est pas possible, pas plus qu'il n'est possible de dire, tous mes AfterUpdate pointent vers la même sub (en VB.net c'est possible).
Par contre, rien ne t'empêche de faire faire le boulot à Totaltxt (ou une autre sub)
Private Sub TextBox1_AfterUpdate() Totaltxt TextBox1 End Sub Private Sub TextBox2_AfterUpdate() Call Totaltxt(TextBox2) End Sub Sub Totaltxt(monTextBox) monTextBox.Text = Format(CDbl(Replace(monTextBox.Text, ".", ",")), "# ##0.00") If IsNumeric(TextBox1.Text) Then Total = CDbl(TextBox1.Value) If IsNumeric(TextBox2.Text) Then Total = Total + CDbl(TextBox2.Value) Label1.Caption = Format(Total, "# ##0.00€") End Sub
Ça marche avec ou sans le Call.
Bonjour,
Fichier avec module de classe pour les textbox (a modifier si il y a d'autres textbox que celles qui sont pour le calcul, mais c'est l'evidence..)
Pour les textbox, je prend le separateur decimal utilise par excel pour avoir le bon separateur
Par contre pas de Afterupdate(!!), j'ai pris keyup qui va tres bien mais, en contre partie pour le format pas marche mais bon....Peut-etre faisable, ai pas cherche
Cote format pour le label, vba excel ne demord pas de sa virgule
https://www.cjoint.com/c/GLikgrQyGrf
Fichier avec module de classe pour les textbox (a modifier si il y a d'autres textbox que celles qui sont pour le calcul, mais c'est l'evidence..)
Pour les textbox, je prend le separateur decimal utilise par excel pour avoir le bon separateur
Par contre pas de Afterupdate(!!), j'ai pris keyup qui va tres bien mais, en contre partie pour le format pas marche mais bon....Peut-etre faisable, ai pas cherche
Cote format pour le label, vba excel ne demord pas de sa virgule
https://www.cjoint.com/c/GLikgrQyGrf