Dimensionnement variable dans un UserForm

Résolu
jbbaudouin Messages postés 37 Date d'inscription mardi 12 avril 2011 Statut Membre Dernière intervention 18 janvier 2016 - 18 janv. 2016 à 17:32
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 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+

5 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 18/01/2016 à 17:58
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.
0
jbbaudouin Messages postés 37 Date d'inscription mardi 12 avril 2011 Statut Membre Dernière intervention 18 janvier 2016 2
18 janv. 2016 à 17:59
Merci de ta réponse,

mais c'est la valeur auquelle on attribue celle du textbox, dans l'exemple le x, qui est dimensionnée comme numérique, d'où ma question.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 18/01/2016 à 18:09
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.

Enfin : comment peux-tu raisonnablement penser qu'un numérique = un texte ?

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
jbbaudouin Messages postés 37 Date d'inscription mardi 12 avril 2011 Statut Membre Dernière intervention 18 janvier 2016 2
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
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
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 ...).
0
Rejoignez-nous