Utiliser cStr? [Résolu]

Signaler
Messages postés
180
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
22 novembre 2013
-
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
-
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

Messages postés
14785
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 avril 2021
154
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
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
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)
Messages postés
180
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
22 novembre 2013

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?
Messages postés
14785
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
18 avril 2021
154
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
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Statut
Membre
Dernière intervention
23 août 2018
18
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