[VBS] Retour a un inputbox ...

zaert Messages postés 42 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 18 septembre 2005 - 31 juil. 2005 à 13:30
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 - 2 août 2005 à 00:40
Bonjour tout le monde ! Je suis en train d'elaborer un petit logiciel simpa (logiciel niveau debutant :D) et j'ai un petit probleme avec celui ci ! Voila le code :

dim multi1
dim multi2
dim mess
dim style
dim response
dim mystring


Msgbox "Bienvenue dans le programme de Révision des table de multiplication",vbInformation
Msgbox "Ce logiciel a été crée par ZaerT",vbInformation
Msgbox "Avant de commencer , nous allons voir quelques règles de ce petit programme !",vbInformation
Msgbox "Alors , tu devras marquer uniquement la reponse en chiffre (ex : 1 fois 1 > tu ecris 1) ! Tu pourras , si tu t'es trompé(e) , recommencer ou passer a la table suivante ! ",vbInformation


mess = "La reponse que tu as donnée est fausse ! Retante ta chance ou passe cette multiplication !"
style = vbRetryCancel + 48


while multi1 = ""
multi1 = inputbox ("A combien est égale 1 fois 1 ?","Table de multiplication du nombre 1","Reponse")
wend
if multi1 = 1 then
Msgbox "La reponse que tu as donnée est : "&multi1&"",vbInformation
Msgbox "La reponse que tu as donnée est exact ! On passe a la multiplication suivante !",48
else
Msgbox "La reponse que tu as donnée est : "&multi1&"",vbInformation
response = msgbox(mess, style)
if response = vbRetry then
mystring = multi1 <<<<<<<<<<<<<<<<<<< Probleme !!!!!!
elseif response = vbCancel then
mystring = wscript.quit
end if
end if


while multi2 = ""
multi2 = inputbox ("A combien est égale 1 fois 2 ?","Table de multiplication du nombre 1","Reponse")
wend
if multi2 = 2 then
Msgbox "La reponse que tu as donnée est : "&multi2&"",vbInformation
Msgbox "La reponse que tu as donnée est exact ! On passe a la multiplication suivante !",48
else
Msgbox "La reponse que tu as donnée est : "&multi2&"",vbInformation
response = msgbox(mess, style)
if response = vbRetry then
mystring = multi2
elseif response = vbCancel then
mystring = wscript.quit
end if
end if

Donc voila le code (:P dsl si il est un peu long et nul mais bon je debute :X) ! Vous voyez donc la fleches "Probleme !!!" , je n'arrive pas a retourner a la question "Combien font 1*1 ?" quand une personne c'est trompée dans la reponse et veux retanter la question (donc vbRetry) , au lieu de revenir a la question "combien font 1*1" il passe a la question 2 "combien font 1*2" Comment y remedier , y a t'il un moyen ?

21 réponses

PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 juil. 2005 à 14:40
salut
tout d'abord, 35 msgbox, c'est pas top.....
je vais essayer de reformer un peu tout çà :

'déclaration des variables en string ("Dim Mavar" déclare en Variant, à éviter)
Dim Multi1$, Multi2$, MessFaux$, StyleBox$, Mystring$
Dim Response As Long

Msgbox "Bienvenue dans le programme de Révision des table de multiplication" & vbcrlf & _
"Ce logiciel a été crée par ZaerT." & vbcrlf & "Avant de commencer , nous allons voir quelques " & _
"règles de ce petit programme !" & vbcrlf & "Alors , tu devras marquer uniquement la reponse en " & _
"chiffres (ex : 1 fois 1 > tu ecris 1) !" & vbcrlf & "Tu pourras , si tu t'es trompé(e) , recommencer " & _
"ou passer a la table suivante ! ", vbInformation, "Bienvenue"

'init variables MsgBox
MessFaux = " est une reponse fausse ! Retante ta chance ou passe cette multiplication !"
styleBox = vbRetryCancel + 48

while multi1 = ""
multi1 = inputbox ("A combien est égale 1 fois 1 ?","Table de multiplication du nombre 1","Reponse")
wend

