Page 1 sur 2

[R] Problème déclaration variable

Posté : ven. 29 oct. 2010 09:20
par V1ce
Bonjour,

Je poste ce message car je rame pour faire un petit projet donc j'aurais besoin d'un peu d'aide, je vais déjà expliquer le projet :

Je suis apprenti (BTS IG option réseaux) dans une entreprise de fabrication de bus, donc il y a les ateliers où il y a le montage des bus et puis les magasins où il y a les pièces. On a décider de mettre en place une carte relais IP afin de pouvoir établir une meilleur communication entre les ateliers et magasins, le but c'est que quand l'atelier à besoin d'une pièce qu'il est juste a cliquer sur un petit script fait avec autoit par mon collègue(copier/coller d'un code...) qui en fait allume une petite lumière dans le magasin(grâce à la carte relais) et envoi un mail avec le nom de la pièce voulue en mesage afin de le prévenir, mais bon en fait pour l'instant le mail envoyé envoi que un seul message qu'on a mis dans le script mais il n'y a pas que 1 pièce... Donc en fait ce que je veux faire c'est que quand on clique sur le script ai lieu d'envoyer directement le mail je voudrais qu'une petite fenêtre s'ouvre avec dedans une zone de saisie et un bouton "ok" , du coup l'utilisateur marque dans la zone de saisie la pièce qu'il veut et quand il appui sur ok que cela envoi le mail avec comme corps du message le nom de la pièce qu'il à entrer dans le GUI. Donc pour ça j'ai trouver "koda" qui m'a servi à faire ma petite interface toute simple, mais bon ça c'est facile ça se fait en 2 clik, mon problème c'est autre chose, c'est que j'arrive pas à faire en sorte que le quand il appui sur le bouton "ok" que la variable du corps de mail prenne la valeur entrée dans la zone de saisie, j'arrive pas à programmer cela.
En fait j'arrive à me faire ça dans ma tête car j'ai des notions en algo mais j'ai jamais vraiment programmer (en même temps je suis en réseau), j'arrive pas à dire par exemple : SI bouton "ok" pressé ALORS $body(texte du mail)<--- $saisie(texte de mon GUI), je pense que ça se fait pas avec un simple SI mais c'est dans cette optique la, j'avais trouver un exemple sur le net d'un truc ressemblant à ce que je veux faire mais en fait j'y suis pas arriver et de toute façon je comprenais pas et j'aime pas faire quelque chose bêtement en faisant un copier/coller d'un code et pas comprendre je me sens trop nul après (lol),

Voilà donc je fait appel à vous pour me donner un petit coup de main, je demande pas qu'on me fasse le boulot je veux un petit coup de pouce pour essayer de mieux m'y retrouver.

J'espère que je me suis assez bien expliquer, si non merci de me le faire remarquer.

Merci d'avance pour votre aide.

Vincent

Re: [..]Débutant a besoin d'aide[..]

Posté : ven. 29 oct. 2010 11:44
par timmalos
Pourquoi ne pas utiliser une simple InputBox ?

Code : Tout sélectionner

$answer = InputBox("Gestionnaire des pièces", "Quelle pièce souhaitez vous commander?", "Nom de la pièce", "")
;$answer contient maintenant la réponse de l'utilisateur.
;On peut l'afficher pour en être certain:
MsgBox(0,"Gestionnaire des pièces","La pièce "& $answer & " a bien été commandée. Veuillez patienter.")
;Maintenant on ajoute le code de l'envoi du mail.
 

Re: [..]Débutant a besoin d'aide[..]

Posté : ven. 29 oct. 2010 14:24
par V1ce
Désolé mais je comprend pas trop :

$answer = InputBox("Gestionnaire des pièces", "Quelle pièce souhaitez vous commander?", "Nom de la pièce", "") : ici si j'ai bien compris "Gestionnaire des pièces" sera le nom de la fenêtre affichée, "Quelle pièce souhaitez vous commander?" sera la question affichée, mais pour "nom de la pièce" et "" je vois pas ce que cela provoque :S , et la pour le bouton "ok" et faire en sorte que quand celui-ci est pressé que ça me fasse $body = $answer il n'y a rien?

MsgBox(0,"Gestionnaire des pièces","La pièce "& $answer & " a bien été commandée. Veuillez patienter.")
Là si j'ai bien compris ça va afficher que la pièce $answer à bien été commander mais je vois pas ce que veux dire le 0

Désolé mais je suis nul comme je l'ai dit donc si tu pouvais m'expliquer ce que je comprend pas dans ton code ça serait cool^^

Merci pour ta réponse.

Re: [..]Débutant a besoin d'aide[..]

Posté : ven. 29 oct. 2010 15:08
par timmalos
Premierement, copiez coller mon code dans Scite4Autoit, enregistrez et lancer le script et ESSAYEZ , vous ne pouvez pas comprendre sans tester le programme ! Vous auriez ainsi pu répondre à la plupart de vos questions !

Ensuite, vous avez besoin d'utiliser la documentation, sinon vous n'y arriverez JAMAIS. Pressez F1 dans Scite pour comprendre comment utiliser les fonctions, TOUT EST EXPLIQUE !

Re: [..]Débutant a besoin d'aide[..]

Posté : ven. 29 oct. 2010 22:13
par cutprod
Je vais t' aidé un peu:
Si tu arrive déjà a faire un script qui envoi un email tu dois savoir comment remplir le "corps" de celui ci!
Donc ensuite =

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 171, 171, 192, 124)
$Input1 = GUICtrlCreateInput("", 24, 32, 121, 21)
$Button1 = GUICtrlCreateButton("Button1", 56, 96, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $texte_du_mail ;tu déclare en global pour que cette variable puisse etre modifier dans tout le script

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        case $Button1    ;si tu presse le bouton1
            $texte_du_mail = GUICtrlRead($Input1)   ; la variable "$texte_du_mail" prend la valeur de ce que tu auras mis dans l'inputbox
            _envoi_email  ;tu appel la fonction qui envoi l'email dont le corps du message est la variable "$texte_du_mail"+un texte prédéfini
    EndSwitch
WEnd
 
Et si ton problème c'est l'insertion de la variable, cela se fait avec "&"
Essaye de copier coller ce script test le et tu comprendra =

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>


#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 171, 171, 192, 124)
$Input1 = GUICtrlCreateInput("", 24, 32, 121, 21)
$Button1 = GUICtrlCreateButton("Button1", 56, 96, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Global $texte_du_mail

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        case $Button1                               ;si tu presse le bouton1
            $texte_du_mail = GUICtrlRead($Input1)   ; la variable "$texte_du_mail" prend la valeur de ce que tu auras mis dans l'inputbox
            MsgBox(0,"Test","tu as tapé le texte = "& $texte_du_mail)
        EndSwitch
WEnd
Si dans tout ca il y'a une expression que tu ne comprend pas positionne le curseur après celle-ci et tape sur F1 l'aide concernant cette commande apparaitra

Re: [..]declencher action quand clique sur bouton[..]

Posté : mar. 02 nov. 2010 11:19
par V1ce
Merci pour ta réponse Cutprod.

Pour en revenir au programme j'ai tester et essayer de comprendre ton code donc ça ca à peu près à pars quelque truc que je comprend pas et que j'arrive pas trop à trouver dans la notice car je sais pas vraiment à quoi ça sert... Alors :

Quand tu créer le bouton :

Code : Tout sélectionner

$Button1 = GUICtrlCreateButton("ok", 90, 96, 75, 25, $WS_GROUP)


je vois pas à quoi sert la variable $WS_GROUP

Et j'ai eu une nouvelle idée pour le programme car l'utilisateur pourrait se tromper pour le nom de la pièce donc en fait à la fenêtre où ça indique quelle pièce il a commander je voudrez rajouter "confirmez ?" et donc qu'il y ai en dessous un bouton "oui" et un bouton "non" donc si on clique sur oui la le texte du mail prendra ce qui aura été entrer auparavant dans le input et que si c'est non que ca revienne à la demande de pièce. Mais bon là je vais essayer de le faire tout seul car tu en à déjà assez fait et je t'en remercie, par contre j'ai juste une petite question, pour cette ligne :

Code : Tout sélectionner

MsgBox(0,"Confirmation","Vous avez commander =" & $body)
je voulais rajouter le "confirmez ?" donc j'avais fait ça :

Code : Tout sélectionner

MsgBox(0,"Confirmation","Vous avez commander =" & $body ", confirmer ?")
mais il n'aime pas cela il veux pas que je rajoute du message... Y aurait-il un moyen pour en rajouter ou alors passer à la ligne?

Merci de ta réponse

Re: [..]declencher action quand clique sur bouton[..]

Posté : mar. 02 nov. 2010 11:33
par alex1205
Tu as oublié le &.
Et pour le Oui & Non, mais le paramètre 4 !
Essaie ça :

Code : Tout sélectionner

MsgBox([color=#FF0000]4[/color],"Confirmation","Vous avez commander =" & $body[color=#FF0000] & [/color]  ", confirmer ?")

Re: [..]declencher action quand clique sur bouton[..]

Posté : mar. 02 nov. 2010 16:15
par V1ce
Ah yes merci ça marche maintenant. Et le paramètre "4" c'est pas mal du coup j'ai été dans la doc pour m'informer un peu plus dessus mais il y a un truc que je comprend pas, ok ça me met un bouton oui et non mais il faut que je lui dise au programme quoi faire pour quand je clique sur ces boutons donc dans mon cas continuer quand oui et retourner au début ou quitter quand non mais ça je vois pas où je peux le configurer...

edit : Bon en fait j'ai trouver un sujet ou on en parle donc je vais tester avec ces infos : http://autoit.fr/forum/viewtopic.php?f=3&t=445&p=2692

edit : Bon j'ai réussi :

Code : Tout sélectionner

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        case $Button1                               ;si tu presse le bouton1
            $Body = GUICtrlRead($Input1)   ; la variable "$texte_du_mail" prend la valeur de ce que tu auras mis dans l'inputbox
            $val = MsgBox(4,"Confirmation","Vous avez commander " & $Body & ", confirmer ?")
            
        
        Switch $val 
        Case 6
                ;envoi du mail
                exit
        Case 7
                exit
        EndSwitch

    EndSwitch
WEnd

C'était plus simple que je le croyais ^^, en tout cas merci à ceux qui m'ont donner un coup de main !!

Bonne soirée.

Re: [R] Declencher action quand clique sur bouton

Posté : mer. 03 nov. 2010 00:40
par bloodwolff
ou alors passer à la ligne?
Même si ils ont répondu à votre question , si jamais vous vouliez quand même passer à la ligne

Code : Tout sélectionner

@CRLF
Il faut tout simplement le prendre comme une variable et l'entourer de &
Ex:

Code : Tout sélectionner

msgbox(0,"","Première ligne" & @CRLF & "Deuxième ligne")

Re: [R] Declencher action quand clique sur bouton

Posté : mer. 03 nov. 2010 08:06
par V1ce
Je te remercie bloodwolff cela me servira^^

Bonne journée !

Re: Declencher action quand clique sur bouton

Posté : jeu. 11 nov. 2010 16:19
par V1ce
Bonjour,

Je me suis permis de ré-ouvrir mon sujet car j'ai un autre soucis pas énorme donc je voulais pas recréer un sujet pour ça et puis cela concerne le même programme.

Donc déjà pour ceux qui m'avais donner un coup de main je précise que j'ai complètement changer mon programme afin de le rendre plus facile pour les utilisateurs, sous demande de mes collègues.

Je vais éviter pour l'instant de vous montrer tout le programme je le ferais s'il y en as vraiment besoin.

Donc mon problème c'est que dans mon fichier principal et dans une de mes fonctions je déclare 2 variables en faisant juste un $variable = "toto" et je veux que ces variables apparaissent dans le message du mail, pour infos le script d'envoi du mail n'est plus dans mon programme principal mais dans un include, j'ai fait ça pour que le PP soit moins charger et donc pour le texte du mail j'ai mis :

Code : Tout sélectionner

$body = ("Type de pièce demandée :" & $TypePiece & & @CRLF &  "Informations supplémentaires : " & $InfosComp)
Mais du coup quand je veux tester mon programme il veux pas me le lancer et me signal l'erreur concernant la ligne du texte de mon mail :

Code : Tout sélectionner

C:\Program Files (x86)\AutoIt3\Include\EnvoiMail.au3 (14) : ==> Variable used without being declared.:
$body = ("Type de pièce demandée :" & $TypePiece & & @CRLF &  "Informations supplémentaires : " & $InfosComp)
$body = ("Type de pièce demandée :" & ^ ERROR
donc j'ai bien compris il me dit que mes variables ne sont pas déclarées mais je comprend pas vraiment où les déclarées car jusqu'à présent j'avais jamais eu ce problème avec aucune des variables que j'ai créer moi même avec cette méthode, comme j'y comprenais rien j'ai déclarées mes 2 variable en global dans mon PP mais rien n'y fait. Il dois y avoir quelque chose que j'ai pas saisi...

Je précise que ma variable $Typepiece est dans mon PP et que $InfosComp est dans une fonction d'un fichier qui est en include.

Voilà, j'espère que je me suis assez bien expliquer sinon, si vous avez besoin, je vous montrerez tout mes fichiers de code donc dites le moi.

Merci d'avance pour votre aide.

Vincent.

Re: Declencher action quand clique sur bouton

Posté : jeu. 11 nov. 2010 16:37
par Jerome
Coucou,


Pour qu'une variable soit déclaré partout tout le long du programe :

Code : Tout sélectionner

Global
Je te conseille de faire un tour ici...



Jérôme

Re: Declencher action quand clique sur bouton

Posté : jeu. 11 nov. 2010 16:42
par V1ce
Merci de ta réponse Jérôme mais comme je l'ai dit j'ai déclarer ces 2 variables en global dans mon dans mon PP mais rien y fait....

Re: Declencher action quand clique sur bouton

Posté : jeu. 11 nov. 2010 16:48
par bloodwolff

Code : Tout sélectionner

$body = ("Type de pièce demandée :" & $TypePiece [color=#FF0000]& &[/color] @CRLF &  "Informations supplémentaires : " & $InfosComp)
Le problème ne vient pas du simple fais du double "&" ? De toute façon cela ne doit pas aidé donc je te conseil d'ne retirer 1

Re: Declencher action quand clique sur bouton

Posté : jeu. 11 nov. 2010 16:52
par V1ce
Oué je viens de le remarquer aussi car ça m'a provoquer une erreur autre part ^^, sinon pas d'idée pour mes variables?

Re: Declencher action quand clique sur bouton

Posté : jeu. 11 nov. 2010 16:58
par bloodwolff
Tu peux envoyer ta variable comme paramètre de ta fonction mail

Code : Tout sélectionner

Func mail(param1,param2,param3...paramn)

Re: Declencher action quand clique sur bouton

Posté : jeu. 11 nov. 2010 17:15
par V1ce
Oué mais si je fait ça cela me dit :

Code : Tout sélectionner

C:\Program Files (x86)\AutoIt3\Include\EnvoiMail.au3 (37) : ==> Incorrect number of parameters in function call.:
$rc = _INetSmtpMailCom($SmtpServer, $FromName, $FromAddress, $ToAddress, $Subject, $Body, $AttachFiles, $CcAddress, $BccAddress, $Importance, $Username, $Password, $IPPort, $ssl, $TypePiece, $InfosComp)
$rc = ^ ERROR
Et je me demandais aussi comment dire si un variable n'existe pas, par exemple :

Code : Tout sélectionner

;si $InfosComp est NULL 
    ;alors $val2 = MsgBox(4,"Confirmation","Vous allez demander :" & @CRLF & @CRLF & "Type de pièce : " & $TypePiece & @CRLF & @CRLF & "Confirmez vous cette demande ?")
    ;sinon :
    $val2 = MsgBox(4,"Confirmation","Vous allez demander :" & @CRLF & @CRLF & "Type de pièce : " & $TypePiece & @CRLF & "Infos supplémentaires : " & $InfosComp & @CRLF & @CRLF & "Confirmez vous cette demande ?")
    ;fin du si

Re: Declencher action quand clique sur bouton

Posté : jeu. 11 nov. 2010 17:16
par bloodwolff
Tu dois faire un erreur quelque part, envois ta fonction mail

Re: Declencher action quand clique sur bouton

Posté : jeu. 11 nov. 2010 21:11
par V1ce
Bon j'ai réussi à ce qu'il me mette plus l'erreur des variables non déclarées je crois que je les avait mal placer et la je les ai mis tout en haut du fichier et c'est bon mais par contre à l'envoi du mail bien que ces variables soit dans le texte du message et bien elles ne s'affichent pas.

Programme principal :
► Afficher le texte
Pour les "case" je n'ai pas trouver d'autre manière plus simple de le faire pour l'instant...



Fonction mail :
► Afficher le texte


je met aussi la fonction où $InfosComp prend sa valeur :
► Afficher le texte
Euh en fait je viens de remarquer aussi que dès l'ouverture de mon programme cela envoyer un mail et là j'avoue que je pige rien... Je vais y réfléchir plus avant d'avoir vos idées.

Re: Problème déclaration variable

Posté : ven. 12 nov. 2010 01:21
par bloodwolff
dès l'ouverture de mon programme cela envoyer un mail
D'après ce que j'ai pu voir de tes morceaux de scripts ,car j'ai seulement quelques partis (Si tu ne veux pas montrer ton script publiquement sur le forum tu peux toujours me l'envoyer par mail)

Au moment de lancer un script il lance d'Abord toute les lignes de code contenu dans les includes
Par exemple

Code : Tout sélectionner

#include "msgbox1.au3"
msgbox(0,"","2")
Si l'include contient

Code : Tout sélectionner

msgbox(0,"","1")
Il va d'Abord lancer la msgbox "1" car il est inclu avant

Normalement la plupart des includes sont composés uniquement de ... fonctions donc même si le code les vois il passe dessus et les effectue seulement si elles sont appeller dans le code

Donc je te conseil
► Afficher le texte
Et Rajouter

Code : Tout sélectionner

_envoyer_mail($typepiece, $infoscomp)
Dans le script au moment ou tu veux envoyer les mails ( d'Ailleur j'ignore comment tu les appellais avant)