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 :

Problème de fonctionnement d'une boucle sous VBA [AC-2013]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Par défaut Problème de fonctionnement d'une boucle sous VBA
    Bonjour la communauté,

    je viens vers vous une nouvelle fois, pour vous demander de l'aide, concernant la création d'une boucle me permettant d’afficher une situation d'un espace client.

    Alors tout d'abord, je vous présente mon croquis, afin de mieux visualiser ce que je souhaite réaliser :
    Nom : Capture1.JPG
Affichages : 106
Taille : 16,1 Ko

    Voici le code que j'ai effectué :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    ''Zone de texte de la situation
    Public Sub InfosSituation(TypeAffich As Integer)
     
        Dim oDb As DAO.Database
        Dim oRst As DAO.Recordset
     
        Dim StrSynt As String ' variable résultat obtenu.
     
        Dim NmTitu  As String   ' variable nom du titlaire.
        Dim NmBq As String   ' variable nom de la banque.
        Dim NmCpt As String ' variable nom du compte.
        Dim MntCpt As Currency ' variable montant total des différents comptes.
     
        Set oDb = CurrentDb
     
     
        Set oRst = oDb.OpenRecordset("R_SoldeCpte", dbOpenSnapshot) 'Appel de la requête Soldecpte
            NmTitu = oRst.Fields("NomTitulaire")
            NmBq = oRst.Fields("NomBanque")
            NmCpt = oRst.Fields("NomCompte")
            MntCpt = Nz(oRst.Fields("MontantCpte"), 0)
     
     
            StrSynt = ""
                While Not oRst.EOF
                    StrSynt = StrSynt & NmBq & vbCrLf _
                    & "  -" & NmCpt & vbCrLf _
                    & "   " & NmTitu & "    " & MntCpt & " "
                         oRst.MoveNext
                Wend
     
     
        'Comme Source de la Zone de Texte, mise en place d'un titre + le résultat de la boucle.
        Select Case TypeAffich
            Case Is = -1    ''TypeAffich :  -1 Pour Zone de texte
               Form_Menu.TxtSituation.ControlSource = _
               "=" & """" & StrSynt & """"
        End Select
     
        'Fermetures des connexions
        oRst.Close
        oDb.Close
        Set oDb = Nothing
        Set oRst = Nothing
     
     
    End Sub
    Le problème que je rencontre, avec ce code, c'est qu'il m'indique à chaque fois le même nom de banque, de titulaire et de solde.
    Il ne me fait pas une boucle mais il répète à chaque fois la première ligne de la requête.

    Pourriez-vous m'aider car je pense que j'ai effectué une erreur dans le code de la boucle.

    Dans l'attente de vous lire, bon weekend.

    Bien cordialement,
    Benjamin.

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 966
    Par défaut
    bonsoir,
    l'alimentation des variables doit être dans la boucle, sinon ce sera toujours le premier enregistrement qui sera renvoyé :
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    ''Zone de texte de la situation
    Public Sub InfosSituation(TypeAffich As Integer)
     
        Dim oDb As DAO.Database
        Dim oRst As DAO.Recordset
     
        Dim StrSynt As String ' variable résultat obtenu.
     
        Dim NmTitu  As String   ' variable nom du titlaire.
        Dim NmBq As String   ' variable nom de la banque.
        Dim NmCpt As String ' variable nom du compte.
        Dim MntCpt As Currency ' variable montant total des différents comptes.
     
        Set oDb = CurrentDb
     
        Set oRst = oDb.OpenRecordset("R_SoldeCpte", dbOpenSnapshot) 'Appel de la requête Soldecpte 
     
        While Not oRst.EOF
            NmTitu = oRst.Fields("NomTitulaire")
            NmBq = oRst.Fields("NomBanque")
            NmCpt = oRst.Fields("NomCompte")
            MntCpt = Nz(oRst.Fields("MontantCpte"), 0)
            StrSynt = StrSynt & NmBq & vbCrLf _
            & "  -" & NmCpt & vbCrLf _
            & "   " & NmTitu & "    " & MntCpt & " "
            oRst.MoveNext
        Wend
     
     
        'Comme Source de la Zone de Texte, mise en place d'un titre + le résultat de la boucle.
        Select Case TypeAffich
            Case Is = -1    ''TypeAffich :  -1 Pour Zone de texte
               Form_Menu.TxtSituation.ControlSource = _
               "=" & """" & StrSynt & """"
        End Select
     
        'Fermetures des connexions
        oRst.Close
        oDb.Close
        Set oDb = Nothing
        Set oRst = Nothing
     
     
    End Sub

  3. #3
    Membre éclairé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2013
    Messages : 297
    Par défaut
    Bonsoir tee_grandbois,

    je te remercie pour ta réponse et ton explication, désormais je serais pourquoi ceci ne fonctionne pas.

    Merci pour ton aide.

    Bien cordialement,
    Benjamin.

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

Discussions similaires

  1. Problème pour une boucle en vba
    Par Auriane421 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/05/2016, 06h15
  2. faire une boucle sous vba avec condition
    Par ons1402 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/03/2012, 17h16
  3. [XL-2007] problème de codage d'une boucle VBA
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/08/2011, 11h01
  4. Traiter 100 fichiers avec une boucle sous VBA excel
    Par sebastien06 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/04/2008, 09h39
  5. [VBA]Problème de passage dans une boucle
    Par Halima91 dans le forum VBA Access
    Réponses: 4
    Dernier message: 30/03/2007, 04h09

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