AutoIt : créer un sondage
Thursday, 24. April 2008, 18:25:19
Toutefois, il y a des moyens gratuits et puis il y a le bricolage par le développement d'un petit outil... Regardons comment cela se passe !
Définissons en premier temps les propriétés de l'exécutable
; ********************************************************* ; Propriétés de l'exécutable ; ********************************************************* #Region #AutoIt3Wrapper_Version=dev #AutoIt3Wrapper_outfile=eiq.exe #AutoIt3Wrapper_Compression=4 #AutoIt3Wrapper_Res_Description=Logiciel d'enquête #AutoIt3Wrapper_Res_Fileversion=0.0.1.1 #AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y #AutoIt3Wrapper_Res_LegalCopyright=© Groumphy 2008 #AutoIt3Wrapper_Res_Language=2060 #AutoIt3Wrapper_Res_Field=Company|Privé #AutoIt3Wrapper_Icon=monIcone.ico #EndRegion
Les obligatoires :
#NoTrayIcon #include <GUIConstants.au3>
Les variables
; ********************************************************* ; Déclaration des variables ; ********************************************************* Dim $s_fichierINI = "parametres.ini" Dim $s_fichierResultat = "enquete.txt" Dim $s_lectureSectionUtilisateur = IniReadSection($s_fichierINI, "UTILISATEURS") Dim $i
L'appel des fonctions...
_version("DEV")
_verificationFichierResultat()
Les fonctions...
Vérifie que le nom d'utilisateur se trouvant dans le fichier INI est bien de valeur Y (pour yes), si la valeur est bien Y, lance la GUI pour l'enquête...
Func _routineIdentification() For $i = 1 To $s_lectureSectionUtilisateur[0][0] If $s_lectureSectionUtilisateur[$i][0] = @UserName Then If $s_lectureSectionUtilisateur[$i][1] = "Y" Then _GUI() Else ;MsgBox(0, "", "Ne rien faire") EndIf Next EndFunc
La GUI principale.
Elle affiche deux labels, une combox qui permet un choix, ce choix est récolté et placé dans un fichier texte.
Func _GUI()
MsgBox(0, "", "lancement GUI")
#Region ### START Koda GUI section ### Form=i:\script\en développement\enquete satisfaction it\gui_enqueteinformatique.kxf
GUICreate("Enquête informatique", 272, 219, 246, 115)
GUICtrlCreateLabel("Afin d'optimiser son efficacité, le service informatique ", 10, 10, 254, 17)
GUICtrlCreateLabel("vous demande de répondre à la question suivante :", 10, 30, 256, 17)
GUICtrlCreateGroup(" Qualité du support : ", 25, 55, 225, 105)
GUICtrlCreateLabel("Veuillez choisir dans la liste déroulante.", 35, 75, 185, 17)
GUICtrlCreateLabel("Quelle est la qualité du support donné ?", 35, 95, 190, 17)
$cbx_ChoixListeDeroulante = GUICtrlCreateCombo("Sélectionnez votre choix", 35, 115, 200, 25, -1, -1)
GUICtrlSetData($cbx_ChoixListeDeroulante, "Excellente|Très bonne|Bonne|Médiocre|Très mauvaise")
GUICtrlSetTip($cbx_ChoixListeDeroulante, "Faite votre choix dans la liste déroulante")
GUICtrlSetCursor ($cbx_ChoixListeDeroulante, 0)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$btn_Valider = GUICtrlCreateButton("&Valider", 160, 175, 100, 33, 0)
GUICtrlSetTip($btn_Valider, "Valider l'enquête informatique")
GUICtrlSetCursor ($btn_Valider, 0)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
;Case $cbx_ChoixListeDeroulante
Case $btn_Valider
$cbx_ChoixListeDeroulante = GUICtrlRead($cbx_ChoixListeDeroulante)
If $cbx_ChoixListeDeroulante = "Sélectionnez votre choix" Then
MsgBox(0 + 32, "Information", "Vous n'avez effectué aucun choix dans la liste déroulante.")
Else
MsgBox(0, "Tracking", "Choix : " & $cbx_ChoixListeDeroulante)
GUISetState(@SW_HIDE)
; Lancer l'écriture dans un fichier texte !!
Dim $s_OuvertureFichier
$s_OuvertureFichier = FileOpen($s_fichierResultat, 1)
FileWriteLine($s_OuvertureFichier, @UserName & @TAB & $cbx_ChoixListeDeroulante)
FileClose($s_OuvertureFichier)
_ChangeValeurINI("N")
MsgBox(0, "", "Valeur changée en N, sortie")
EndIf
EndSwitch
WEnd
EndFunc
Une fonction permettant de changer la valeur du nom d'utilisateur... Le plus simple possible.
Func _ChangeValeurINI($s_Valeur) IniWrite($s_fichierINI, "UTILISATEURS", @UserName, $s_Valeur) EndFunc
Fonction vérifiant la présence des fichiers obligatoires...
Func _verificationFichierResultat() If NOT FileExists($s_fichierResultat) Then MsgBox(0, "Erreur", "Pas de fichier résultat !") Exit ElseIf NOT FileExists($s_fichierINI) Then MsgBox(0, "Erreur", "Pas de fichier d'initialisation") Exit Else _routineIdentification() EndIf EndFunc
Une fonction Goonie pour débuter et vérifier l'état d'avancement de la fonction...
Func _version($s_typeVersion) If $s_typeVersion = "DEV" Then $s_typeVersion = "Le logiciel lancé est en devélopement et est présenté à titre d'idée. V.DEV" ElseIf $s_typeVersion = "ALPHA" Then $s_typeVersion = "Le logiciel lancé est en développement et nécessite encore des améliorations " & @CR & _ "toutefois il est parfaitement exploitable. V.ALPHA" ElseIf $s_typeVersion = "BETA" Then $s_typeVersion = "Le logiciel lancé est en version de test et nécessite encore des corrections " & @CR & _ "Merci de faire un feedback à xxxx. V.BETA" ElseIf $s_typeVersion = "PROD" Then $s_typeVersion = "" EndIf If NOT $s_typeVersion = "" Then MsgBox(0 + 64, "Information", $s_typeVersion) EndIf EndFunc
Simple et efficace. C'était une simple idée. Mais elle est fonctionnelle. C'est le principal.
Mais que contiennent les autres fichiers ?
Le fichier INI :
[UTILISATEURS] USER1=Y USER2=Y # on continue les utilisateurs au fur et à mesure, # seul le login compte. La valeur N ne fera aucun effet sur la fonction
Le fichier résultats comportera les valeurs suivantes :
USER1 (espace blanc, tabulation...) CoteDonnées (ici Médiocre, bonne, excellente...) USER2 Bonne USER3 Excellente
Les résultats du fichier texte sont utilisables dans un tableur, une base de données, etc.
Pour lancer l'enquête, il faut placer simplement un appel dans le NETLOGON pourquoi pas...
Qu'en pensez-vous ?

