Remplacer une virgule par un point dans un TextBox
cs_jul
Messages postés13Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention19 février 2003
-
17 févr. 2003 à 11:17
VBrifi
Messages postés21Date d'inscriptionsamedi 15 février 2003StatutMembreDernière intervention28 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 !!
cs_vish
Messages postés82Date d'inscriptionlundi 17 décembre 2001StatutMembreDernière intervention12 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.
cs_jul
Messages postés13Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention19 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 ?
cs_rene38
Messages postés1858Date d'inscriptionsamedi 29 juin 2002StatutMembreDernière intervention17 octobre 201311 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.
cs_jul
Messages postés13Date d'inscriptionmardi 21 janvier 2003StatutMembreDernière intervention19 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...