[R] Perdu dans les if avec inputbox et msgbox.....

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

[R] Perdu dans les if avec inputbox et msgbox.....

#1

Message par cedric »

Bonjour à tous,

J'essaie de faire des Inputbox et msgbox.
Je les ai bien mais je n'arrive pas à obtenir ce que je veux, aussi je fais appel à vous pour que vous puissiez m'aiguiller un peu.....
J'ai beau lire et relire les tutos mais en lisant je comprend et en faisant je ne comprend plus rien ......
D'avance merci.

Mon but :

Inputbox01 - Une première Inputbox (Inputbox01) demandant de rentrer un nombre comprenant obligatoirement 3 chiffres.
J'aimerais que quand on clic sur "OK" mon script continu et que quand on clic sur "CANCEL" le script s'arrête.
J'aimerais que si l'utilisateur ne rentre pas de chiffre ou que le nombre de chiffre n'est pas égal à 3 caractères alors une msgbox (disons msgbox01) l'en informe (si cela est faisable).
msgbox01 - Si l'utilisateur clic sur "RETRY" alors on revient à Inputbox01, s'il clic sur "CANCEL", on quitte le script.
Inputbox02 - Une seconde InputBox (Inputbox02) demandant de rentrer un nombre comprenant obligatoirement 4 chiffres.
J'aimerais que quand on clic sur "OK" mon script continu et que quand on clic sur "CANCEL" le script s'arrête.
J'aimerais que si l'utilisateur ne rentre pas de chiffre ou que le nombre de chiffre n'est pas égal à 4 caractères alors une msgbox (msgbox02) l'en informe (si cela est faisable).
msgbox02 - Si l'utilisateur clic sur "RETRY" alors on revient à Inputbox02, s'il clic sur "CANCEL", on quitte le script.
msgbox03 - Enfin une dernière msgbox qui montre les données saisis à l'utilisateur avec 3 boutons, le "OK" qui continue le script, le "CANCEL" qui quitte le script et le "RETRY" qui revient à la Inputbox01.

Voici ce que ça donne pour le moment.

Code : Tout sélectionner

$codecentre = InputBox ("TAG-UnitY...", "Entrez votre code de centre :", "", "", 300, 50)
if @error = 1 Then
    Exit
Else
$codeunite = InputBox ("TAG-UnitY...", "Entrez votre code d'unité :", "", "", 300, 50)
if @error = 1 Then
    Exit
Else
$tagunity = $codecentre & "_" & $codeunite
Msgbox (4096, "Info", "Votre TAG d'unité est : " & $tagunity)
EndIf
EndIf
$archi = @OSArch
; Je copie ce qui m'est nécéssaire pour la génération et la compilation de mon application
SplashTextOn ("Informations", "Chargement des outils nécessaires...", 300 , 70)
 

J'ai essayé de mettre aussi un truc du genre :

Code : Tout sélectionner

if $codecentre = 0 then Msgbox (5,"Information","Vous n'avez pas correctement saisi les informations")
Mais je ne dois pas bien le placer car dès que je le met, non seulement il ne fonctionne pas mais en plus la partie "if @error = 1 Then" ne fonctionne plus non plus....


Merci d'avance pour votre aide.

C.
Modifié en dernier par cedric le ven. 05 nov. 2010 14:01, modifié 1 fois.
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

Re: [...] Perdu dans les if avec inputbox et msgbox.....

#2

Message par cedric »

Bon alors je me répond à moi même.....

J'ai un peu mieux compris les boucles While.

Mon code donne donc ceci :

Code : Tout sélectionner

While 1
$codecentre = InputBox ("TAG-UnitY...", "Entrez votre code de centre :", "", "", 300, 50)
if @error = 1 Then
    Exit
EndIf
if $codecentre = "" Then
$msgbox01 = MsgBox (5,"Erreur", "Vous n'avez pas saisi correctement les informations")
    if $msgbox01 = 2 Then
        Exit
Endif
EndIf
ExitLoop
    WEnd

While 1
$codeunite = InputBox ("TAG-UnitY...", "Entrez votre code d'unité :", "", "", 300, 50)
if @error = 1 Then
    Exit
EndIf
if  $codeunite = "" Then
$msgbox02 = MsgBox (5,"Erreur", "Vous n'avez pas saisi correctement les informations")
    if $msgbox02 = 2 Then
        Exit
EndIf
EndIf
ExitLoop
    WEnd
$tagunity = $codecentre & "_" & $codeunite
Msgbox (4096, "Info", "Votre TAG d'unité est : " & $tagunity)
 
Je suppose qu'il y aurait plus simple à faire mais ça fonctionne en partie.
Et oui en partie car il détecte bien si aucun chiffre n'est rentré mais maintenant j'aimerais que mon script détecte le nombre de chiffres rentrés.... pour la première Inputbox le nombre de chiffres doit être de 3 et pour la seconde il doit être de 4 chiffres .... sauf que là je n'ai vraiment aucune idée de comment je peut faire.....

