Remplacer une virgule par un point dans un TextBox

cs_jul Messages postés 13 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 19 février 2003 - 17 févr. 2003 à 11:17
VBrifi Messages postés 21 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 28 avril 2003 - 17 févr. 2003 à 17:45
Bonjour,

La situation est la suivante : j'ai un TextBox nommé Coefficient qui peut recevoir une valeur décimale. Mais quand je rentre un nombre en utilisant le point (par ex : 1.5) ça ne fonctionne pas (ça marche si je rentre 1,5 mais je veux laisser libre l'utilisateur de rentrer le nombre comme il le veux, en utilisant soit le point, soit la virgule). J'ai trouvé sur ce site une question similaire et on suggérait d'utliser les fonctions de conversion comme CSng(Var) qui transforme une variable en single et qui tient compte des paramètres Windows. Voilà donc ce que j'ai écrit :

Dim Facteur As Single

Private Sub Coefficient_AfterUpdate()
Facteur = CSng(Coefficient.Value)
...
End Sub

Et ça ne marche pas !!!
J'obtiens une erreur de type 13 : "Incompatibilité de type" et je ne comprends pas pourquoi !!

Pouvez-vous m'aider ?

Merci d'avance.

8 réponses

cs_vish Messages postés 82 Date d'inscription lundi 17 décembre 2001 Statut Membre Dernière intervention 12 mars 2003
17 févr. 2003 à 11:29
je pense que tu devrais utiliser la fonction "replace" qui te permettra dans ton code de remplacer un point par une virgule (dans ton chiffre ) en faisant F1 tu auras l'explication de son fonctionnement. j'ai utilisé cette fonction pour une application qui contient des chiffres décimal , et ça marche du tonnerre.
0
cs_jul Messages postés 13 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 19 février 2003
17 févr. 2003 à 12:29
Je vais essayer... mais j'aimerais quand même bien savoir pourquoi ça ne fonctionne pas avec la fonction CSng !
En tout cas, merci pour ta réponse !
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
17 févr. 2003 à 14:40
Salut

Private Sub Coefficient_KeyPress(Index As Integer, KeyAscii As Integer) If KeyAscii 44 Then KeyAscii 44 'remplace , par .
End Sub
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
17 févr. 2003 à 14:46
pardonIf KeyAscii 44 Then KeyAscii 46 'remplace , par .
0

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

Posez votre question
cs_jul Messages postés 13 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 19 février 2003
17 févr. 2003 à 14:55
Merci, je pense que ça peut marcher mais mon problème va en fait au delà : ça dépend des options régionales de Windows. Si le séparateur décimal Windows est la virgule alors je veux remplacer les points par des virgules mais si le séparateur Windows est un point, alors je veux faire l'inverse, remplacer la virgule par un point. Dans tous les cas, je veux que mon programme roule quel que soit le format décimal que l'utilisateur choisit (1.5 ou 1,5), et ce quel que soit le séparateur Windows. Je sais c'est tordu mais c'est à ce résultat que j'aimerais arriver. vois-tu un moyen ?

En tout cas, merci pour ton aide.
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
17 févr. 2003 à 15:05
Si tu veux que CSng fonctionne, il faut que Coefficient contienne un décimal au format reconnu par VB, c'est à dire avec un point.
CSng renvoie alors le nombre avec le séparateur décimal choisi dans les options régionales de Windows.
0
cs_jul Messages postés 13 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 19 février 2003
17 févr. 2003 à 16:26
Non, je crois que VB tiens compte des options régionales de Windows. J'ai fait le test : si je mets la virgule comme séparateur décimal et que je tape 1.5, alors
Facteur = CSng(Coefficient.Value) plante. Mais si je mets le point comme séparateur dans les options régionales et que je tape toujours 1.5 (ou 1,5 !!), alors ça ne plante plus ! C'est à n'y plus rien comprendre...
0
VBrifi Messages postés 21 Date d'inscription samedi 15 février 2003 Statut Membre Dernière intervention 28 avril 2003
17 févr. 2003 à 17:45
Non en fait tu devrais entrer le code suivantIf KeyAscii 46 Then KeyAscii 44 ' remplace le point par la virgule
0
Rejoignez-nous