Dimensionnement variable dans un UserForm [Résolu]

jbbaudouin 37 Messages postés mardi 12 avril 2011Date d'inscription 18 janvier 2016 Dernière intervention - 18 janv. 2016 à 17:32 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 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+
Afficher la suite 

5 réponses

Répondre au sujet
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 18/01/2016 à 17:58
0
Utile
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.
Commenter la réponse de ucfoutu
jbbaudouin 37 Messages postés mardi 12 avril 2011Date d'inscription 18 janvier 2016 Dernière intervention - 18 janv. 2016 à 17:59
0
Utile
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.
Commenter la réponse de jbbaudouin
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 18/01/2016 à 18:09
0
Utile
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.
Commenter la réponse de ucfoutu
jbbaudouin 37 Messages postés mardi 12 avril 2011Date d'inscription 18 janvier 2016 Dernière intervention - 18 janv. 2016 à 19:46
0
Utile
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
Commenter la réponse de jbbaudouin
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 18 janv. 2016 à 20:28
0
Utile
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 ...).
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.