IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Boucler un evenement ou passer à un autre


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2022
    Messages : 9
    Par défaut Boucler un evenement ou passer à un autre
    Bonsoir,

    j'ai beau me creuser les méninges je ne parviens pas à trouver de solutions à mon problème.
    Mon souhait est qu'il y est deux conditions et qu'en cas d'échec des deux conditions, i = 1 devienne i = 2 et ainsi desuite en cas d'échec.
    En cas de réussite mon code fonctionne.

    Ma question est donc comment relancer le morceau de code ci-dessous si les conditions ne sont pas remplis.

    Je penser que rediriger directement sur "Nexti" permettait de relancer la boucle mais à priori non...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
        For i = 1 To 100 'maximum d'eleves
        NomEleve = TEST
     
     
        If GetVar(App.Path & "\GrandeSection.ini", "Primaire", "Classes" & i) = 0 Then
            If VAL(GetVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i)) <> NomEleve Then
                Call PutVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i, NomEleve)
                GoTo NoNexti:
            Else
                GoTo ProchaineVerif:
            End If
     
        Else
        GoTo ProchaineVerif:
     
        End If
     
    ProchaineVerif:
        Next i
     
        End If
    NoNexti:

    Mille mercis par avance pour votre précieuse aide.

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut

    Faire de Goto n'est jamais une solution à long terme, on finit par perdre le fils du code.
    Dans ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    For i = 1 To 100 'maximum d'eleves
        NomEleve = TEST
        If GetVar(App.Path & "\GrandeSection.ini", "Primaire", "Classes" & i) = 0 Then
            If VAL(GetVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i)) <> NomEleve Then
                Call PutVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i, NomEleve)
                GoTo NoNexti:
            Else
                GoTo ProchaineVerif:
            End If
        Else
            GoTo ProchaineVerif:
        End If
        ProchaineVerif:
    Next i
     
    End If
    NoNexti:
    tu as un End If de trop.
    Quand on veut cumuler 2 conditions, on utilise And,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If condition = 0 And condition2 <> 1 Then ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    VAL(GetVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i))
    Val donne un résultat de type numérique entier, est-ce le types de ta varible TEST ?
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2022
    Messages : 9
    Par défaut
    Bonjour ProgElecT et merci une nouvelle fois de m'aider.
    En effet TEST est une valeur STRING déclarée.

    Je remplace donc VAL par GetVar je suppose ?

    J'ai modifié mon code mais ca ne fonctionne pas
    il reconnait GetVar(App.Path & "\GrandeSection.ini", "Primaire", "Classes" & i) = 0 and GetVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i) en " "

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    For i = 1 To 100 'maximum d'eleves
        NomEleve = TEST
        If GetVar(App.Path & "\GrandeSection.ini", "Primaire", "Classes" & i) = 0 and  GetVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i) <> NomEleve Then
                Call PutVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i, NomEleve)
                GoTo NoNexti:
            Else
                GoTo ProchaineVerif:
        End If
     
     
     ProchaineVerif:
           Next i          'je boucle car echec des conditions
     
     
    NoNexti:
    '(suite du code)

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 539
    Par défaut
    Il me semble que l'instruction Continue permet de passer à l'itération de boucle suivante, sinon, rien n'empêche d'incrémenter soit même i pour "sauter" une boucle.
    Ah en fait, ton objectif est de sortir de la boucle, sinon de poursuivre, bah c'est le déroulement normal d'une boucle For, et pour sortir d'une boucle For, il faut l'instruction Exit For qui sort de la boucle For la plus proche.
    Il peut être intéressant de utiliser un booléen pour dire que l'on est sortie parce que les conditions ont été vérifiées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    IsSuccess=False
    For i = 1 To 100 'maximum d'eleves
        NomEleve = TEST
     
        If GetVar(App.Path & "\GrandeSection.ini", "Primaire", "Classes" & i) = 0 Then
            If VAL(GetVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i)) <> NomEleve Then
                Call PutVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i, NomEleve)
                IsSuccess=True
                Exit For
            End If
        End If
     
    Next i
    'si nécessaire:
    If IsSuccess Then
    'code à réaliser si on valider les 2 conditions
    Else
    'code à réaliser si on est sorti de la boucle sans jamais réaliser les 2 conditions
    End If

  5. #5
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut

    Correction de ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    For i = 1 To 100 'maximum d'eleves
        NomEleve = TEST
        If GetVar(App.Path & "\GrandeSection.ini", "Primaire", "Classes" & i) = 0 and  GetVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i) <> NomEleve Then
                Call PutVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i, NomEleve)
                'GoTo NoNexti:
                Exit For
            'Else
                'GoTo ProchaineVerif:
        End If
    	'ProchaineVerif:
    Next i          'je boucle car echec des conditions
     
    'NoNexti:
    '(suite du code)
    Résumé après nettoyage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    NomEleve = TEST
    For i = 1 To 100 'maximum d'eleves
        If GetVar(App.Path & "\GrandeSection.ini", "Primaire", "Classes" & i) = 0 and  GetVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i) <> NomEleve Then
                Call PutVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i, NomEleve)
                Exit For
        End If
    Next i          'je boucle car echec des conditions
     '(suite du code)
    NomEleve ne changent pas, le sortir de la boucle
    tes GoTos sont inutiles, autant les supprimer.
    Il serait intéressant, à l’intérieur de la boucle For, de vérifier visuellement avec un MsgBox le contenu de,
    MsgBox GetVar(App.Path & "\GrandeSection.ini", "Primaire", "Classes" & i)et
    MsgBox GetVar(App.Path & "\Classe.ini", "CLASSE", "Eleves" & i), et d'en tirer des conclusions.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre habitué
    Homme Profil pro
    Webmaster
    Inscrit en
    Décembre 2022
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Décembre 2022
    Messages : 9
    Par défaut
    Un GRAND MERCI à tous les deux

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. passer à une autre page lors d'un click
    Par Maria1505 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 20/08/2007, 23h25
  2. comment capter un evenement survenu sur une autre form?
    Par Jayceblaster dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/07/2007, 14h38
  3. Réponses: 2
    Dernier message: 07/05/2007, 15h47
  4. Appeler evenement sans passer par gestionnaire
    Par yougize dans le forum Delphi
    Réponses: 3
    Dernier message: 22/01/2007, 15h48
  5. [VB]Generer un evenement click vers une autre application
    Par vijeo dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 14/02/2006, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo