Format TextBox nombre et texte

Ben_Co

XLDnaute Nouveau
Bonsoir à tous,

Je bloque sur un petit problème sur mon userform.

J'ai un textbox dans laquelle je rentre une valeur (un nombre de Km), je souhaite afficher dans cette texte box "1 000 Km" par exemple. Pour l'instant j'ai mis un format : Format(Textbox1, "0 000 Km"). Ca marche du tonnerre pour ce qui est du texbox. Le problème survient après lorsque je veux mettre la valeur de ce textbox dans une cellule excel afin de faire des calculs. Le textbox contenant des lettres est considéré comme du texte et je ne peux donc rien faire avec...

Je souhaiterai savoir si il y a une solution qui permet d'afficher un format dans un textbox sans pour autant changer la valeur de celui-ci (comme le format personnalisé dans les feuilles excel).


Merci d'avance,
Ben_Co

PS :J'ai trouvé une solution pour contourner le problème mais elle ne me convient pas étant donné le nombre de userform : replace(textbox1, " Km","").
 

Misange

XLDnaute Barbatruc
Re : Format TextBox nombre et texte

Bonsoir
Il faut que tu commences par dire à excel de transformer le type du contenu du textbox (text) en nombre avant de faire autre chose
Suivant le type de nombre attendu pour tes km, il faut transformer ton text en integer (Cint), long (Clng), double (Cdbl)...
Par exemple :
Distance = CLng(textbox1.value)
textbox1= format(distance, "0 000 Km")
Range("A1")= format(distance, "0 000 Km")
 

Docmarti

XLDnaute Occasionnel
Re : Format TextBox nombre et texte

Bonjour Ben_Co


Tu dois récupérer la partie numérique au début de TextBox1 avec la fonction VAL.

Code:
Private Sub CommandButton1_Click()

Dim distance As Double
'Pour récupérer la partie numérique au début de TextBox1
distance = Val(Replace(TextBox1.Value, Format(0, ","), "."))
 
TextBox1 = distance & " Km"
Range("A1") = distance

End Sub


Cordialement

Docmarti
 

Misange

XLDnaute Barbatruc
Re : Format TextBox nombre et texte

@DocMarti,
Attention, la fonction val ne marche que si le séparateur décimal de l'utilisateur est le . (système américain). Si c'est la virgule, ça ne fonctionne pas. C'est la raison pour laquelle il est préférable d'utiliser les fonctions de transtypage.
 

Docmarti

XLDnaute Occasionnel
Re : Format TextBox nombre et texte

@DocMarti,
Attention, la fonction val ne marche que si le séparateur décimal de l'utilisateur est le . (système américain). Si c'est la virgule, ça ne fonctionne pas. C'est la raison pour laquelle il est préférable d'utiliser les fonctions de transtypage.

Bonjour Misange.

Il me semble que c'est exactement ce que je propose : remplacer la virgule par un point avant d'utiliser la fonction VAL dans la commande
Code:
distance = Val(Replace(TextBox1.Value, Format(0, ","), "."))

le résultat étant une valeur de type Double qui inclut correctement la partie décimale, la virgule potentielle ayant été remplacée par un point.

Val(Replace("123,456 km", Format(0, ","), ".")) donne bien comme résultat la valeur de type Double 123,456 qui sera correctement interprétée sur la feuille Excel comme une valeur numérique.


Amicalement

Docmarti
 

Misange

XLDnaute Barbatruc
Re : Format TextBox nombre et texte

Certes mais c'est plus compliqué :)
Comme j'utilise le point comme séparateur décimal depuis des années, j'utilise souvent val quand je fais un truc pour moi seule. Mais dès que le classeur peut avoir à être partagé, je préfère transtyper et du même coup choisir si la variable devient un Integer un long, un double. Je ne me suis pas penchée sur ce qui se passe quand le classeur est ouvert dans une version 64bits car de toutes façons il y aurait plus d'une variable à modifier.
Amicalement
 

Discussions similaires

Réponses
15
Affichages
481

Statistiques des forums

Discussions
312 082
Messages
2 085 171
Membres
102 805
dernier inscrit
emes