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

VBA Access Discussion :

Sortir d'une boucle while wend


Sujet :

VBA Access

  1. #1
    Membre régulier Avatar de 973thom
    Inscrit en
    Juin 2004
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Juin 2004
    Messages : 132
    Points : 78
    Points
    78
    Par défaut Sortir d'une boucle while wend
    Bonjour,

    est il possible de sortir d'une boucle "while wend" une fois que la condition désirée a été exécutée ?

    ci joint le code, et en vous remerciant par avance.

    TR

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
        Dim Plongee, MaDate, ClientEnCours As String
     
        Set TAbClient = CurrentDb.OpenRecordset("TAB_CLIENT", dbOpenTable)
        Set TabPlongClient = CurrentDb.OpenRecordset("TAB_PLONGEE_CLIENT", dbOpenTable)
        Set TabPlongee = CurrentDb.OpenRecordset("TAB_PLONGEE", dbOpenTable)
     
     
    TabPlongee.MoveFirst
     
    While Not TabPlongee.EOF
        Plongee = CStr(TabPlongee("PLONG_ID"))
        MaDate = CStr(TabPlongee("PLONG_DATE"))
     
        TabPlongClient.MoveFirst
            While Not TabPlongClient.EOF
                If CStr(TabPlongClient("PLONG_ID")) = Plongee Then
                    ClientEnCours = CStr(TabPlongClient("CLIENT_PRENOM"))
     
                    TAbClient.MoveFirst
                    While Not TAbClient.EOF
                    If CStr(TAbClient("CLI_ID")) = ClientEnCours Then
                            TAbClient.Edit
                                TAbClient("DER_DATE_PLONG") = MaDate
                            TAbClient.Update
                    End If
     
                    TAbClient.MoveNext
                    Wend
                End If
                TabPlongClient.MoveNext
            Wend
     
        TabPlongee.MoveNext
    Wend

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    Bonjour,
    2 solutions possibles :
    La premiere « sauvage » un exit sub après la séquence qui donne le résultat.
    La 2eme plus « pro » utiliser la boucle :
    Do -----Loop until <condition> au lieu de parcourir la totalité du recordset la condition est testée a la fin de chaque boucle et si elle est vraie elle s’arrête.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur VBA Access
    Inscrit en
    Avril 2006
    Messages
    1 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur VBA Access

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 109
    Points : 1 535
    Points
    1 535
    Par défaut
    Bonjour,

    dans un premier temps, on peut simplifier le code. Tu as besoin au pire de deux recordsets ou d'une seule requête UPDATE.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
        Set TabClient = CurrentDb.OpenRecordset("TAB_CLIENT", dbOpenTable)
        Set TabPlongClient = CurrentDb.OpenRecordset("SELECT CLIENT_PRENOM, PLONG_DATE FROM TAB_PLONGEE_CLIENT INNER JOIN TAB_PLONGEE ON TAB_PLONGEE.PLONG_ID=TAB_PLONGEE_CLIENT.PLONG_ID")
     
     
    While Not TabClient.EOF
      TabPlongee.FindFirst("CLIENT_PRENOM='" & TabClient!CLI_ID & "'")
      IF Not TabPlongee.NoMatch Then
        TAbClient.Edit
        TAbClient("DER_DATE_PLONG") = TabPlongee("PLONG_DATE")
        TAbClient.Update
      End If
      TAbClient.MoveNext
    Wend
    j'ai oublié la requête :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UPDATE Tab_Client
      INNER JOIN (Tab_Plongee_Client
                       INNER JOIN Tab_Plongee
                       ON Tab_Plongee.Plong_id=Tab_Plongee_Client.Plong_id)
      ON Tab_Client.Cli_Id=Tab_Plongee_Client.Client_Prenom
    SET DER_PLONG_DATE=PLONG_DATE;

Discussions similaires

  1. gerer le null dans une boucle while/wend
    Par @rkane dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/03/2011, 08h50
  2. Sortir d'une boucle while
    Par dahu007 dans le forum Langage
    Réponses: 14
    Dernier message: 15/06/2008, 17h33
  3. comment sortir d'une boucle while d'un Iterator
    Par solawe dans le forum Langage
    Réponses: 6
    Dernier message: 18/03/2008, 13h46
  4. Sortir d'une boucle while
    Par chris81 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 21/01/2008, 11h50
  5. Probleme pour sortir d'une boucle while
    Par aikinhdo dans le forum Langage
    Réponses: 0
    Dernier message: 27/07/2007, 15h01

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