Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Ref.text en Décimal (VB2005 Express)

14 réponses
Avatar
djmcg
Bonjour,

A votre avis pourquoi cette ligne lève une erreur à l'exécution

UnArticle.PrixKilo = CType(tbx_pkMarch.Text, Decimal)

'------
En résumé :
J'ai une structure dans un module :

Public Structure FicheMarchandises
<VBFixedString(15)> Dim RefMarchandises As String
<VBFixedString(35)> Dim NomMarchandises As String
<VBFixedString(35)> Dim NomFournisseur As String
Dim PrixKilo As Decimal
End Structure

et à l'éxécution de ces lignes :
et dans un évènement bouton click,
lbl_NumFicheMarch.Visible = True : tbx_NumFicheMarch.Visible = True
lbl_RefMarch.Visible = True : tbx_RefMarch.Visible = True
lbl_NomMarch.Visible = True : tbx_NomMarch.Visible = True
lbl_FourMarch.Visible = True : tbx_FourMarch.Visible = True
lbl_pkMarch.Visible = True : tbx_pkMarch.Visible = True

Un erreur est levée sur cette ligne :
UnArticle.PrixKilo = CType(tbx_pkMarch.Text, Decimal)

Si quelqu'un peux m'aider a comprendre, un grand merci.
Jean-Marie.

4 réponses

1 2
Avatar
djmcg
Oui je doit revoir tous cela doucement.
Merci

Peekay a écrit :
djmcg a écrit :
Ben Alors comment j'aurais pu trouvé ça ?
J'avais bien vu dans les doc le tryparse mais j'ai rien compris et
toujours pas.
Maintenant mes texbox s'affiche
Dans le else je suppose que je doit remettre le Ctype...



Oublie CType ... fait CDec par exemple! Regarde si ta chaine est valide
(point ou virgule, autres caratères que de 0 à 9 ...)

Sinon pour tes maskedbox, tu peux fournir le type et obtenir directement
ce que tu veux (Integer, Double ...) mais je l'ai fait une fois et je
regrette car c'est assez compliqué ...
Si tu n'arrive déjà pas à convertir du texte en décimal, ne complique
pas trop !
Prend ton temps, relit les docs et fait des essais en pas à pas ou en
tapant les fonctions dans la fenêtre de débuggage pour mieux comprendre
leur fonctionnement.

Bon courage.


Avatar
djmcg
Donc pour toi, il faut désactivé le namespace Microsoft.visualBAsic
Alors, je suis claire, ce seras comme si je ne connaissait rien.
Hors, je pensait y allé doucement et profité de ce genre d'erreur pour
allé vers la nouvelle conception.
Et si je te suis (ce que j'ai fait cette après midi) pour la conversion
des chaine c'est le tryparse qu'il faut voir.
Un sujet que je doit revoir puisqu'il m'avait échapper.
Merci a tous et surtout de votre franchise.
Même si cela fait "mal" au neurone ces vb et vb6 qu'il faut laisser en
faveur du vb.net.
(pas facile).
Surtout merci pour l'exemple tryparse. En ce qui me concerne c'est plus
facile a voir par l'exemple. Demain c'est student tryparse.
Encore MERCI.
JM (hé c'est chouette de travaillé avec Dubasik :-))

Fred a écrit :
Dans : news:46029b1b$0$6320$,
Peekay disait :

Oublie CType ... fait CDec par exemple!



C'est la même chose en plus restreint. Juste une facilité syntaxique
pour pouvoir continuer à programmer à la VB6.
Le CDec plantera aussi si le format de la chaîne est incorrect.

Regarde si ta chaine est
valide (point ou virgule, autres caratères que de 0 à 9 ...)



C'est ce que fait le TryParse en mieux et la conversion en plus.
TryParse renvoie False quand la chaîne ne correspond pas à un décimal
valide (quand utilisé avec Decimal)
Si la chaîne correspond à un décimal valide, TryParse renvoie True et le
résultat de la conversion est stocké dans le second paramètre passé par
référence.

Le TryParse existe pour tous (ou presque ?) types de données. Il tient
compte des paramètres de culture du système. Si la représentation chaîne
que l'on veut convertir n'est pas exprimée dans la culture du système,
on peut forcer la conversion à partir de la culture que l'on souhaite
avec un troisième paramètre.

De manière générale, et pour ne pas prendre ou garder de mauvaises
habitudes avec des fonctions obsolètes, je désactive l'importation du
Namespace Microsoft.VisualBasic (propriété du projet - onglet References)



Avatar
Fred
Dans : news:,
djmcg écrivait :

Donc pour toi, il faut désactivé le namespace Microsoft.visualBAsic



Je préfère utiliser les classes du framework.
Par exemple : String.Trim plutôt que Trim(String)
Question d'homogénéité ;-)

Même si cela fait "mal" au neurone ces vb et vb6 qu'il faut laisser en
faveur du vb.net.
(pas facile).



J'avais cru comprendre que tu débutais sans être passé par VB6 et
antérieurs dans d'autres fils. Mais peut-être que je confonds avec
d'autres intervenants.

Surtout merci pour l'exemple tryparse. En ce qui me concerne c'est
plus facile a voir par l'exemple.



Bon courage !

--
Fred
http://www.cerber mail.com/?3kA6ftaCvT (enlever l'espace)
Avatar
djmcg
En fait, j'utilise encore le " Guide du programmeur de Visual Basic 6.0
" en attendant d'acheter celui de vb.net. Ce que je " connait " de VB
c'est des versions antérieur. J'ai beaucoup travaillé avec le quick
Basic. Un peux Vieux. :-).
OK je désctive le namespace Microsoft.VisualBAsic. Mais je crois que ça
va faire mal. :-)
Merci en tous les cas, pour conseils et aides.

Fred a écrit :
Dans : news:,
djmcg écrivait :

Donc pour toi, il faut désactivé le namespace Microsoft.visualBAsic



Je préfère utiliser les classes du framework.
Par exemple : String.Trim plutôt que Trim(String)
Question d'homogénéité ;-)

Même si cela fait "mal" au neurone ces vb et vb6 qu'il faut laisser en
faveur du vb.net.
(pas facile).



J'avais cru comprendre que tu débutais sans être passé par VB6 et
antérieurs dans d'autres fils. Mais peut-être que je confonds avec
d'autres intervenants.

Surtout merci pour l'exemple tryparse. En ce qui me concerne c'est
plus facile a voir par l'exemple.



Bon courage !



1 2