2 est plus grand que 16

Bonsoir a tous petit soucis de frappe je pense.

j'ai cela :

Private Sub Abox9_Change()
EtatStk
End Sub

Private Sub Abox10_Change()
EtatStk
End Sub

Function EtatStk()
If Me.Abox9.Value = "" Then Me.Abox9.BackColor = &HFFFFFF
If Me.Abox9.Value < Me.ABox10.Value Then Me.Abox9.BackColor = &HFF&
If Me.Abox9.Value > Me.ABox10.Value Then Me.Abox9.BackColor = &HFF00&
End Function

Pourriez vous m'expliquer pourquoi 2 (dans Abox10) va etre plus grand que 16 (dans Abox9) comme 11 12 13 14 15 17 18 19

mais idem pour 3 il est plus grand que 20 21 22 23 24 25 26 27 28 29

et ainsi de suite comme ci il considere le chiffre (et pas le nombre) comme une dizaine ou centaine

Alors une idée ?

Bonsoir,

Si les valeurs comparées sont de type "texte", la comparaison donne ce résultat (ordre "alphabétique").

A priori "Abox9" est une TextBox ?

Une alternative, utiliser l'instruction "Val" pour comparer les valeurs en mode numérique.

En PJ une illustration.

Bonne soirée

Bouben

6leplusgrand.xlsm (15.02 Ko)

J'ai ouvert ton xl mais je ne comprends pas ^^ car ca m'ecrit A plus Grand B plus Grand.... et a la lecture du code j'ai des valur de chiffres... (peut etre la fatigue je reprendrais demain...)

Mais oui effectivement je suis sur du textbox et je n'arrive pas a faire lire dans mes formules que c'est du numérique et non du texte il doit me manqué un petit mot quelque part


j'ai appliqué ainsi :

If Val(Me.Abox9.Value) = "" Then Me.Abox9.BackColor = &HFFFFFF
If Val(Me.Abox9.Value) < Val(Me.ABox10.Value) Then Me.Abox9.BackColor = &HFF&
If Val(Me.Abox9.Value) > Val(Me.ABox10.Value) Then Me.Abox9.BackColor = &HFF00&

mais cela créer des erreurs :/

Bonsoir,

CDBL non ?

val numérique = CDBL(TextBox.Value)

Ce n'est pas un truc comme ceci ?

Moi aussi je fatigue...

@ bientôt

LouReeD

Bah alors la je ne connais meme pas cette fonction... je regarde demain bonne nuit a tous.

Spouns a écrit :

J'ai ouvert ton xl mais je ne comprends pas ^^ car ca m'ecrit A plus Grand B plus Grand.... et a la lecture du code j'ai des valur de chiffres...

Le premier message correspond à ton cas, pour mieux comprendre (donc pas bon)

Le deuxième message correspond à la solution proposée

Spouns a écrit :
If Val(Me.Abox9.Value) = "" Then Me.Abox9.BackColor = &HFFFFFF
If Val(Me.Abox9.Value) < Val(Me.ABox10.Value) Then Me.Abox9.BackColor = &HFF&
If Val(Me.Abox9.Value) > Val(Me.ABox10.Value) Then Me.Abox9.BackColor = &HFF00&

mais cela créer des erreurs :/

Supprimer le "Val" de la première ligne (ligne vérifiant que différent de "")

Val convertit en double, donc on ne peut pas comparer un double (numérique) avec "" (chaîne)

Cf nouvelle PJ, bouton orange, à tester

Pour LouReed, le problème de CDbl est qu'il entraînera une erreur si la valeur saisie n'est pas du numérique.

L'avantage de Val est qu'il peut avoir comme argument une valeur alphanumérique (exemple "toto", et dans ce cas Val("toto") renvoie 0, alors que CDbl("toto") plante),

Bouben

C'est ce qui me semblait, j'ai voulu prévenir et je me suis abstenu...

Souvenir d'un code "résolu" sur ce forum, mais j'ai la mémoire qui flanche...

@ bientôt

LouReeD

Bonjour,

le pb avec Val x'est qu'il faut traiter aussi le séparateur numérique si on a affaire à des décimaux.

Bien qu'ici ça ne semble pas le cas il vaut mieux y penser.

Val(95) => 9.5

mais

Val(95) => 9 !

Si ce n'est pas fait et que le fichier est transmis à quelqu'un ayant ce séparateur il faut espérer que l'anomalie apparaisse vite...

Donc si c'est le cas :

Val(Replace("9,5", ",", "."))

eric

bouben a écrit :

Supprimer le "Val" de la première ligne (ligne vérifiant que différent de "")

Val convertit en double, donc on ne peut pas comparer un double (numérique) avec "" (chaîne)

Cf nouvelle PJ, bouton orange, à tester

oki j'essai de suite

Bonjour,

Ceci fonctionne chez moi, 2 est inférieur à 10 :

Sub EtatStk()

    If Me.Abox9.Text = "" Then
        Me.Abox9.BackColor = &HFFFFFF
        Exit Sub
    End If

    If Val(Me.Abox9.Value) < Val(Me.Abox10.Value) Then Me.Abox9.BackColor = &HFF&
    If Val(Me.Abox9.Value) > Val(Me.Abox10.Value) Then Me.Abox9.BackColor = &HFF00&

End Sub

C'est changé en Sub() car une fonction retourne généralement une valeur ou un tableau de valeurs et on ne s'en sert pas pour effectuer des modifications "physiques" sur des objets.

ouki super ca marche le Val

Merci beaucoup, on en apprend tout les jours sur ce forum

Rechercher des sujets similaires à "grand que"