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 :

Boucle VBA Sur le champ d'une requête [AC-2010]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 90
    Points : 51
    Points
    51
    Par défaut Boucle VBA Sur le champ d'une requête
    Bonjour,

    Mon code est le suivant :

    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
    Sub GammePDF()
     Dim i As Integer
     Dim Max As Integer
        Max = '''''''Nombre d'enregistrements de ma requête''''''''''''''
     
     For i = 0 To Max
     
            Dim Ladate As Date, Lentier As Variant
            Dim mach As String, Lig As String
            Ladate = Forms![F_Preventif]![Date_p]
            Lentier = Format(DateSerial(Year(Ladate), Month(Ladate), Day(Ladate)), "dd-mm-yy")
            mach = ''''''''''''La i'ème ligne du champ "machine" de ma requête "R1" ''''''''''''''''''''''' 
            Lig = Forms![F_Preventif]![lstligne]
            DoCmd.OutputTo acOutputReport, "PRINCIPALE", acFormatPDF, "\\fermat\echange\Entretien_r01\Méthodes Maintenance\Gammes\" & "Gamme_" & Lig & "_" & mach & "_" & Lentier & ".pdf"
     
    Next i
     
     
     End Sub

    Je cherche donc comment on appelle la ième ligne d'un champ d'une requête (R1![machine].Value (i) ????) ainsi que la fonction qui donne le nombre d'enregistrements de la requête.

    Je vous remercie pour votre aide.

    Othmane

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

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 648
    Points : 14 626
    Points
    14 626
    Par défaut
    Bonjour,
    je crois que c'est la 3ème fois que tu postes cette demande. Si tu n'obtient pas de réponse, poses-toi la question : est-ce que quelqu'un a compris ce que je demande ?
    N'oublies pas que lorsque tu rencontres un problème sur ton application tu vois ce qui ne va pas, mais les autres ne l'ont pas sous les yeux et c'est en donnant un maximum d'informations que tu aideras les autres à trouver une solution.

    Je cherche donc comment on appelle la ième ligne d'un champ d'une requête (R1![machine].Value (i) ????)
    essaie de donner plus d'informations sur ce que tu entends par "comment on appelle la ième ligne d'un champ" : est-ce après une sélection d'un enregistrement ou est-ce que tu veux t'arrêter à cet ième pour une raison quelconque ?
    une requête (R1![machine].Value (i) ????)
    est-ce la requête d'un formulaire simple, d'un formulaire continu, d'une liste déroulante ??
    ainsi que la fonction qui donne le nombre d'enregistrements de la requête.
    Cela on peut le donner à condition d'avoir les informations précédentes concernant l'origine de la requête, mais en général pour la source d'un formulaire c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim ors As Recordset
    Dim LngNbEnregistrement As Long
    Set ors = Me.RecordsetClone
    LngNbEnregistrement = ors.RecordCount
    Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
    ah non ? donc devant l'écran c'est la connectique ?

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Je ne vois aucune requête dans le code que tu as posté. Tu semble parcourir les enregistrements affichés par ton formulaire F_Preventif.

    Je vais poster du code qui fait ce que tu demandes pour un formulaire et un exemple avec une requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dim r as dao.recordset:set r=forms("F_Preventif").recordsetclone 'Utiliser recordsetclone au lie de Recordset permet de ne pas changer l'affichage courant.
     
    do while not r.eof
       'Ici du code à faire sur l'enregistrement courant.
       r.movenext
    loop
     
    set r=nothing
    Note qu'avec ce code on a pas besoin de connaître à l'avance le nombre d'enregistrement

    Ici avec une requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dim db as dao.database: set db=currentdb
    dim r as dao.recordset:set r=d.openrecordste("NomTaRequete", dbOoenDynaset)
     
    do while not r.eof
       'Ici du code à faire sur l'enregistrement courant.
       r.movenext
    loop
     
    set r=nothing
    db.close:set db=nothing
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 90
    Points : 51
    Points
    51
    Par défaut
    RE-bonjour,
    Je ne pense pas avoir posé la même question 3 fois, je ne sais peut être pas très bien expliquer.
    Donc, je veux l'équivalent du Sheets("table1").Cells(i,3) dans excel. Ce qui me permettra pas la suite de faire une boucle.
    Dans mon cas : La requête est créée à partir de 2 table et d'un choix dans une liste déroulante dans un formulaire.
    Je vous remercie

  5. #5
    Membre du Club
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Juillet 2017
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 90
    Points : 51
    Points
    51
    Par défaut
    Merci marot, je pensais qu'il fallait faire une boucle "For", mais là ça marche nickel

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

Discussions similaires

  1. [AC-2010] Boucle vba sur les élements d'un champ d'une requête
    Par othmanepf dans le forum VBA Access
    Réponses: 2
    Dernier message: 02/10/2017, 15h53
  2. [MySQL] Boucle while sur le résultat d'une requête
    Par andaman dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 02/10/2013, 10h17
  3. Bouton sur un champ d'une requête?
    Par koopadu91 dans le forum IHM
    Réponses: 5
    Dernier message: 03/04/2013, 11h50
  4. Boucle sur un champ d'une requête
    Par Antisthene dans le forum VBA Access
    Réponses: 7
    Dernier message: 10/03/2013, 08h56
  5. Réponses: 7
    Dernier message: 26/05/2006, 19h45

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