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 :

Petit probleme sur boucle FOR [AC-2007]


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Petit probleme sur boucle FOR
    Bonjour à tous,


    Ma boucle FOR :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    For lngnombreligne = 0 To Intligne Step 1
     
            lngniveau = Me!Liste351.Column(IndiceColonne + 0, lngnombreligne + 0)
            opgChoix.Value = (lngniveau)
            opgChoix2.Value = (lngniveau)
            Print "Intligne"
            Print lngnombreligne
     
        Next
    Intligne est calculée par : Intligne = Liste351.ListCount

    Alors cette boucle fonctionne mais pas comme je le voudrait ! Donc le problème se situe sur opgChoix2 :

    1)Pour l'instant dans je lance mon code le nombre de ligne afficher sur mon tableau est calculée est sert de fin a ma boucle

    2) lngniveau va récupère la valeur de la colonne 0, ligne 0 (Valeur = 1,4,5,6,7) est un groupe d'option opgChoix récupère la valeur de lngniveau (pour coché la case désiré)

    Mon probleme est que opgChoix2 récupère la valeur destinée a opgChoix !


    Mon souhait serait que lorsque lngnombreligne est incrémenté, que ce soit opgChoix2 qui récupère la nouvelle valeur de lngniveau.

    Merci, bonne journée a tous.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2008
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2008
    Messages : 94
    Points : 73
    Points
    73
    Par défaut
    Salut,

    Mon probleme est que opgChoix2 récupère la valeur destinée a opgChoix !
    C'est normal, car opgChoix et opgChoix2 pointe sur la même variable lngniveau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            opgChoix.Value = (lngniveau)
            opgChoix2.Value = (lngniveau)
    Est ce que tu peux donner un exemple du fonctionnement que tu voudrais ? ça m'aiderais peut être plus pour ta solution. Merci

    A+

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut
    Bonjour à tous,

    Sur un onglet de mon formulaire :
    J’ai un contrôle liste déroulante qui me permet de sélectionné une personne (Nom). Lorsque une personne est sélectionnée un bouton (Niveau) permet de lancé mon code VBA. Celui-ci va récupérer la valeur du nom et lancé la requete SQL qui va afficher les niveau, le matériels, le fabricants dans un contrôle type liste.


    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
    Dim SQL15 As String
    Dim lngrecherchenomnivo As Long
    Dim lngniv As String
    strrecherchenomnivo As String
    lngnombreligne As Long
    Intligne As Integer
     
    '' SELECTION PAR NOM
    Private Sub Commande317_Click()
     
    '' Vérifie que l'on a cliqué sur un NOM pour éviter le NULL
      If Not IsNumeric(Me!SelectNomnivo) Then Exit Sub
     
    '' Affecte la valeur IDemp à la variable lngrecherchenm
     
    strrecherchenomnivo = SelectNomnivo.Column(IndiceColonne + 1)
     
     
      SQL15 = "SELECT(SELECT IDniv FROM TBLnivmaitrise N WHERE N.IDniv=A.IDniv), (SELECT Api FROM TBLapi Z WHERE Z.IDapi=A.IDapi), (SELECT(select Fabricant from TBLfabricantapi WHERE CodeFabricant=Z.CodeFabricant) FROM TBLapi Z WHERE Z.IDapi=A.IDapi) FROM TBLcompetence AS A WHERE A.IDemp=(SELECT IDemp FROM TBLemploye WHERE Nom='" & strrecherchenomnivo & "');"
     
      '' Affecte la chaîne SQL à la liste recherche nom
      Liste351.RowSource = SQL15
     
      '' Déverrouille la liste des Api
      Liste351.Enabled = True
     
      '' Donne le focus la liste des Api
      Liste351.SetFocus
     
     
    Intligne = Liste351.ListCount
     
     
        For lngnombreligne = 0 To Intligne Step 1
     
            lngniveau = Me!Liste351.Column(IndiceColonne + 0, lngnombreligne )
            opgChoix.Value = (lngniveau)
            opgChoix.Value = (lngniveau)
            Print Intligne
            Print lngnombreligne
     
        Next
     
     
     
    End Sub

    Liste351 est une liste qui affiche Niveau, Api(materiel), Fabricant
    Intligne est calculer par : Intligne = Liste351.ListCount
    lngnombreligne va permettre d’incrémenter la ligne de sélection sur le tableau
    lngniveau est la valeur présente dans le tableau colonne 0, ligneX
    opgChoix et opgChoix2 sont des contrôles type Option de groupe (5 option = Débutant, Moyen, Maitrise, Expert) qui sont des niveau

    Donc le problème se situe sur opgChoix2 dans la boucle FOR :

    1) Pour l'instant dans je lance mon code, le nombre de ligne afficher sur mon tableau est calculer par Intligne et sert de fin à ma boucle.
    2) lngniveau va récupérer la valeur de la colonne 0, ligne 0 (Valeur = 1, 4, 5, 6, 7) et un groupe d'option (opgChoix) récupère la valeur de lngniveau (pour coché la case désiré)

    Mon souhait serait que ma boucle vérifie sur le tableau toutes les lignes de la colonne 0 et que le résultat (lngniveau) soit renvoyé sur des contrôles type option de groupe (opgChoix, opgChoix2, opgChoixX)

    Donc pour la valeur de la colonne 0 ligne 0 (lngniveau)
    EX : Valeur = 1
    Va activé la case Débutant de mon groupe d’option (opgChoix.Value = 1 )
    Mais opgChoix2 devrait prendre la valeur Colonne 0, ligne 1
    EX : Valeur =4
    Mais va activé la case débutant alors que sa devrait être la case Moyen



    Merci, bonne journée a tous. Et j'espère avoir réussie à me faire comprendre.

  4. #4
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Ce n'est vraiment pas clair.

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 17
    Points : 8
    Points
    8
    Par défaut Je reprend tout !
    Ceci est le code qui me permet grâce a un bouton Commande317 d'afficher une liste de matériaux et de niveaux !
    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
    48
    49
    50
    '' SELECTION PAR NOM
    Private Sub Commande317_Click()
     
     
    '' Vérifie que l'on a cliqué sur un NOM pour éviter le NULL
      If Not IsNumeric(Me!SelectNomnivo) Then Exit Sub
     
    '' Affecte la valeur IDemp à la variable lngrecherchenm
     
    strrecherchenomnivo = SelectNomnivo.Column(IndiceColonne + 1)
     
     
      SQL15 = "SELECT(SELECT IDniv FROM TBLnivmaitrise N WHERE N.IDniv=A.IDniv), (SELECT Api FROM TBLapi Z WHERE Z.IDapi=A.IDapi), (SELECT(select Fabricant from TBLfabricantapi WHERE CodeFabricant=Z.CodeFabricant) FROM TBLapi Z WHERE Z.IDapi=A.IDapi) FROM TBLcompetence AS A WHERE A.IDemp=(SELECT IDemp FROM TBLemploye WHERE Nom='" & strrecherchenomnivo & "');"
     
      '' Affecte la chaîne SQL à la liste recherche nom
      Liste351.RowSource = SQL15
     
      '' Déverrouille la liste des Api
      Liste351.Enabled = True
     
      '' Donne le focus la liste des Api
      Liste351.SetFocus
     
     ''création variable lngniveau plusieur ligne
     
    Intligne = Liste351.ListCount
     
     
        For Intnombreligne = 0 To Intligne
     
           lngniveau = Me!Liste351.Column(IndiceColonne + 0, Intnombreligne + 0)
            opgChoix0.Value = (lngniveau)
     
            MsgBox (Intligne)
            MsgBox (lngniveau)
            MsgBox (Intnombreligne)
            Print Intligne
            Print Intnombreligne
     
        If lngnombreligne = (Intligne - 1) Then Exit For
     
        Next
     
        lngniveau = Me!Liste351.Column(IndiceColonne + 0, Intnombreligne + 0)
            opgChoix2.Value = (lngniveau)
        Print Intligne
            Print Intnombreligne
     
     
    End Sub
    Ce code est lié a un formulaire, dans ce formulaire il y a :

    --> Un contrôle liste déroulante "SelectNomnivo" qui affiche le prénom et le nom de l'employé.

    --> Un contrôle Bouton "Command317" qui permet d'exécuter le code VBA.

    --> Un contrôle Liste "Liste351" qui affiche IDniveau Fabricant API après clic sur "Commande317"

    --> Un ou plusieurs groupes d'options "OpgChoix, OpgChoix2, OpgChoixX ..." qui est censé récupéré L'idniveau dans liste351.


    Ce code a l'heure actuelle récupère bien la valeur du niveau de la première ligne de liste351, mais comment faire pour que tous les niveaux de mon tableau soit tous afficher dans des groupes d'option ?

    Type : Ligne 0 -----> OpgChoix
    Ligne 1 ----->OpgChoix2


    Est ce claire ou toujours pas ?

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

Discussions similaires

  1. [AC-2007] Petit probleme sur boucle FOR
    Par Spurius dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/04/2010, 11h04
  2. petite question rapide sur boucle for
    Par KateA dans le forum C
    Réponses: 15
    Dernier message: 08/03/2010, 23h59
  3. Réponses: 3
    Dernier message: 11/06/2006, 12h09
  4. [BATCH] Aide sur boucle for et test
    Par t_om84 dans le forum Windows
    Réponses: 3
    Dernier message: 07/06/2006, 10h12
  5. [C#] Probleme de boucle for et random
    Par Freeman166 dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/01/2005, 14h34

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