'------
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.
Parce qu'un String n'est pas un Decimal. Il faut utiliser la classe Convert, ou bien Decimal.TryParse
Fred
Dans : news:, djmcg disait :
Bonjour, Merci d'avoir pris la peine de répondre.
Je détaille :
If Not Decimal.TryParse(tbx_pkMarch.Text, UnArticle.PrixKilo) Then 'Traitement si le texte saisi n'est pas la représentation d'un décimal valide Else 'La saisie est valide et UnArticle.PrixKilo en contient la valeur End If
-- Fred
Dans : news:epCbw1HbHHA.1508@TK2MSFTNGP06.phx.gbl,
djmcg disait :
Bonjour,
Merci d'avoir pris la peine de répondre.
Je détaille :
If Not Decimal.TryParse(tbx_pkMarch.Text, UnArticle.PrixKilo) Then
'Traitement si le texte saisi n'est pas la représentation d'un
décimal valide
Else
'La saisie est valide et UnArticle.PrixKilo en contient la valeur
End If
If Not Decimal.TryParse(tbx_pkMarch.Text, UnArticle.PrixKilo) Then 'Traitement si le texte saisi n'est pas la représentation d'un décimal valide Else 'La saisie est valide et UnArticle.PrixKilo en contient la valeur End If
-- Fred
djmcg
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... Bon je revois la doc pour comprendre la syntaxe tryparse.
Merci Fred.
Fred a écrit :
Dans : news:, djmcg disait :
Bonjour, Merci d'avoir pris la peine de répondre.
Je détaille :
If Not Decimal.TryParse(tbx_pkMarch.Text, UnArticle.PrixKilo) Then 'Traitement si le texte saisi n'est pas la représentation d'un décimal valide Else 'La saisie est valide et UnArticle.PrixKilo en contient la valeur End If
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...
Bon je revois la doc pour comprendre la syntaxe tryparse.
Merci Fred.
Fred a écrit :
Dans : news:epCbw1HbHHA.1508@TK2MSFTNGP06.phx.gbl,
djmcg disait :
Bonjour,
Merci d'avoir pris la peine de répondre.
Je détaille :
If Not Decimal.TryParse(tbx_pkMarch.Text, UnArticle.PrixKilo) Then
'Traitement si le texte saisi n'est pas la représentation d'un
décimal valide
Else
'La saisie est valide et UnArticle.PrixKilo en contient la valeur
End If
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... Bon je revois la doc pour comprendre la syntaxe tryparse.
Merci Fred.
Fred a écrit :
Dans : news:, djmcg disait :
Bonjour, Merci d'avoir pris la peine de répondre.
Je détaille :
If Not Decimal.TryParse(tbx_pkMarch.Text, UnArticle.PrixKilo) Then 'Traitement si le texte saisi n'est pas la représentation d'un décimal valide Else 'La saisie est valide et UnArticle.PrixKilo en contient la valeur End If
djmcg
Ah non, le masket textbox (et le textbox) ne peut pas être converti en decimal. Donc pas de ctype...
Fred a écrit :
Dans : news:, djmcg disait :
Bonjour, Merci d'avoir pris la peine de répondre.
Je détaille :
If Not Decimal.TryParse(tbx_pkMarch.Text, UnArticle.PrixKilo) Then 'Traitement si le texte saisi n'est pas la représentation d'un décimal valide Else 'La saisie est valide et UnArticle.PrixKilo en contient la valeur End If
Ah non, le masket textbox (et le textbox) ne peut pas être converti en
decimal. Donc pas de ctype...
Fred a écrit :
Dans : news:epCbw1HbHHA.1508@TK2MSFTNGP06.phx.gbl,
djmcg disait :
Bonjour,
Merci d'avoir pris la peine de répondre.
Je détaille :
If Not Decimal.TryParse(tbx_pkMarch.Text, UnArticle.PrixKilo) Then
'Traitement si le texte saisi n'est pas la représentation d'un
décimal valide
Else
'La saisie est valide et UnArticle.PrixKilo en contient la valeur
End If
Ah non, le masket textbox (et le textbox) ne peut pas être converti en decimal. Donc pas de ctype...
Fred a écrit :
Dans : news:, djmcg disait :
Bonjour, Merci d'avoir pris la peine de répondre.
Je détaille :
If Not Decimal.TryParse(tbx_pkMarch.Text, UnArticle.PrixKilo) Then 'Traitement si le texte saisi n'est pas la représentation d'un décimal valide Else 'La saisie est valide et UnArticle.PrixKilo en contient la valeur End If
Peekay
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.
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.
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.
Peekay
djmcg a écrit :
Voici l'erreur déclaré et même après avoir mis la ligne imports. La conversion de la chaîne "" en type 'Decimal' n'est pas valide.
Il est clair que convertir une chaine vide, ca n'aide pas ... Cherche ton problème en amont !
djmcg a écrit :
Voici l'erreur déclaré et même après avoir mis la ligne imports.
La conversion de la chaîne "" en type 'Decimal' n'est pas valide.
Il est clair que convertir une chaine vide, ca n'aide pas ...
Cherche ton problème en amont !
Voici l'erreur déclaré et même après avoir mis la ligne imports. La conversion de la chaîne "" en type 'Decimal' n'est pas valide.
Il est clair que convertir une chaine vide, ca n'aide pas ... Cherche ton problème en amont !
Fred
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)
-- Fred
Dans : news:46029b1b$0$6320$426a34cc@news.free.fr,
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)
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)
-- Fred
Peekay
Fred a écrit :
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)
Ce que je voulais dire, c'est qu'il regarde lui-même cette chaine ... Je pense qu'il y a une connerie avant et qu'il se focalise sur le mauvais truc. De plus, l'utilisation de la MaskedTestBox n'est pas aisée de prime abord.
Il a l'air d'être perdu avec des trucs tous cons, donc je lui disais de reprendre avec le debuggage et tout ca, sinon il n'y comprendra rien et on ne pourra même pas l'aider.
Fred a écrit :
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)
Ce que je voulais dire, c'est qu'il regarde lui-même cette chaine ...
Je pense qu'il y a une connerie avant et qu'il se focalise sur le
mauvais truc. De plus, l'utilisation de la MaskedTestBox n'est pas aisée
de prime abord.
Il a l'air d'être perdu avec des trucs tous cons, donc je lui disais de
reprendre avec le debuggage et tout ca, sinon il n'y comprendra rien et
on ne pourra même pas l'aider.
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)
Ce que je voulais dire, c'est qu'il regarde lui-même cette chaine ... Je pense qu'il y a une connerie avant et qu'il se focalise sur le mauvais truc. De plus, l'utilisation de la MaskedTestBox n'est pas aisée de prime abord.
Il a l'air d'être perdu avec des trucs tous cons, donc je lui disais de reprendre avec le debuggage et tout ca, sinon il n'y comprendra rien et on ne pourra même pas l'aider.
djmcg
En fait, il déclarait l'erreur au moment ou les textbox.visible=true. A la compilation pas d'erreur. Je trouvais cela bizarre et je ne comprend pas très bien comment il fait pour me déclaré une erreur alors qu'il ne ma pas encore donné le focus pour que j'encode la donnée. J'ai suivi Fred : donc abandon du ctype et j'utilise le parse et là plus d'erreur. Merci pour votre aide.
Peekay a écrit :
djmcg a écrit :
Voici l'erreur déclaré et même après avoir mis la ligne imports. La conversion de la chaîne "" en type 'Decimal' n'est pas valide.
Il est clair que convertir une chaine vide, ca n'aide pas ... Cherche ton problème en amont !
En fait, il déclarait l'erreur au moment ou les textbox.visible=true.
A la compilation pas d'erreur.
Je trouvais cela bizarre et je ne comprend pas très bien comment il fait
pour me déclaré une erreur alors qu'il ne ma pas encore donné le focus
pour que j'encode la donnée.
J'ai suivi Fred : donc abandon du ctype et j'utilise le parse et là plus
d'erreur.
Merci pour votre aide.
Peekay a écrit :
djmcg a écrit :
Voici l'erreur déclaré et même après avoir mis la ligne imports.
La conversion de la chaîne "" en type 'Decimal' n'est pas valide.
Il est clair que convertir une chaine vide, ca n'aide pas ...
Cherche ton problème en amont !
En fait, il déclarait l'erreur au moment ou les textbox.visible=true. A la compilation pas d'erreur. Je trouvais cela bizarre et je ne comprend pas très bien comment il fait pour me déclaré une erreur alors qu'il ne ma pas encore donné le focus pour que j'encode la donnée. J'ai suivi Fred : donc abandon du ctype et j'utilise le parse et là plus d'erreur. Merci pour votre aide.
Peekay a écrit :
djmcg a écrit :
Voici l'erreur déclaré et même après avoir mis la ligne imports. La conversion de la chaîne "" en type 'Decimal' n'est pas valide.
Il est clair que convertir une chaine vide, ca n'aide pas ... Cherche ton problème en amont !