Contre-indication If then et Variables?

  • Initiateur de la discussion Aldric
  • Date de début
A

Aldric

Guest
Bonjour,

Je pensais tenir un probléme tout bete, et il semblerait bien que non...

En simplifié, je souhaite effectuer le test suivant:

If 88 * mould_ind + 20 * mould_cpp > Tdur.Value Then
xxx
Else
yyy
End If

*mould_ind et mould_cpp sont deux variables avec une valeur donnée, declarées etc..

*Tdur.value est une valeur rapportée d'une boite de dialogue.

Quand je fait le test dans la macro, j'ai toujours yyy, alors que les valeurs de mould_ind / mould_cpp impliqueraient manifestement xxx.

Je montre les valeurs de ces 3 variables par msgbox, elles sont correctes!!

Y a t il une incompatibilité entre les tests If then et les variables ou les tests ><???

Je ne sais plus comment retourner le probléme..

Merci d'avance
 
L

Lord Nelson

Guest
Salut Aldric,

Ta formulation est ambiguë :

If 88 * mould_ind + 20 * mould_cpp > Tdur.Value Then

Faut-il comprendre
If (88 * mould_ind) + (20 * mould_cpp) > Tdur.Value Then
ou bien
If (88 * (mould_ind + 20)) * mould_cpp > Tdur.Value Then
ou encore
If ((88 * mould_ind) + 20) * mould_cpp > Tdur.Value Then

???
A+
LN
 
A

Aldric

Guest
Bonjour,

Non non, comme en maths:

((88 * mould_ind) + (20 * mould_cpp)) > Tdur.value

J'ai essayé comme cela, RAS.

Je suis meme passé par un chemin detourné, au cas ou il y ait eu une finesse:

Var1=88 * mould_ind + 20 * mould_cpp
Var2=Tdur.value

If var1>var 2 Then...

Pas moyen.

Merci LN
 
L

LaurentTBT

Guest
Bonsoir,

Est-ce que par hasard ton code ne serait pas dans un module différent de celui concernant ton Userform? Auquel cas, il faut que tu précises à quel UserForm appartient ta textbox, par exemple: UserForm2.Tdur.Value
Autre idée, mais sans trop y croire: Tdur est de type String, peut-être faut-il le convertir en valeur? Val(UserForm2.Tdur.Value ) par exemple.

Si ce n'est toujours pas bon, il faudrait que tu mettes un fichier zippé en pièce jointe si possible.

Bon courage.
 
A

Aldric

Guest
Bien joué,

Indirectement, LN m'avait mis sur la voix, en comparant les deux expressions et en s'attachant à la FORME...

Je revenais juste sur le forum pour dire que je venais de trouver et comment, en changeant le type de données vers Single pour la variable var2.

Tu simplifies bcp la chose avec val(expr), c'est donc ce que j'ai fait avec CSng(Tdur.value), qui renvoie un type Single.

Merci beaucoup, je trainais dessus depuis qq heures.
 

Discussions similaires