jbbaudouin
Messages postés37Date d'inscriptionmardi 12 avril 2011StatutMembreDernière intervention18 janvier 2016
-
18 janv. 2016 à 17:32
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
18 janv. 2016 à 20:28
Bonjour à tous,
Dans un Userfom, je souhaite que le Textbox soit une valeur numérique.
Si un élément de comparaison apparaît dans la suite du code, un message d'erreur apparaît alors qu'il ne devrait logiquement pas survenir.
Voici le code ci-dessous :
x = preload_textbox.Value
If x >= y Then
message d'erreur
...
et avec l'exemple x=150 et y=180, le message d'erreur apparaît quand même.
Et c'est pas tout, j'ai rajouté par curiosité la ligne de code ci-dessous:
x = preload_textbox.Value
x=x+0
If x >= y Then
message d'erreur
...
et dans ce cas le message d'erreur n'apparaît pas.
Donc c'est bizarre et si vous avez une explication n'hésitez pas,
A+
Bonjour,
- on ne "redimensionne" pas une variable.
On la déclare si elle ne l'est pas implicitement (cas de la propriété Text et/ou Value d'une textbox) en lui affectant un type.
Le contenu d'une textbox est de type string (et donc la propriété Text et/ou sa propriété Value)
Une chaîne de caractères peut être convertie en type numérique (nécessaire pour utilisation de calculs numériques) à la condition bien évidente que son texte soit la représentation d'un numérique valide.
Ouvre s'il te plait ton aide VBA à la rubrique Fonctions de conversion de types de données.
J'appelle toutefois ton attention sur le fait que tu ne parles pas de la présence éventuelle d'un séparateur décimal.
Si ce séparateur est un point, il en va autrement sur une machine française, puisque par exemple "1.31" n'est pas la représentation d'un numérique valide (alors que "1,31" en est une).
Si le point est séparateur utilisé en saisie de cette textbox, par contre, la fonction Val (à lire dans ton aide VBA) fera l'affaire.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
X est peut-être typé en numérique, mais le fait de dire que x = du texte est ce qui ne va pas !
Il te faut nécessairement dire que x= la conversion en numérique du texte. Cela va tellement de soi.
jbbaudouin
Messages postés37Date d'inscriptionmardi 12 avril 2011StatutMembreDernière intervention18 janvier 20162 18 janv. 2016 à 19:46
Ok merci,
Donc en fait cela ne sert à rien de dimensionner variable au préalable, puisque même si on lui attribue un entier, elle le prend en compte comme une chaîne de caractère.
Ok bon on va faire avec merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018219 18 janv. 2016 à 20:28
e n'ai en aucun cas dit une telle "chose" !
Relis-moi donc avec attention :
tu dois déclarer ("dimensionner" n'est pas anglais et ne correspond à rien, dans ce cas, en français) ta variable x en numérique (instruction Dim) et lui attribuer la valeur numérique obtenue par conversion de la propriété Text de ta textbox !
Rien ne t'empêche non plus, bien évidemment de faire tes calculs sans ce tremplin X, en utilisant directement les conversions numériques de tes variable texte !
PS : je suis assez étonné par le caractère paradoxal de telles questions et le temps depuis lequel tu développes (près de quatre ans, tout de même ...).