Problème Valeur textbox [VBA Excel 2007]

Résolu/Fermé
Gornarf
Messages postés
122
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
15 mai 2014
- 12 août 2011 à 09:28
Gornarf
Messages postés
122
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
15 mai 2014
- 12 août 2011 à 12:22
Bonjour à tous,

Je fais appel à vous car je rencontre un problème avec mon Usf

Explications: Je développe un outils (de calcul) pour le boulot. Plutot que de le créer sur Excel même avec les formules excel qui génèrent des problèmes d'incompatibilité de version je suis passé d'une version excel 100% à une version excel/vb à une version 100%vb mais toujours sous excel.

Par soucis du détails (je débute en Vb) j'ai masquer les feuilles etc et je programmerai le lancement de l'usf au démarrage d'éxcel. Soit!

Mon probleme est le suivant:

J'utilise des Textbox pour entrer des montants:

Elles sont paramétrées pour que le text ne soit pas accepté, avec la virgule ou le point converti en virgule comme séparateur décimal etc, pas de soucis à ce niveau.

Je peux donc rentrer dans montants tels que 125,50 dans mes textbox sans problèmes mais

Une fois que je veux dans ma dernière Textbox le total des Textbox présentes sur la page (j'utilise un multipage) le totam est un nombre entier:

Exemple: Textbox1 =125,50 , autres textbox vides, résultat = 125


Comment faire pour avoir le résultat exact, virgules comprise?

Le code utilisé pour l'addition des textbox est le suivant:



[code] TextBox49.Value = Val(TextBox41.Value) + Val(TextBox42.Value) + Val(TextBox43.Value) + Val(TextBox44.Value) + Val(TextBox45.Value) + Val(TextBox46.Value) + Val(TextBox47.Value) + Val(TextBox48.Value) /code

D'avance merci pour vos réponses.

Gornarf

6 réponses

Gornarf
Messages postés
122
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
15 mai 2014
3
12 août 2011 à 12:22
Bon

Après moultes essai, recherches et réflexions il s'avère que j'ai trouvé la solution à mon problème, tout seul comme un grand.

Ce n'est peut être pas la solution la plus court d'un point de vue "encodage" mais elle peut s'appliquer dans mon cas.

Etant donné qu'en utilisant Cdbl lorsqu'un champ est vide ca génère une erreur, j'ai fait en sorte que, lorsqu'un champ est vide (étant donné que je fais des calculs sur bases d'infos encodées) ce champ (txtbox) est égal à zéro.

La méthode qui m'est venue à l'esprit est la suivante:

[/code] Private Sub CommandButton18_Click()

If TextBox41.Value = "" And TextBox42.Value = "" And TextBox43.Value = "" And TextBox44.Value = "" And TextBox45.Value = "" And TextBox46.Value = "" And TextBox47.Value = "" And TextBox48.Value = "" Then

TextBox41.Value = ""
TextBox42.Value = ""
TextBox43.Value = ""
TextBox44.Value = ""
TextBox45.Value = ""
TextBox46.Value = ""
TextBox47.Value = ""
TextBox48.Value = ""
TextBox49.Value = ""
TextBox8.Value = ""

MsgBox "veuillez remplir au moins un champ ou indiquer que ce poste à une valeur totale nulle!", vbOKOnly + vbCritical, "ERREUR"

Exit Sub

End If

If TextBox41 = "" Then
TextBox41 = "0"

End If

If TextBox42 = "" Then
TextBox42 = "0"

End If

If TextBox43 = "" Then
TextBox43 = "0"

End If

If TextBox44 = "" Then
TextBox44 = "0"

End If

If TextBox45 = "" Then
TextBox45 = "0"

End If

If TextBox46 = "" Then
TextBox46 = "0"

End If

If TextBox47 = "" Then
TextBox47 = "0"

End If

If TextBox48 = "" Then
TextBox48 = "0"

End If

TextBox49.Value = CDbl(TextBox41.Value) + CDbl(TextBox42.Value) + CDbl(TextBox43.Value) + CDbl(TextBox44.Value) + CDbl(TextBox45.Value) + CDbl(TextBox46.Value) + CDbl(TextBox47.Value) + CDbl(TextBox48.Value)
TextBox8 = TextBox49.Value

End Sub [/code]


Voila. si quelqu'un connait une manière plus rapide de faire je suis néanmoins preneur, si d'autres sont intéressés par la solution elle est a votre disposition.

Merci à toi Chossette pour avoir essayé tant bien que mal de m'aider ;-)
1
chossette9
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 310
12 août 2011 à 09:31
Bonjour,

je n'ai jamais trop utilisé les additions de TextBox, mais n'est-ce pas le Val(TextBox.Value) qui te transforme ta valeur en entier ? Pourquoi ne pas mettre directement TextBox41.Value + ... + TextBox48.Value ?

Cordialement.
0
Gornarf
Messages postés
122
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
15 mai 2014
3
12 août 2011 à 09:35
Coucou Chossette,

je pense avoir essayé, lorsque je mets ca la réponse dans la textbox49 est TextBox41.Value + ... + TextBox48.Value... mais je retest et te dis quoi.

Ce qui est illogique concernant le résultat de cette opération c'est que normalement pour avoir une réponse alphabétique il aurait fallu mettre des " " en balise...
0
Gornarf
Messages postés
122
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
15 mai 2014
3
12 août 2011 à 09:39
Voila, je me souviens du pourquoi je ne faisais pas de la sorte:

si je dis:

Textbox49.value = textbox41.value +.....+ textbox48.value

En admettant que je mette 50 dans la TB41 et 50, 50 dans la TB42, le résultat du calcul sera : 5050,50

Il met les données bout à bout plutot que de les additionner

J'ai également essayé avec cdBl(textbox41)+cdbl....+cdbl(Textbox48) mais ca me générait une erreur 13 impossible a débboger
0
chossette9
Messages postés
4239
Date d'inscription
lundi 20 avril 2009
Statut
Contributeur
Dernière intervention
12 septembre 2014
1 310
12 août 2011 à 10:00
Ah oui effectivement, le + utilisé comme ça équivaut au symbole de concaténation....

Quel boulet je fais :)
0
Gornarf
Messages postés
122
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
15 mai 2014
3
12 août 2011 à 10:05
Pas d'autres idées?

si j'utilise Cint il va me mettre que des entier, Cdbl générait un bug, Val me met un résultat entier et pourtant mes TB sont configurées pour afficher un résultat avec 2chiffres apres ","
0
Gornarf
Messages postés
122
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
15 mai 2014
3
12 août 2011 à 10:08
Le probléme exact avec Cdbl c'est que si mes TB sont vide, valeur = "" et donc il refuse le calcul car il ne sait pas additionner unchiffre + "" +"" +...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Gornarf
Messages postés
122
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
15 mai 2014
3
12 août 2011 à 10:20
Résumé:

Cdbl: bug car ne veux pas additionner des champs vides
Cint: idem
textbox + textbox: concaténation
val(textbox.value)+val(textbox.value): Ne me donne pas les virgules
val(textbox)+val(textbox): Ne me donne pas les virgules

:'(
0
Gornarf
Messages postés
122
Date d'inscription
vendredi 19 février 2010
Statut
Membre
Dernière intervention
15 mai 2014
3
12 août 2011 à 11:02
help please :s
0