Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

problème if avec plusieurs égale???

5 réponses
Avatar
le_troll
Bonjour, je fais:

If Combo1(0).ListIndex = Combo1(1).ListIndex = Combo1(2).ListIndex =
Combo1(3).ListIndex = Combo1(4).ListIndex

Et ça semble ne pas fonctionner, pourtant mathématiquement ça devrait être
ok "x = y = z"
En fait je veux dire que si les 5 comboList.listindex sont égaux ça concerne
l'if (pas l'arbre, lol)...

En pratique, je saisis 93240 donc les index des combo ne sont pas identiques
à la saisie, et pourtant l'if se sent concerné, alors qu'il ne devrait pas,
où qu'est l'erreur svp???
--
Merci, @+, bye, Joe
torll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------

5 réponses

Avatar
Ludovic SOEUR
C'est normal,

VB évalue les instructions de gauche à droite.
Par example, si tu met if a=b=c, vb va calculer : if (a=b)=c
il va commencer par évaluer a=b. Ensuite il va evaluer le resultat qui sera
un BOOLEAN avec c...hum pas top

Par exemple :
si a=1,b=1 et c=1, vb testera d'abord a=b c'est à dire 1=1 et renverra true
puis VB testera true=1 qui sera toujours false

Si tu veux faire une telle condition, il te faut écrire
if (a=b) and (b=c)

"le_troll" a écrit dans le message de news:

Bonjour, je fais:

If Combo1(0).ListIndex = Combo1(1).ListIndex = Combo1(2).ListIndex > Combo1(3).ListIndex = Combo1(4).ListIndex

Et ça semble ne pas fonctionner, pourtant mathématiquement ça devrait être
ok "x = y = z"
En fait je veux dire que si les 5 comboList.listindex sont égaux ça


concerne
l'if (pas l'arbre, lol)...

En pratique, je saisis 93240 donc les index des combo ne sont pas


identiques
à la saisie, et pourtant l'if se sent concerné, alors qu'il ne devrait


pas,
où qu'est l'erreur svp???
--
Merci, @+, bye, Joe
torll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------






Avatar
le_troll
OK, merci :o)

--
Merci, @+, bye, Joe
torll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------


"Ludovic SOEUR" a écrit dans le message de news:

C'est normal,

VB évalue les instructions de gauche à droite.
Par example, si tu met if a=b=c, vb va calculer : if (a=b)=c
il va commencer par évaluer a=b. Ensuite il va evaluer le resultat qui


sera
un BOOLEAN avec c...hum pas top

Par exemple :
si a=1,b=1 et c=1, vb testera d'abord a=b c'est à dire 1=1 et renverra


true
puis VB testera true=1 qui sera toujours false

Si tu veux faire une telle condition, il te faut écrire
if (a=b) and (b=c)

"le_troll" a écrit dans le message de news:

> Bonjour, je fais:
>
> If Combo1(0).ListIndex = Combo1(1).ListIndex = Combo1(2).ListIndex > > Combo1(3).ListIndex = Combo1(4).ListIndex
>
> Et ça semble ne pas fonctionner, pourtant mathématiquement ça devrait


être
> ok "x = y = z"
> En fait je veux dire que si les 5 comboList.listindex sont égaux ça
concerne
> l'if (pas l'arbre, lol)...
>
> En pratique, je saisis 93240 donc les index des combo ne sont pas
identiques
> à la saisie, et pourtant l'if se sent concerné, alors qu'il ne devrait
pas,
> où qu'est l'erreur svp???
> --
> Merci, @+, bye, Joe
> torll75 AROBASE iFrance POINT com
> ------------------------------------------
> Ce message est plein de virus "certifiés"
> Le_Troll, éleveur de Trolls depuis César, qui disait:
> Avec une hache, celui qui tient le manche a toujours raison !
> ------------------------------------------
>
>
>
>




Avatar
Gilles RONSIN
"le_troll" , le ven. 04 juin 2004 10:55:19,
écrivait ceci:

Bonjour, je fais:


Salut,

If Combo1(0).ListIndex = Combo1(1).ListIndex = Combo1(2).ListIndex
= Combo1(3).ListIndex = Combo1(4).ListIndex

Et ça semble ne pas fonctionner, pourtant mathématiquement ça
devrait être ok "x = y = z"



La syntaxe normale est "valeur1 opérande valeur2"
If x=y And x=z and x=toto Then ...

En pratique, je saisis 93240 donc les index des combo ne sont pas
identiques à la saisie,



là c'est moi qui ne saisi pas :-)

et pourtant l'if se sent concerné, alors
qu'il ne devrait pas, où qu'est l'erreur svp???