if multi1 = "1" then
Msgbox "1 est la bonne réponse! On passe a la multiplication suivante !", 48
else
response = msgbox(multi1 & messFaux, styleBox)
end if

If Response = vbRetry Then
Mystring = Multi1 'plus de problème
ElseIf Response = vbCancel Then
Mystring = wscript.quit
End If

voilà

PCPT
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 juil. 2005 à 14:47
ps : il y a tout de même pas mal à corriger, là j'ai juste regardé la fonctionnalité + ton erreur...


on peut entre autre remplacer

If Response = vbRetry Then
Mystring = Multi1 'plus de problème
ElseIf Response = vbCancel Then
Mystring = wscript.quit
End If

par


If Response vbRetry Then Mystring Multi1 else wscript.quit
'puisque d'ailleurs, Mystring = wscript.quit provoquerait une erreur.....

PCPT
0
zaert Messages postés 42 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 18 septembre 2005
31 juil. 2005 à 15:44
Ok merci , je sais pour tout mes erreurs mais tu comprend je suis encore debutant et je n'est pas encore bien assimiller tout ce qui est du style , variable mais surtout commande (ou les placers ? , a quoi servent t'elle ?) Mais en tout les cas merci de ton aide j'accepte ta rep. ! Ciao
0
zaert Messages postés 42 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 18 septembre 2005
31 juil. 2005 à 15:46
Juste un dernier truc a quoi il sert le "as long" ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 juil. 2005 à 16:00
(MSDN)

Long, type de données

Les variables de type Long (entier long) sont stockées sous la forme de nombres signés de 32 bits (4 octets) dont la valeur est comprise entre -2 147 483 648 et 2 147 483 647. Le caractère de déclaration de type Long est le signe &.

@+
PCPT
0
CTAC Messages postés 133 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 8 juin 2012 5
31 juil. 2005 à 18:47
Bonjour.


Attention, les variables en vbs ne sont pas typés.


ctac


VBScript Variables

<!--NONSCROLLING BANNER END-->


A variable is a convenient placeholder that refers to a computer memory location where you can store program information that may change during the time your script is running. For example, you might create a variable called
ClickCount
to store the number of times a user clicks an object on a particular Web page. Where the variable is stored in computer memory is unimportant. What is important is that you only have to refer to a variable by name to see or change its value. In VBScript, variables are always of one fundamental data type, [mk:@MSITStore:C:\Program%20Files\Microsoft%20Windows%20Script\ScriptDocs\SCRIPT56.CHM::/html/vbsdatatype.htm Variant].


Declaring Variables

You declare variables explicitly in your script using the [mk:@MSITStore:C:\Program%20Files\Microsoft%20Windows%20Script\ScriptDocs\SCRIPT56.CHM::/html/vsstmdim.htm Dim] statement, the [mk:@MSITStore:C:\Program%20Files\Microsoft%20Windows%20Script\ScriptDocs\SCRIPT56.CHM::/html/vsstmpublic.htm Public] statement, and the [mk:@MSITStore:C:\Program%20Files\Microsoft%20Windows%20Script\ScriptDocs\SCRIPT56.CHM::/html/vsstmprivate.htm Private] statement. For example:

Dim DegreesFahrenheit


You declare multiple variables by separating each variable name with a comma. For example:

Dim Top, Bottom, Left, Right


You can also declare a variable implicitly by simply using its name in your script. That is not generally a good practice because you could misspell the variable name in one or more places, causing unexpected results when your script is run. For that reason, the [mk:@MSITStore:C:\Program%20Files\Microsoft%20Windows%20Script\ScriptDocs\SCRIPT56.CHM::/html/vsstmoptionexplicit.htm Option Explicit] statement is available to require explicit declaration of all variables. The Option Explicit statement should be the first statement in your script.
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
31 juil. 2005 à 20:24
ok, désolé, je suis que sous VB(6).
il y a bcp de différence avec VBA, mais je supposais tout de même que "typer" ses variables était important (et faisable...)
PCPT
0
zaert Messages postés 42 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 18 septembre 2005
31 juil. 2005 à 23:04
No probleme , merci pour ton aide !
0
zaert Messages postés 42 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 18 septembre 2005
1 août 2005 à 23:05
Re , dsl mais en faite je me suis rendu compte que le VBS ne marche toujours pas , meme celui que tu m'as donnée , je m'explique :

