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 :

Syntaxe boucle for


Sujet :

VBA Access

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Syntaxe boucle for
    Bonjour,

    J'essaye (sans succès) de simplifier ce code (qui permet de remplir des listes déroulantes dans mon formulaire) par deux boucles for :

    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
     
    Dim MAVAR1_1 As DAO.Recordset
    Dim MAVAR1_2 As DAO.Recordset
    Dim MAVAR1_3 As DAO.Recordset
    Dim MAVAR1_4 As DAO.Recordset
    Dim MAVAR1_5 As DAO.Recordset
    Dim MAVAR2_1 As DAO.Recordset
    Dim MAVAR2_2 As DAO.Recordset
    Dim MAVAR2_3 As DAO.Recordset
    Dim MAVAR2_4 As DAO.Recordset
    Dim MAVAR2_5 As DAO.Recordset
     
    Set MAVAR1_1 = CurrentDb.OpenRecordset("SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE ((poste = '" & Poste1_1 & "') and ([" & Ligue & "] = '" & Player1 & "')) ")
    Set MAVAR1_2 = CurrentDb.OpenRecordset("SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE ((poste = '" & Poste1_2 & "') and ([" & Ligue & "] = '" & Player1 & "')) ")
    Set MAVAR1_3 = CurrentDb.OpenRecordset("SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE ((poste = '" & Poste1_3 & "') and ([" & Ligue & "] = '" & Player1 & "')) ")
    Set MAVAR1_4 = CurrentDb.OpenRecordset("SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE ((poste = '" & Poste1_4 & "') and ([" & Ligue & "] = '" & Player1 & "')) ")
    Set MAVAR1_5 = CurrentDb.OpenRecordset("SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE ((poste = '" & Poste1_5 & "') and ([" & Ligue & "] = '" & Player1 & "')) ")
    Set MAVAR2_1 = CurrentDb.OpenRecordset("SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE ((poste = '" & Poste2_1 & "') and ([" & Ligue & "] = '" & Player2 & "')) ")
    Set MAVAR2_2 = CurrentDb.OpenRecordset("SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE ((poste = '" & Poste2_2 & "') and ([" & Ligue & "] = '" & Player2 & "')) ")
    Set MAVAR2_3 = CurrentDb.OpenRecordset("SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE ((poste = '" & Poste2_3 & "') and ([" & Ligue & "] = '" & Player2 & "')) ")
    Set MAVAR2_4 = CurrentDb.OpenRecordset("SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE ((poste = '" & Poste2_4 & "') and ([" & Ligue & "] = '" & Player2 & "')) ")
    Set MAVAR2_5 = CurrentDb.OpenRecordset("SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE ((poste = '" & Poste2_5 & "') and ([" & Ligue & "] = '" & Player2 & "')) ")
     
    Set Nom1_1.Recordset = MAVAR1_1
    Set Nom1_2.Recordset = MAVAR1_2
    Set Nom1_3.Recordset = MAVAR1_3
    Set Nom1_4.Recordset = MAVAR1_4
    Set Nom1_5.Recordset = MAVAR1_5
    Set Nom2_1.Recordset = MAVAR2_1
    Set Nom2_2.Recordset = MAVAR2_2
    Set Nom2_3.Recordset = MAVAR2_3
    Set Nom2_4.Recordset = MAVAR2_4
    Set Nom2_5.Recordset = MAVAR2_5
    Il n'y en a qu'un bout : la première variable va de 1 à 15 et la deuxième de 1 à 20...

    Si quelqu'un connait la syntaxe, ça m'aiderait beaucoup !

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,

    Je pense qu'une première étape dans la simplification serait de s'affranchir des recordsets.
    On doit pouvoir faire comme ça (exemple avec les deux premières listes):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim sRowSceSql As String
     
    ' Pour Nom1_1
    sRowSceSql = "SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs " & _
                 "WHERE ((poste = '" & Poste1_1 & "') and ([" & Ligue & "] = '" & Player1 & "')) "
    Nom1_1.RowSource = sRowSceSql
     
    ' Pour Nom1_2
    sRowSceSql = "SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs " & _
                 "WHERE ((poste = '" & Poste1_2 & "') and ([" & Ligue & "] = '" & Player1 & "')) "
    Nom1_1.RowSource = sRowSceSql
     
    ' ...
    Pour boucler il faudrait que tu nous dises ce que sont PosteI_J et PlayerI.
    Est-ce que ce sont des contrôles du formulaire ?
    Enfin, confirme la convention de nommage.
    NomI_J <--> PosteI_J <--> PlayerII compris entre 1 et 15 et J compris entre 1 et 20 ?

    A+

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Juillet 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par LedZeppII Voir le message
    Bonjour,

    Je pense qu'une première étape dans la simplification serait de s'affranchir des recordsets.
    On doit pouvoir faire comme ça (exemple avec les deux premières listes):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim sRowSceSql As String
     
    ' Pour Nom1_1
    sRowSceSql = "SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs " & _
                 "WHERE ((poste = '" & Poste1_1 & "') and ([" & Ligue & "] = '" & Player1 & "')) "
    Nom1_1.RowSource = sRowSceSql
     
    ' Pour Nom1_2
    sRowSceSql = "SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs " & _
                 "WHERE ((poste = '" & Poste1_2 & "') and ([" & Ligue & "] = '" & Player1 & "')) "
    Nom1_1.RowSource = sRowSceSql
     
    ' ...
    Pour boucler il faudrait que tu nous dises ce que sont PosteI_J et PlayerI.
    Est-ce que ce sont des contrôles du formulaire ?
    Enfin, confirme la convention de nommage.
    NomI_J <--> PosteI_J <--> PlayerII compris entre 1 et 15 et J compris entre 1 et 20 ?

    A+
    Bonjour,
    Je te confirme que tous les PosteI_J, NomI_J et PlayerI sont bien des contrôles du formulaire et la convention de nommage correspond bien : 1<I<15 et 1<J<20.

    Edit :
    J'ai réussi à simplifier le code !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 1 To 15
    	For j = 1 to 20
        		Forms![Formulaire1]("nom" & i & "_" & j).RowSource = "SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE poste = '" & Forms![match]("Poste" & i & "_" & j) & "' and " & Ligue & " = '" & Forms![Formulaire1]("player" & i) & "'"
    	Next j
    Next i
    Merci pour ton aide.

  4. #4
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 768
    Points
    7 768
    Par défaut
    Bonjour,
    Citation Envoyé par larkoup Voir le message
    J'ai réussi à simplifier le code !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 1 To 15
    	For j = 1 to 20
        		Forms![Formulaire1]("nom" & i & "_" & j).RowSource = "SELECT Numéro, Nom, Poste, " & Ligue & " FROM Joueurs WHERE poste = '" & Forms![match]("Poste" & i & "_" & j) & "' and " & Ligue & " = '" & Forms![Formulaire1]("player" & i) & "'"
    	Next j
    Next i
    Tu as trouvé tout seul le genre de code auquel je pensais

    Merci de mettre le tag «Résolu».
    A+

Discussions similaires

  1. [XL-2010] syntaxe boucle "for each"
    Par sterf dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 02/09/2014, 17h05
  2. syntaxe boucle for (was : array.filter : différence ie / fx)
    Par Peanut dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/02/2009, 10h28
  3. Syntaxe boucle for
    Par fmoriet dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 22/12/2006, 08h39
  4. [VBS][Débutant] Problème syntaxe boucle For
    Par _alex_ dans le forum VBScript
    Réponses: 2
    Dernier message: 26/07/2006, 15h26
  5. [Syntaxe] Boucle For imbriquées en 1.5
    Par Piolet dans le forum Langage
    Réponses: 5
    Dernier message: 09/01/2005, 01h49

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