En basic il y a confusion entre l'opérateur d'affectation :
a = b (a = b en C, a <- b en LSE, a := b en pascal)
et l'opérateur d'égalité

a = b (a == b en C, a = b en LSE, a = b en pascal)



--
Embryon de site : http://gilles.ronsin.free.fr
Nouvelles astuces : Interprêtation des évenements XP en "français"
(trad auto)
Il est impossible pour un optimiste d'être agréablement surpris.
Avatar
Patrice Henrio
je précise que même en mathématiques x=y=z n'est qu'une tolérance et n'est
pas légal. On doit écrire deux égalités avec un "and" entre les deux. En
logique mathématiques, le "and" est souvent ignoré car considéré comme
opérateur par défaut. Ainsi on n'écrit pas (x=y) et (y=z) mais (x=y)(y=z).
Voici un moyen de tester :
sub test
x=1
y=1
z=1
If x=y=z then msgbox true else msgbox false
end sub
Tel quel le msgbox false s'affiche
Si on remplace la troisième ligne par z=true, le msgbox true s'affiche
Avec cinq variables cela donne
sub test
x=9
y=3
z=2
t=4
u=0
If x=y=z=t=u then msgbox true else msgbox false
end sub
Dans ce cas on renvoie true en effet
x=y renvoie faux
faux=2 renvoie faux
faux=4 renvoie faux
faux=0 renvoie vrai (car 0 vaut faux)
D'ailleurs si on remplace u=0 par u=1, le résultat renvoyé est false.





"Gilles RONSIN" a écrit dans le message de
news:
"le_troll" , le ven. 04 juin 2004 10:55:19,
écrivait ceci:

> Bonjour, je fais:
Salut,

> If Combo1(0).ListIndex = Combo1(1).ListIndex = Combo1(2).ListIndex
> = Combo1(3).ListIndex = Combo1(4).ListIndex
>
> Et ça semble ne pas fonctionner, pourtant mathématiquement ça
> devrait être ok "x = y = z"

La syntaxe normale est "valeur1 opérande valeur2"
If x=y And x=z and x=toto Then ...

> En pratique, je saisis 93240 donc les index des combo ne sont pas
> identiques à la saisie,

là c'est moi qui ne saisi pas :-)

> et pourtant l'if se sent concerné, alors
> qu'il ne devrait pas, où qu'est l'erreur svp???

En basic il y a confusion entre l'opérateur d'affectation :
a = b (a = b en C, a <- b en LSE, a := b en pascal)
et l'opérateur d'égalité

a = b (a == b en C, a = b en LSE, a = b en pascal)



--
Embryon de site : http://gilles.ronsin.free.fr
Nouvelles astuces : Interprêtation des évenements XP en "français"
(trad auto)
Il est impossible pour un optimiste d'être agréablement surpris.


Avatar
Zoury
une alternative pratique pour ce genre de situation pourrait être
l'utilisation des opérateurs binaires.

comme dans cette fonction pax exemple :
'***
Private Function CompareCombosListIndex(ByRef cbo As Object) As Boolean

Dim i As Long
Dim cb As ComboBox
Dim lIndex As Long

' on boucle et compare
lIndex = cbo(cbo.LBound).ListIndex
CompareCombosListIndex = True
For Each cb In cbo
CompareCombosListIndex = CompareCombosListIndex And (lIndex cb.ListIndex)
Next cb

End Function
'***

Tu lui passe le tableau de contrôle et il te renvoit la valeur de la
comparaison peu importe le nombre de contrôle que le tableau contient. De
plus si ton tableau de contrôle saute des Indexes, l'algorithme fonctionne
quand même étant donnée qu'on utilise un For Each et non un For.. et
finalement cela te permettrait de modifier ton tableau de contrôle (ajouter
un enlever des combobox) sans retoucher à ton code. ;O)

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

"le_troll" a écrit dans le message de
news:
Bonjour, je fais:

If Combo1(0).ListIndex = Combo1(1).ListIndex = Combo1(2).ListIndex > Combo1(3).ListIndex = Combo1(4).ListIndex

Et ça semble ne pas fonctionner, pourtant mathématiquement ça devrait être
ok "x = y = z"
En fait je veux dire que si les 5 comboList.listindex sont égaux ça


concerne
l'if (pas l'arbre, lol)...

En pratique, je saisis 93240 donc les index des combo ne sont pas


identiques
à la saisie, et pourtant l'if se sent concerné, alors qu'il ne devrait


pas,
où qu'est l'erreur svp???
--
Merci, @+, bye, Joe
torll75 AROBASE iFrance POINT com
------------------------------------------
Ce message est plein de virus "certifiés"
Le_Troll, éleveur de Trolls depuis César, qui disait:
Avec une hache, celui qui tient le manche a toujours raison !
------------------------------------------