Pb de calcule de somme dans un label
Fermé
Sahmy021
Messages postés
17
Date d'inscription
dimanche 3 décembre 2017
Statut
Membre
Dernière intervention
7 décembre 2017
-
6 déc. 2017 à 22:23
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 8 déc. 2017 à 11:07
f894009 Messages postés 17205 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 19 octobre 2024 - 8 déc. 2017 à 11:07
A voir également:
- Pb de calcule de somme dans un label
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- Somme si ens date comprise entre ✓ - Forum Excel
- Le fichier contient le nombre de voyageurs dans 3 gares. dans la cellule b5, saisissez une formule qui calcule le total et se met à jour si on change une valeur du tableau. quel total obtenez-vous ? quelle formule avez-vous saisie ? ✓ - Forum Google Docs
- Barbara veut calculer automatiquement son budget dans un tableau. citez un des logiciels lui permettant de faire des calculs sur des tableaux de nombres (tableur). - Forum Musique / Radio / Clip
8 réponses
Utilisateur anonyme
6 déc. 2017 à 22:34
6 déc. 2017 à 22:34
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.
Sahmy021
Messages postés
17
Date d'inscription
dimanche 3 décembre 2017
Statut
Membre
Dernière intervention
7 décembre 2017
7 déc. 2017 à 00:04
7 déc. 2017 à 00:04
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
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
7 déc. 2017 à 07:16
7 déc. 2017 à 07:16
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
Utilisateur anonyme
Modifié le 7 déc. 2017 à 07:18
Modifié le 7 déc. 2017 à 07:18
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
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
7 déc. 2017 à 07:25
7 déc. 2017 à 07:25
Bonjour Whismeril, ca roule?
Je te conseille d’enlever l’€ et Si non, enlève l’espase
Non, pas besoin, c'est juste un probleme d'instruction de conversion
Je te conseille d’enlever l’€ et Si non, enlève l’espase
Non, pas besoin, c'est juste un probleme d'instruction de conversion
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
>
Utilisateur anonyme
7 déc. 2017 à 07:35
7 déc. 2017 à 07:35
Re,
Ca roule
« vérité générale », VBA étant très permissif
Ah Que oui, pour une personne qui ne connait pas vraiment la programmation en general.....!
Ca roule
« vérité générale », VBA étant très permissif
Ah Que oui, pour une personne qui ne connait pas vraiment la programmation en general.....!
Sahmy021
Messages postés
17
Date d'inscription
dimanche 3 décembre 2017
Statut
Membre
Dernière intervention
7 décembre 2017
7 déc. 2017 à 11:08
7 déc. 2017 à 11:08
Je confirme je pense tout vient du "." qui se transforme en ",".
Comment dois-je procédé ?
Comment dois-je procédé ?
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
>
Sahmy021
Messages postés
17
Date d'inscription
dimanche 3 décembre 2017
Statut
Membre
Dernière intervention
7 décembre 2017
7 déc. 2017 à 11:13
7 déc. 2017 à 11:13
Re,
Je confirme je pense tout vient du "."
Non, avez vous tester le code que j'ai mis post 3 !!!!!!!!!!!!!!!!!!!!!!!!!!!
Je confirme je pense tout vient du "."
Non, avez vous tester le code que j'ai mis post 3 !!!!!!!!!!!!!!!!!!!!!!!!!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
7 déc. 2017 à 15:01
7 déc. 2017 à 15:01
Re,
il me semble ?
C'est bon ou pas bon mais pas il me semble !!!!
il me semble ?
C'est bon ou pas bon mais pas il me semble !!!!
Sahmy021
Messages postés
17
Date d'inscription
dimanche 3 décembre 2017
Statut
Membre
Dernière intervention
7 décembre 2017
Modifié le 7 déc. 2017 à 15:47
Modifié le 7 déc. 2017 à 15:47
j'ai modifié ma reponse juste au-dessus ;-)
Je veux bien une petite explication si possible stp
Merci
Je veux bien une petite explication si possible stp
Merci
Sahmy021
Messages postés
17
Date d'inscription
dimanche 3 décembre 2017
Statut
Membre
Dernière intervention
7 décembre 2017
7 déc. 2017 à 16:09
7 déc. 2017 à 16:09
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é.
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
7 déc. 2017 à 17:57
7 déc. 2017 à 17:57
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???
Sahmy021
Messages postés
17
Date d'inscription
dimanche 3 décembre 2017
Statut
Membre
Dernière intervention
7 décembre 2017
7 déc. 2017 à 21:02
7 déc. 2017 à 21:02
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 ?
Utilisateur anonyme
7 déc. 2017 à 21:57
7 déc. 2017 à 21:57
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.
Sahmy021
Messages postés
17
Date d'inscription
dimanche 3 décembre 2017
Statut
Membre
Dernière intervention
7 décembre 2017
7 déc. 2017 à 23:09
7 déc. 2017 à 23:09
Ok mais je pense que je vais garder ma version elle devrait marcher partout je pense.
Merci pour l'astuce à mettre dans le Totaltxt
Merci pour l'astuce à mettre dans le Totaltxt
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
8 déc. 2017 à 07:57
8 déc. 2017 à 07:57
Bonjour,
non ça n'est pas possible, pas plus qu'il n'est possible de dire,
Avec un module de classe pour les textbox ca devrait le faire
non ça n'est pas possible, pas plus qu'il n'est possible de dire,
Avec un module de classe pour les textbox ca devrait le faire
f894009
Messages postés
17205
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
19 octobre 2024
1 709
8 déc. 2017 à 11:07
8 déc. 2017 à 11:07
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