Pb saisie décimal dans un textbox

cs_madmax24 Messages postés 5 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 2 avril 2008 - 1 avril 2008 à 18:38
cs_madmax24 Messages postés 5 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 2 avril 2008 - 2 avril 2008 à 11:25
Bonjour,

Je travaille sur Excel VB pour développer un petit outil de tests statistiques (je suis débutant sur VB).

A un moment donné, je dois rentrer un % dans un textbox. Si je veux 10%, je saisis "0.1" ou "10%", et ça marche. En revanche, si je souhaite rentre 10,5%, les saisies "0.105" et "10.5%" ne fonctionnent pas... Pouvez vous m'aider ?

Merci
Max

ps : je peux envoyer le fichier si vous le désirez

12 réponses

pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
1 avril 2008 à 19:57
bonjour

vérifie le format de séparateur décimal reconnu par excel (point ou virgule)
d'autre part vérifie également le format de tes variables
(un integer ne reconnais pas de séparateur décimal :) entre autre !)
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
1 avril 2008 à 20:29
Salut,

Ou voir aussi pour ne pas toucher forcément aux paramètres régionnaux de l'ordi :

Private Sub Form_Load()
toto = "10.6"
MsgBox Replace(toto, ".", ",")
End Sub

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
1 avril 2008 à 20:38
complètement de ton avis explorer il lui faut faire un code transparent par rapport aux paramètres régionaux. Et indépendant de ce que peux saisir l'utilisateur.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 22
1 avril 2008 à 21:31
Et pour connaître le séparateur, tu peux utiliser ceci
Application.International(xlDecimalSeparator)

Tu pourrais donc utiliser l'événement KeyPress ou KeyDown pour vérifier et modifier, au besoin, le séparateur entré par l'utilisateur.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0

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

Posez votre question
cs_madmax24 Messages postés 5 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 2 avril 2008
2 avril 2008 à 09:34
Bonjour,
j'ai vérifié le séârateur décimal et c'est un point.
Je ne comprends donc pas pourquoi la saisie de 0.1 fonctionne alors que 0.105 ne fonctionne pas.

Voici mon code,
Merci de votre aide car je suis un peu en panique !!!!

PrivateSub TextBox1_AfterUpdate()
Test2.TextBox1.Value = Format(Val(Test2.TextBox1.Value), "# ### ##0")
IfNot(IsNull(Test2.TextBox1.Value)Or Test2.TextBox1.Value = "")Then
Test2.TextBox2.Value = Format(Val(Test2.TextBox3.Value) * Val(Test2.TextBox1.Value) / 100, "# ### ##0")
Else: Test2.TextBox2.Value = ""
EndIf
EndSub
 
PrivateSub TextBox3_AfterUpdate()
Test2.TextBox3.Value = Format(Test2.TextBox3.Value, "0.00%")
IfNot(IsNull(Test2.TextBox3.Value)Or Test2.TextBox3.Value = "")Then
Test2.TextBox2.Value = Format(Val(Test2.TextBox3.Value) * Val(Test2.TextBox1.Value) / 100, "# ### ##0")
Else: Test2.TextBox2.Value = ""
EndIf
EndSub
 
PrivateSub CommandButton1_Click()
End
EndSub
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
2 avril 2008 à 09:48
sans garantie car je ne suis pas totalement sûr de mon fait

Test2.TextBox3.Value = Format(Test2.TextBox3.Value, "0.00%")

ici tu définis ton pourcentage avec seulement deux chiffres après le séparateur décimal et tu essaie d'entrer 0.105 soit trois chiffres .....
regardes voir de ce coté là !
0
cs_madmax24 Messages postés 5 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 2 avril 2008
2 avril 2008 à 09:50
Non, ce n'est pas le pb apparemment, je viens de tester...
0
cs_Exploreur Messages postés 4822 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
2 avril 2008 à 09:53
Salut,

Il y a un truc que je ne pige pas.....tu dis : si je veux 10% je saisi 0.1.......pourquoi ne pas saisir directment10 ?? comme 10.5 pour 10.5% au lieu de 0.105 ?

A+
Exploreur

 Linux a un noyau, Windows un pépin
0
cs_madmax24 Messages postés 5 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 2 avril 2008
2 avril 2008 à 10:16
Dans l'absolu je pourrais mais le souci c'est que je ne comprends pas vraiment pourquoi ça ne fonctionne pas alors que ça devrait. Je risque d'avoir le problème une fois prochaine donc j'aimerais bien le résoudre...

Je joints mon fichier test si quelqu'un veut y jeter un oeil...
http://dl.free.fr/cCIGQMKyK/test.xls

(y'a un autre moyen pour joindre un fichier ?)

Un grand merci à nouveau !
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 22
2 avril 2008 à 10:59
La fonction Val donne l'entier d'un nombre décimal avec un point comme séparateur.

ex:
MsgBox Val(10.5)  >> = 10

Tu pourrais utiliser CDbl, je pense pour régler le problème. Ou peut-être Round.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
2 avril 2008 à 11:07
modifie ta macro comme ceci et ça marche

Private Sub TextBox3_AfterUpdate()
Dim dVariable As Double
Test2.TextBox3.Value = Format(Test2.TextBox3.Value, "00.00%")
variable = CDbl(Left(Test2.TextBox3.Value, Len(Test2.TextBox3.Value) - 1))
If Not (IsNull(Test2.TextBox3.Value) Or Test2.TextBox3.Value = "") Then
Test2.TextBox2.Value = Format(dVariable * Val(Test2.TextBox1.Value) / 100, "# ### ##0")
Else: Test2.TextBox2.Value = ""
End If
End Sub

de toute façon si tu veux faire un code lisible travailles sur des variables plutot que comme tu le fait actuellement
et prends l'habitude de déclarer tes variables pour cela en toute premiere ligne de code tu mets "Option explicit" ( sans les guillemets)
comme ça si tu utilise une variable non déclarée ou écrite de travers VBA t'engueulera quand tu testera ton code :)
0
cs_madmax24 Messages postés 5 Date d'inscription jeudi 7 décembre 2000 Statut Membre Dernière intervention 2 avril 2008
2 avril 2008 à 11:25
pile poil ce qu'il me fallait ! Merci bcp, ça marche maintenant !!
0