Page 1 sur 1

[R] Problème avec les fonctions : fonction_exemple()

Posté : jeu. 18 juin 2009 16:40
par Wink
Bonjour,

Je suis en train de créer un programme qui va permettre à l'utilisateur de choisir parmi 4 onglets (4 services d'une entreprise) et sur chaque onglet de choisir le mois et l'année qu'il souhaite. Il valide avec un bouton OK. Une petite vérification est effectuée, au cas ou il ne renseigne pas le champ mois ou année (MsgBox)

En fait j'apprends un peu à me servir des fonctions, du coup voici comment j'ai fait :

J'ai inclus mes bibliothèques, puis ensuite j'ai directement appelé ma fonction, et la j'ai tapé tout mon code, dans cette seule et même fonction.. ce qui ne présentait donc peu d'intérêt à mes yeux, après réflexion !

Ça devait ressembler à ça :

Code : Tout sélectionner

#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <ExcelCOM_UDF.au3>

Opt('MustDeclareVars', 1)   

fonction()

Func fonction()

GuiCreate ....
xxx
xxx
xxx

 
Je précise que jusque la, tout marchait impeccable....

Mais j'ai eu envie de "séparer " mon code pour le rendre plus fonctionnel, pratique, léger enfin ce que vous voulez, donc en créant plusieurs fonctions.

Et la... c'est le drame !
En gros, j'ai créé ma structure, donc la fenêtre principale, avec les 4 onglets :
► Afficher le texte

Puis je me suis dit que c'est seulement au moment ou ma fenêtre et mes onglets seraient créés que j'allais appeler ma fonction qui réaliserai ensuite ce que j'attends (les saisies utilisateurs, choix dans les menus déroulant)

J'ai donc appelé ma fonction à cet endroit, et je l'ai définie immédiatement après (je n'en suis qu'au début du projet)
► Afficher le texte
Le problème c'est que ma MsgBox s'affiche directement, celle qui renvoit une erreur lorsque l'utilisateur valide avec le bouton OK sans avoir choisi le mois ou l'année :

Code : Tout sélectionner

MsgBox(48, "SAISIE INCORRECTE", "Veuillez sélectionner l'année, SVP")
J'ai beau appuyer sur OK pour la faire disparaître, elle se répète "à l'infini".

Ou est l'erreur ???
Je vous joins le fichier, ça sera surement plus parlant !

Merci d'avance pour votre aide !

Cordialement,

Wink

Re: [..] Problème avec les fonctions : fonction_exemple()

Posté : jeu. 18 juin 2009 18:20
par tolf
Pourquoi sauter 2 lignes entre vos instructions ? Du coup, vous avez moins de code visible en même temps à l'écran et vous pouvez vous perdre dans le code, ce qui produira sans doute des erreurs.
J'ai moi-même par exemple du mal à comprendre quelle était la condition qui a abouti à ce Case ou où à commencé ce Switch.
Et dans le premier code, pourquoi mettre des alinéas alors qu'on n'est pas dans une boucle, une condition ou une fonction ?

Commencez par bien présenter votre code, et vous résoudrez beaucoup de problèmes à l'avenir :wink:

Pour les alinéas, CTRL+T sera votre ami dans SciTE.

Re: [..] Problème avec les fonctions : fonction_exemple()

Posté : jeu. 18 juin 2009 19:02
par Wink
OK, je prends bonne note, merci ! :wink:

Et concernant l'erreur....?
Aucune idée chef !?

Re: [..] Problème avec les fonctions : fonction_exemple()

Posté : jeu. 18 juin 2009 20:58
par orax
Dans la fonction choix_periode() vous aviez mis Local $tab0_bouton : si bien que la variable $tab0_bouton était réinitialisée (elle ne contenait plus l'ID retourné par GUICtrlCreateButton(), elle avait une valeur nulle).
Donc l'initialisation des variables dans la fonction devrait plutôt ressembler à ça :

Code : Tout sélectionner

Func choix_periode()
    Local $choix_service
    Local $msg
    Local $choix_annee, $choix_mois
    Local $box
    Local $excelopen
    Local $prepa_gal_2009 = "Z:\Stats Générales\STATS GENERALES v2\PREPARATION\2009\Préparation 2009.xlsm"

Re: [..] Problème avec les fonctions : fonction_exemple()

Posté : jeu. 18 juin 2009 22:20
par Wink
Alors la un grand merci, vous êtes génial !
Je test ça demain au boulot et je vous tiens au couant immédiatement !

Encore merci !

Cordialement,

Wink

Re: [R] Problème avec les fonctions : fonction_exemple()

Posté : ven. 19 juin 2009 11:09
par Wink
Super ça marche nickel !

Un grand merci à vous !

Cordialement,

Wink-