Une petite piste ?


C.
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

Re: [...] Perdu dans les if avec inputbox et msgbox.....

#3

Message par cedric »

Je me repond encore....
En fait c'était tout simple, il fallait que j'utilise la fonction striglen pour compter le nombre de caractères.
Maintenant il ne me reste plus quà faire une autre boucle pour que si le nombre de caractère n'est pas le bon alors il reviens à la msgbox.... là je coince mais ça avance.
Je me demandait comment il était possible d'utilise le "Or" ... Par exemple J'en suis là :

Code : Tout sélectionner

While 1
$codecentre = InputBox ("TAG-UnitY...", "Entrez votre code de centre :", "", "", 300, 50)
if @error = 1 Then
    Exit
EndIf
$longeurcentre = StringLen ($codecentre)
if $codecentre = "" Then
$msgbox01 = MsgBox (5,"Erreur", "Vous n'avez pas saisi correctement les informations")
    if $msgbox01 = 2 Then
        Exit
Endif
EndIf
if $longeurcentre = 3 Then
ExitLoop
EndIf
    WEnd
 
Quand je met : If $codecentre = "" Then ....
N'y aurait il pas moyen de faire un truc du style :

Code : Tout sélectionner

If $codecentre = "" Or $longueurcentre <> 3 then
Hmmm il faut que je test ça.
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

Re: [...] Perdu dans les if avec inputbox et msgbox.....

#4

Message par cedric »

Bon et bien j'ai résolu on pb comme un grand :D

Je pense qu'il y a plus simple et surtout plus propre mais le résultat est comme je veux donc .... :

Code : Tout sélectionner

; Je créer une variable tagunity qui permettra au usager de donner leur propre TAG d'unité
While 1
While 1
$codecentre = InputBox ("TAG-UnitY...", "Veuillez saisir les 3 chiffres du code de votre centre :", "", "", 300, 70)
if @error = 1 Then
    Exit
EndIf
$longeurcentre = StringLen ($codecentre)
if $codecentre = "" Or $longeurcentre <> 3 Then
$msgbox01 = MsgBox (5,"Erreur", "Vous n'avez pas saisi correctement les informations")
    if $msgbox01 = 2 Then
        Exit
Endif
Else
ExitLoop
EndIf
WEnd

While 1
$codeunite = InputBox ("TAG-UnitY...", "Veuillez saisir les 4 chiffres du code de votre unité :", "", "", 300, 70)
if @error = 1 Then
    Exit
EndIf
$longeurunite = StringLen ($codeunite)
if  $codeunite = "" Or $longeurunite <> 4 Then
$msgbox02 = MsgBox (5,"Erreur", "Vous n'avez pas saisi correctement les informations")
    if $msgbox02 = 2 Then
        Exit
Endif
Else
ExitLoop
EndIf
WEnd
$tagunity = $codecentre & "_" & $codeunite
$msgbox03 = Msgbox (70, "Info", "Votre TAG d'unité est : " & $tagunity)
If $msgbox03 = 2 Then
    Exit
EndIf
If $msgbox03 = 11 Then
    ExitLoop
EndIf
Wend
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [R] Perdu dans les if avec inputbox et msgbox.....

#5

Message par bloodwolff »

Si tu préfère , ce code fais la même chose mais en 3 fois moins de lignes et il vérifie si les données entrées contiennent seulement des chiffres pour éviter que "hgt" fonctionne
Il sera également beaucoup plus rapide de rajouter des input si tu le souhaite
Je te conseil de passer la hauteur des input de 70 à 120 car sur mon ordinateur, si elle est en dessous de 120 le texte est coupé en 2 et je ne doit pas être le seul comme sa donc si le programme est destiné à voyager...
Je préfère ce msgbox d'erreur la perso mais tu peux toujours le remettre à 5 :x
Ps: Il n'y a aucune boucle :P

Code : Tout sélectionner

_main()
Func _main()
$codecentre = _input("centre",3)
$codeunite = _input("unité",4)
if Msgbox (70, "Info", "Votre TAG d'unité est : " & $codecentre & "_" & $codeunite) = 10 Then _main()
EndFunc ;main

Func _input($nom,$chiffre)
    $code = InputBox ("TAG-UnitY...", "Veuillez saisir les " & $chiffre & " chiffres du code de votre " & $nom & " :", "", "", 300, [color=#FF0000]120[/color])
    if @error Then Exit
    If StringLen(Int($code)) = $chiffre And StringIsDigit($code) Then Return $code
    If MsgBox ([color=#FF0000]21[/color],"Erreur", "Vous n'avez pas saisi correctement les informations") = 4 Then Return _input($nom,$chiffre)
    Exit
EndFunc ;_input
Compte skype : bloodwolfff
Répondre