Dim Multi1$, Multi2$, MessFaux$, StyleBox$, Mystring$< Pb : le carractere est incorrect
Dim Response As Long

Msgbox "Bienvenue dans le programme de Révision des table de multiplication" & vbcrlf & _
"Ce logiciel a été crée par ZaerT." & vbcrlf & "Avant de commencer , nous allons voir quelques " & _
"règles de ce petit programme !" & vbcrlf & "Alors , tu devras marquer uniquement la reponse en " & _
"chiffres (ex : 1 fois 1 > tu ecris 1) !" & vbcrlf & "Tu pourras , si tu t'es trompé(e) , recommencer " & _
"ou passer a la table suivante ! ", vbInformation, "Bienvenue"

MessFaux = " est une reponse fausse ! Retante ta chance ou passe cette multiplication !"
styleBox = vbRetryCancel + 48

while multi1 = ""
multi1 = inputbox ("A combien est égale 1 fois 1 ?","Table de multiplication du nombre 1","Reponse")
wend

if multi1 = "1" then
Msgbox "1 est la bonne réponse! On passe a la multiplication suivante !", 48
else
response = msgbox(multi1 & messFaux, styleBox)
end if

If Response = vbRetry Then
Mystring = Multi1
ElseIf Response = vbCancel Then
Mystring = wscript.quit
End If

Voila mes problemes recent a la suite de ta reponse . J'ai donc essaier d'enlever les $ que tu avait au debut script pour la declaration des variables et j'ai egalement enlever le As Long que tu avait mis apres Dim Response et la , le VBS ne m'affiche plus les message d'erreur mais le probleme est que quand je me suis tromper et que je clique sur le bouton recommencer le script s'arrete il ne me remet pas la question :"Combient font 1 fois 1 ?" ! Est ce possible de rectifier sa ? Je rappelle que je suis en vbs !
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
1 août 2005 à 23:33
salut
$ = As String
donc tu as bien fait des les enlevers (String & Long)

pour l'erreur, c'est parce que j'ai repris ton code, supposant que ce n'était qu'un extrait.....

je te met la syntaxe, sans savoir si c'est fonctionnel pour VBS...

Dim Multi1, Multi2, MessFaux, StyleBox, Mystring, Response

Msgbox "Bienvenue dans le programme de Révision des table de multiplication" & vbcrlf & _
"Ce logiciel a été crée par ZaerT." & vbcrlf & "Avant de commencer , nous allons voir quelques " & _
"règles de ce petit programme !" & vbcrlf & "Alors , tu devras marquer uniquement la reponse en " & _
"chiffres (ex : 1 fois 1 > tu ecris 1) !" & vbcrlf & "Tu pourras , si tu t'es trompé(e) , recommencer " & _
"ou passer a la table suivante ! ", vbInformation, "Bienvenue"

MessFaux = " est une reponse fausse ! Retante ta chance ou passe cette multiplication !"
styleBox = vbRetryCancel + 48

DEBUTBOUCLE: 'début

while multi1 = ""
multi1 = inputbox ("A combien est égale 1 fois 1 ?","Table de multiplication du nombre 1","Reponse")
wend

if multi1 = "1" then
Msgbox "1 est la bonne réponse! On passe a la multiplication suivante !", 48
else
response = msgbox(multi1 & messFaux, styleBox)
end if

If Response = vbRetry Then
Mystring = Multi1
Goto DEBUTBOUCLE 'si ré-essayer, remonte au début
ElseIf Response = vbCancel Then
Mystring = wscript.quit
End If

PCPT
0
zaert Messages postés 42 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 18 septembre 2005
1 août 2005 à 23:42
ok merci j'essaie tout de suite
0
zaert Messages postés 42 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 18 septembre 2005
1 août 2005 à 23:47
Erf je vien de le tester le code :

