Page 1 sur 1

[R] IF OR AND...

Posté : jeu. 03 juil. 2008 11:39
par DimVar
Bonjour,

Question basique :

Je cherche à faire un test sur une variable qui pourrait contenir que 2 valeurs.

Je pense donc à ce script :

Code : Tout sélectionner

$toto = inputbox ("","entrez 10 ou 14")
If $toto <> "10" OR $toto <> "14" then
Msgbox (0,"","erreur de saisie)
EndIf
Ce script m'affiche toujours la msgbox... Comprends pas Chef...

Re: [..]IF OR AND...

Posté : jeu. 03 juil. 2008 11:54
par timmalos
Dans ton script, tu demande à ta variable $toto d'être
:arrow: Egal à 10
:!: ET :!:
:arrow: Egal à 20

Elle va avoir du mal à remplir ces conditions :D
Non sérieusement,
Ton petit probleme vient du fait que tu n'a pas pensé qu'un "ou" équivaut à un "et"au negatif:

il suffit de mettre:

Code : Tout sélectionner

$toto = inputbox ("","entrez 10 ou 14")
If $toto <> "10"   AND  $toto   <> "20" then
Msgbox (0,"","erreur de saisie)
EndIf
Ce qui equivaut au positif à:

Code : Tout sélectionner

$toto = inputbox ("","entrez 10 ou 14")
If $toto = "10"  Or $toto   = "20" then
... blabla...
Else
Msgbox (0,"","erreur de saisie)
EndIf
Et là jen'ai pas testé mais ca devrait marcher chef !!!

Re: [..]IF OR AND...

Posté : jeu. 03 juil. 2008 12:08
par DimVar
Oui, ca marche. Quel boulet, j'ai même pas essayé le "AND"...
Pourtant en français (grammaticalement), je traduirais ça en disant :
"Si ma variable n'est pas egale à 10 OU 20 alors...blablabla..."
Troublant...

Merci M'sieur ;)

PS : Si je veux renvoyer l'utilisateur à l'inputbox en cas de mauvaise saisie, une idée ?
Je penserais bien à un "GOTO Inputbox" mais autoit le permet pas...

Re: [..]IF OR AND...

Posté : jeu. 03 juil. 2008 12:17
par timmalos
plusieurs méthodes, sois tu fais une boucle

Code : Tout sélectionner

WHile 1
$toto = inputbox ("","entrez 10 ou 14")
If $toto = "10"  Or $toto   = "20" then
... blabla...
Else
Msgbox (0,"","erreur de saisie)
EndIf

WEnd
Dans ce cas, soit tu rentre la bonne valeur et tu fais le blabla, sois tu ne rentre pas la bonne valeur, tu as le msgbox et tu retourne à l'inputbox.
Si ton programme est complexe, je te conseille plutot ca:

Code : Tout sélectionner

$ok = 0
WHile $ok <> 1
$toto = inputbox ("","entrez 10 ou 14")

If $toto = "10"  Or $toto   = "20" then
$ok = 1
Else
Msgbox (0,"","erreur de saisie)
EndIf

WEnd
...Blabla...
Si tu teste comme ca, ils vont donner les memes resultats, mais la 2eme est beaucoup mieux car on sort de la boucle au plus vite, c'et toujours source d'erreur surtout si tu as deja une boule principale en "While 1"

Re: [R] IF OR AND...

Posté : jeu. 03 juil. 2008 17:23
par DimVar
Grand merci, pour la 1ere methode, comment sort tu de la boucle :?:

Re: [R] IF OR AND...

Posté : jeu. 03 juil. 2008 18:31
par timmalos
La première methode n'est pas la meilleure ...
Si tu veux vriament l'utiliser , tu sors de la boucle avec un

Hotkeyset("{ENTER}","sortir")


func sortir()
Exit
EndFunc

Re: [R] IF OR AND...

Posté : jeu. 03 juil. 2008 18:34
par jbnh
j'aurais plus dit exitloop, la méthode de timmalos est pour quitter le script

Re: [R] IF OR AND...

Posté : jeu. 03 juil. 2008 18:37
par timmalos
:oops: Sry j'ai lu trop rapidement:)

Re: [R] IF OR AND...

Posté : ven. 04 juil. 2008 09:18
par DimVar
Ok, merci à tous. :wink: