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

Résolu
Messages postés
27
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
8 mai 2009
-
Messages postés
27
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
8 mai 2009
-
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

Messages postés
86
Date d'inscription
vendredi 27 décembre 2002
Statut
Membre
Dernière intervention
13 octobre 2016
2
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
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
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
Messages postés
27
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
8 mai 2009

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.
Messages postés
27
Date d'inscription
jeudi 29 janvier 2004
Statut
Membre
Dernière intervention
8 mai 2009

Merci, c'était tout à fait ca. Ca me dépane énormément.