Dim Multi1, Multi2, MessFaux, StyleBox, Mystring, Response


Msgbox "Bienvenue dans le programme de Révision des table de multiplication" & vbcrlf & _
"Ce logiciel a été crée par ZaerT." & vbcrlf & "Avant de commencer , nous allons voir quelques " & _
"règles de ce petit programme !" & vbcrlf & "Alors , tu devras marquer uniquement la reponse en " & _
"chiffres (ex : 1 fois 1 > tu ecris 1) !" & vbcrlf & "Tu pourras , si tu t'es trompé(e) , recommencer " & _
"ou passer a la table suivante ! ", vbInformation, "Bienvenue"


MessFaux = " est une reponse fausse ! Retante ta chance ou passe cette multiplication !"
styleBox = vbRetryCancel + 48


DEBUTBOUCLE


while multi1 = ""
multi1 = inputbox ("A combien est égale 1 fois 1 ?","Table de multiplication du nombre 1","Reponse")
wend


if multi1 = "1" then
Msgbox "1 est la bonne réponse! On passe a la multiplication suivante !", 48
else
response = msgbox(multi1 & messFaux, styleBox)
end if


If Response = vbRetry Then
Mystring = Multi1
Goto DEBUTBOUCLE <<<<<<<<<
0
zaert Messages postés 42 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 18 septembre 2005
1 août 2005 à 23:47
Erf je vien de le tester le code :

Dim Multi1, Multi2, MessFaux, StyleBox, Mystring, Response


Msgbox "Bienvenue dans le programme de Révision des table de multiplication" & vbcrlf & _
"Ce logiciel a été crée par ZaerT." & vbcrlf & "Avant de commencer , nous allons voir quelques " & _
"règles de ce petit programme !" & vbcrlf & "Alors , tu devras marquer uniquement la reponse en " & _
"chiffres (ex : 1 fois 1 > tu ecris 1) !" & vbcrlf & "Tu pourras , si tu t'es trompé(e) , recommencer " & _
"ou passer a la table suivante ! ", vbInformation, "Bienvenue"


MessFaux = " est une reponse fausse ! Retante ta chance ou passe cette multiplication !"
styleBox = vbRetryCancel + 48


DEBUTBOUCLE


while multi1 = ""
multi1 = inputbox ("A combien est égale 1 fois 1 ?","Table de multiplication du nombre 1","Reponse")
wend


if multi1 = "1" then
Msgbox "1 est la bonne réponse! On passe a la multiplication suivante !", 48
else
response = msgbox(multi1 & messFaux, styleBox)
end if


If Response = vbRetry Then
Mystring = Multi1
Goto DEBUTBOUCLE <<<<<<<<<
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
1 août 2005 à 23:53
DEBUTBOUCLE:
'début

PCPT
0
zaert Messages postés 42 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 18 septembre 2005
1 août 2005 à 23:55
Ouai j'y est regarder apres mais sa marche pas , j'ai regarde se site http://www.cybwarrior.com/articles/read.php?id=89#iii

pour utiliser la fonction Goto mais sa marche pas sa me met toujours instruction attendue
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
2 août 2005 à 00:02
(MSDN)


GoTo, instruction, exemple

Cet exemple utilise l'instruction GoTo pour se brancher aux étiquettes de ligne indiquées au sein d'une procédure.

Sub GotoStatementDemo()
Dim Number, MyString
   Number =  1    ' Initialise la variable.
   ' &#201;value Number et se branche &#224; l'&#233;tiquette
   ' appropri&#233;e.
   If Number = 1 Then  GoTo  Line1 Else GoTo Line2
   
Line1:
   MyString  = "Number est &#233;gal &#224; 1"
   GoTo LastLine   ' Passe &#224; la derni&#232;re ligne.
Line2:
   ' L'instruction suivante ne peut jamais &#234;tre
   ' ex&#233;cut&#233;e.
   MyString = "Number est &#233;gal &#224; 2"
LastLine: 
   Debug.Print MyString   ' Affiche "Number est
                        ' &#233;gal &#224; 1" dans la fen&#234;tre
                        ' Ex&#233;cution.
