Coincé dans une boucle à l'execution d'un programme avec ligne de commande.

Résolu
Aphex Twin Messages postés 27 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 8 mai 2009 - 27 août 2006 à 11:56
Aphex Twin Messages postés 27 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 8 mai 2009 - 27 août 2006 à 14:05
J'ai un programme qui accepte une ligne de commande "/s" et le programme détecte bien la ligne de commande. Mais la procédure "Form_Load()" se répete sans arret. Je suis assez débutant concernant l'utilisation d'une ligne de commande donc il est plus que possible que je ne la déclare pas comme il faut, ou que je l'utilise mal, etc.. C'est pourquoi je vous demande ce qui cloche avec ma ligne de code suivante:

Private Sub Form_Load()
Commande = Command()
If Commande = "/s" Then
    Fichier = FreeFile     'On ouvre le fichier config.cfg pour pré-définir des variables avant le chargement de la FormPrincipal.
    On Error GoTo ErreurDefichier
    Open App.Path & "\config.cfg" For Input Access Read Lock Write As Fichier
    Line Input #Fichier, Ligne
    FormPrincipal.option1 = Ligne
    Line Input #Fichier, Ligne
    If Ligne = "ok" then
        FormPrincipal.option2 = true
    Else
        FormPrincipal.option2 = False
    End If
    On Error GoTo ErreurDefichier
    Close #Fichier
    FormPrincipal.Show vbNormal
    Unload Me
Else
End If
TextNom.SelLength = Len(TextNom.Text)
ErreurDefichier:
    Exit Sub
End Sub

Pour mieux comprendre, mon programme consiste en 2 forms. FormMenu et FormPrincipal. A l'exécution du programme, il ouvre le FormMenu dans lequel il vérifie (au form_load()) si la ligne de commande "/s" est présente. Si elle l'est, il donne à l'avance des valeurs à des variables se trouvant sur FormPrincipal, puis il ouvre FormPrincipal et ferme FormMenu. En gros, en utilisant la ligne de commande on ne s'attarde pas sur le FormMenu et on passe instantanément sur le FormPrincipal.

Le programme effectue bien les changements dû à la ligne de commande "/s", il ouvre le FormPrincipal... mais apres avoir fait le "Form_Load()" du FormPrincipal jusqu'au bout, il retourne sur FormMenu et répete sa fonction "Form_Load()" de haut en bas sans arret. J'aimerai qu'il n'y retourne plus et que mon FormPrincipal s'exécute sans être bloqué par le FormMenu qui est sencé se fermer.

4 réponses

TomIlliev Messages postés 86 Date d'inscription vendredi 27 décembre 2002 Statut Membre Dernière intervention 13 octobre 2016 2
27 août 2006 à 13:43
Salut,
J'ai regardé ton code et je l'ai rectifié
Si tu demande à un feuille de se fermer dans la procédure load de celle-ci,
il ne faut pas aprés Unload me que ton code demande de faire quelque chose sinon ta feuille
ne se décharge pas!
a+
Tomilliev

Private Sub Form_Load
Dim Commande As String
Dim Fichier as integer
Dim Ligne as string
Commande = Command()
On error goto  ErreurDefichier
If Commande = "/s" Then
    Fichier =
FreeFile     'On ouvre le fichier config.cfg pour pré-définir des
variables avant le chargement de la FormPrincipal.
    Open App.Path & "\config.cfg" For Input Access Read Lock Write As Fichier
On error goto 0                            ' permet de s'arrêter sur des erreurs non dûes au fichier!

    Line Input #Fichier, Ligne
    FormPrincipal.option1 = Ligne

    Line Input #Fichier, Ligne
    If Ligne = "ok" then
        FormPrincipal.option2 = true
    Else
        FormPrincipal.option2 = False
    End If

    Close #Fichier
    FormPrincipal.Show vbNormal
    Unload Me
Else
        TextNom.SelLength = Len(TextNom.Text) 'Il ne faut pas que tu demande à la procédure de faire quelque chose si
End If                                                                 'tu veux décharger la feuille il faut donc placer cette ligne ici

Exit Sub
ErreurDefichier:

End Sub
3
PCPT Messages postés 13280 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 49
27 août 2006 à 12:51
salut,
quel est le code dans ton form_load de FormPrincipal ?

<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
0
Aphex Twin Messages postés 27 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 8 mai 2009
27 août 2006 à 13:49
Voici la procédure Form_Load de mon FormPrincipal:

Private Sub Form_Load()
Label1.Caption = "Bienvenu " & option1 & "!"
If option2 = True Then
    Label2.Caption = "Le statut est normal."
Else
    Label2.Caption = "Le statut est anormal!"
End If
End Sub

Il effectue bien les actions définie par ma ligne de commande "/s". C'est juste qu'il retourne se coincer à l'infini dans le Form_Load() du FormMenu. En execution "pas à pas" on voit la ligne jaune aller de Form_Load() jusqu'à TextNom.SelLength = Len(TextNom.Text) puis repartir à Form_Load() et ce à l'infini... Au bout d'un moment (en enlevant le point d'arret), il passe sur la fonction "ErreurDefichier: Exit Sub" et il ferme "FormMenu".. mais ce n'est tout de meme pas normal qu'il répete le form_load des centaines de fois.
0
Aphex Twin Messages postés 27 Date d'inscription jeudi 29 janvier 2004 Statut Membre Dernière intervention 8 mai 2009
27 août 2006 à 14:05
Merci, c'était tout à fait ca. Ca me dépane énormément.
0
Rejoignez-nous