Utiliser cStr?

Résolu
cs_Fabian123 Messages postés 180 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 22 novembre 2013 - 29 févr. 2008 à 12:17
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 29 févr. 2008 à 23:33
Bonjour, c'est encore moi...!

Voilà mon nouveau probleme...

J'enregistre des infos saisies dans des textbox dans un fichier .txt... jusque là pas de souci!

mais, dans une textbox, on saisi un prix, qui contient donc des décimales (j'utilise donc la propriété 'double')
et lorsque il sauvegarde dans le fichier .txt il enregstre en entier... (par exemple 0,95 devient 95...)

Je pense que je dois convertir le chiffre en texte avec la commande CStr( )... mais je ne sais pas ou je dois la placer dans le code... (je ne sais pas non plus si c'est cela que je dois faire d'ailleurs!)

je vous laisse le code que j'ai fait ci dessous:

Private Sub CommandButtonAjouter_Click()
Dim texte As String
Dim prix As Double
Dim Quantité As Integer
texte = TextBoxArticle.Text
prix = TextBoxPU.Text
Quantité = TextBoxQuantité.Text
Open "c:\essai.txt" For Append As #1
Print #1, texte; Tab; prix; Tab; Quantité
Close #1
Call UserFormVisualiserArticle.ComboBoxArticle.AddItem(texte)
TextBoxArticle.Text = vbNullString
TextBoxPU.Text = vbNullString
TextBoxQuantité.Text = vbNullString
UserFormCréerArticle.Hide
End Sub

5 réponses

NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
29 févr. 2008 à 12:36
Bonjour

Selon ton code, je te conseillerais :
prix = cstr(cdbl(TextBoxPU.Text)*100)

Peut être ajouter Cint pour virer les décimales derrière les 2 premieres :
prix = cstr(cint(cdbl(TextBoxPU.Text)*100))

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
29 févr. 2008 à 14:32
Salut
Prix est dimensionné en Double
Il faut donc utiliser CDble("Texte du prix")
Attention toutefois car CDble ne fonctionne qu'avec des chiffres.
Donc, si l'utilisateur saisit par inadvertance une lettre, c'est l'erreur de programme !
Astuce : Insérer un Val entre deux :
   Prix = CDble(Val("Texte du prix"))
Dans ce cas, pas d'erreur et valeur 0 à la place (c'est quelque fois moins pire)

Pense aussi à transformer les virgules en point (pour les décimaux), tout dépend des habitudes des utilisateurs.
Un Replace fera l'affaire.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Fabian123 Messages postés 180 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 22 novembre 2013
29 févr. 2008 à 14:54
Merci beaucoup!!!

ca fonctionne nickel!

tient, à propos, est-ce qu'on ne pourrais pas passer par un msgbox si l'utilisateur entre une lettre à la place d'un chiffre afin de lui demander d'introduire exclusivement un chiffre?
0
NHenry Messages postés 15113 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 22 avril 2024 159
29 févr. 2008 à 14:58
Bonjour

Oui, dans l'event KeyPress de la Textbox, ou dans l'event Change (si copie depuis le presse papier).

Dans Word, j'Excel. (juste pour la citation)
VB (6, .NET1&2), C++, C#.Net1
Mon site
0

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

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
29 févr. 2008 à 23:33
Ou avec IsNumeric
If Not IsNumeric(TextBoxPU.Text) Then
    MsgBox "Ce n'est pas un nombre"

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