End Sub


désolé, je ne sais pas s'il y a une syntaxe particulière pour VBS....
je ne vois pas quoi te dire d'autre
PCPT
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
2 août 2005 à 00:03
woups....
çà sera plus facile à lire ;)

GoTo, instruction, exemple
Cet exemple utilise l'instruction GoTo pour se brancher aux étiquettes de ligne indiquées au sein d'une procédure.


Sub GotoStatementDemo()
Dim Number, MyString
Number = 1 ' Initialise la variable.
' Évalue Number et se branche à l'étiquette
' appropriée.
If Number = 1 Then GoTo Line1 Else GoTo Line2

Line1:
MyString = "Number est égal à 1"
GoTo LastLine ' Passe à la dernière ligne.
Line2:
' L'instruction suivante ne peut jamais être
' exécutée.
MyString = "Number est égal à 2"
LastLine:
Debug.Print MyString ' Affiche "Number est
' égal à 1" dans la fenêtre
' Exécution.
End Sub

PCPT
0
zaert Messages postés 42 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 18 septembre 2005
2 août 2005 à 00:03
LoL je suis en train de mater le meme exemple , merci quand meme de ton aide je te remercie ciao et bonne prog. !
0
zaert Messages postés 42 Date d'inscription vendredi 21 janvier 2005 Statut Membre Dernière intervention 18 septembre 2005
2 août 2005 à 00:11
Juste un dernier truc , apparement tu as raison il doit y avoir une syntaxe particuliere en VBS car j'ai modifier un peu mon code et voila ce que sa donne :

Dim Multi1, Multi2, MessFaux, StyleBox, Response, Mystring


Msgbox "Bienvenue dans le programme de Révision des table de multiplication" & vbcrlf & _
"Ce logiciel a été crée par ZaerT." & vbcrlf & "Avant de commencer , nous allons voir quelques " & _
"règles de ce petit programme !" & vbcrlf & "Alors , tu devras marquer uniquement la reponse en " & _
"chiffres (ex : 1 fois 1 > tu ecris 1) !" & vbcrlf & "Tu pourras , si tu t'es trompé(e) , recommencer " & _
"ou passer a la table suivante ! ", vbInformation, "Bienvenue"


MessFaux = " est une reponse fausse ! Retante ta chance ou passe cette multiplication !"
styleBox = vbRetryCancel + 48


DEBUTBOUCLE:
while multi1 = ""
multi1 = inputbox ("A combien est égale 1 fois 1 ?","Table de multiplication du nombre 1","Reponse")
wend


if multi1 = "1" then
Msgbox "1 est la bonne réponse! On passe a la multiplication suivante !", 48
else
response = msgbox(multi1 & messFaux, styleBox)
end if


If Response = vbRetry Then
Mystring = Goto multi1 <<<<<<<<<<<<<<<<<<<<<<<<<Ce que j'ai modifier
ElseIf Response = vbCancel Then
Mystring = wscript.quit
End If

Et cette fois sa me met erreur de syntaxe donc ou chercher pour trouver LA syntaxe particuliere ?
0
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
2 août 2005 à 00:38
Mystring = Goto multi1 <<<<<<<<<<<<<<<<<<<<<<<<<Ce que j'ai modifier

bon!

GOTO = "aller à"

tu connais un peu l'HTML?
la comparaison serait (...) plus simple si oui ;)

une page HTML, tu peux faire un lien ^top
et hop, comme par magie, il retourne en haut de page

ce lien est en fait un appel à la même page sur ce qu'on appelle une ancre
en début de page :
click top ici

c'est pareil, là on fait une ancre au début
DEBUTBOUCLE:

et dans la condition en bas, si ré-essayer
1. Mystring recoit le contenue de la variable Multi1
2. on retourne à l'ancre DEBUTBOUCLE

toi, tu lui dis que la variable MyString reçoit un point de retour....., forcément, çà n'a aucun sens....

essaie de vérifier ta syntaxe par rapport à mes précédents posts. s'il y avait une syntaxe particulière VBA, je suppose que tu l'aurais déjà trouvé...
PCPT
0