OVH Cloud OVH Cloud

petit pb avec else

4 réponses
Avatar
berthelagrandepatte
J'ai ecrit ce peit programme venant d'un cours de vbscript pour me
familiariser et je ne comprend pas pourquoi il ne fonctionne pas a la ligne
else .Voici ce programme:

'if - then

i=3
if i>0 then
wscript.echo i & "est plus grand que 0"
end if

'if - then sur 1 ligne

if i>2 then wscript.echo i & " est plus grand que 2": i=i+1
wscript.echo "i=" & i

'if - then - else

if i<10 then wscript.echo i & " est plus petit que 10" : i=i-1
Else
wscript.echo i & "est plus grand ou egal à 10": i=i+1
end if
wscript.echo "i=" & i

Il bloque systématiquement à else en me précisant "erreur de syntaxe".

Merci de vos réponses

4 réponses

Avatar
Gege
Je ne suis pas sur que vous ayez le dorit d'avoir deux instructions sur la
meme ligne comme en C, en C++ ou en Java. Essayez plutot cela :

if i<10 then
wscript.echo i & " est plus petit que 10"
i=i+1
Else
wscript.echo i & "est plus grand ou egal à 10
i=i-1
End If






"berthelagrandepatte" wrote:

J'ai ecrit ce peit programme venant d'un cours de vbscript pour me
familiariser et je ne comprend pas pourquoi il ne fonctionne pas a la ligne
else .Voici ce programme:

'if - then

i=3
if i>0 then
wscript.echo i & "est plus grand que 0"
end if

'if - then sur 1 ligne

if i>2 then wscript.echo i & " est plus grand que 2": i=i+1
wscript.echo "i=" & i

'if - then - else

if i<10 then wscript.echo i & " est plus petit que 10" : i=i-1
Else
wscript.echo i & "est plus grand ou egal à 10": i=i+1
end if
wscript.echo "i=" & i

Il bloque systématiquement à else en me précisant "erreur de syntaxe".

Merci de vos réponses


Avatar
Jean-Claude BELLAMY
Dans le message :,
berthelagrandepatte a pris
la peine d'écrire ce qui suit :

J'ai ecrit ce peit programme venant d'un cours de vbscript pour me
familiariser et je ne comprend pas pourquoi il ne fonctionne pas a la
ligne else .Voici ce programme:
[...]
'if - then - else

if i<10 then wscript.echo i & " est plus petit que 10" : i=i-1
Else
wscript.echo i & "est plus grand ou egal à 10": i=i+1
end if
wscript.echo "i=" & i

Il bloque systématiquement à else en me précisant "erreur de syntaxe".


NORMAL !
En VBS, dans le cas d'un ensemble if ... then ... else ... [end if],
- soit on écrit TOUT sur une ligne (sans END IF)
- soit on écrit par bloc (avec END IF)
mais on ne mélange pas les deux !

Donc 2 seules syntaxes valides sont :

1) Sur une seule ligne :
if i<10 then wscript.echo i & " est plus petit que 10" : i=i-1 Else
wscript.echo i & "est plus grand ou egal à 10": i=i+1

1) Sur plusieurs lignes :
if i<10 then
wscript.echo i & " est plus petit que 10" : i=i-1
Else
wscript.echo i & "est plus grand ou egal à 10": i=i+1
end if


Toi quand tu écris
if i<10 then wscript.echo i & " est plus petit que 10" : i=i-1
l'interpréteur se dit "OK, il a prévu tout le test sur 1 ligne"

puis il découvre une NOUVELLE ligne qui commence par
Else

!!!!!!!
Une ligne de code (isolée) NE PEUT PAS commencer par ELSE !

C'est valable en français de tous les jours d'ailleurs !
Imagine un peu une phrase qui commencerait par :
"Sinon, ...."
???

--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] -
http://www.bellamyjc.org ou http://jc.bellamy.free.fr

Avatar
Fred
Dans : news:,
Gege disait :
Je ne suis pas sur que vous ayez le dorit d'avoir deux instructions
sur la meme ligne comme en C, en C++ ou en Java. Essayez plutot cela :

if i<10 then
wscript.echo i & " est plus petit que 10"
i=i+1
Else
wscript.echo i & "est plus grand ou egal à 10
i=i-1
End If



Oui, ceci va fonctionner, mais pas comme conséquence du fait de mettre
les instructions sur deux lignes.
L'erreur dans le script initial était de mettre la première série
d'instructions sur la même ligne que le Then. Quand on utilise le Else
et/ou le End If, il doit y avoir un retour à la ligne après le Then.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

Avatar
Jean-Claude BELLAMY
Dans le message :,
Fred a pris la peine d'écrire ce qui suit :
[...]
L'erreur dans le script initial était de mettre la première série
d'instructions sur la même ligne que le Then. Quand on utilise le Else
et/ou le End If, il doit y avoir un retour à la ligne après le Then.


Faux partiellement !

Quand on utilise le Else, il ne doit pas y avoir nécessairement de retour à
la ligne après le Then.
If <condition> then <action1> else <action2>
est parfaitement valide !




--
May the Force be with You!
La Connaissance s'accroît quand on la partage
----------------------------------------------------------
Jean-Claude BELLAMY [MVP] -
http://www.bellamyjc.org ou http://jc.bellamy.free.fr