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 :

Requête dans une boucle.


Sujet :

VBA Access

  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Par défaut Requête dans une boucle.
    Bonjour,

    Je débute avec access, me débrouilles pas trop mal, par contre, j'ai quelques soucis avec le vba,etc..
    Mon problem est le meme que celui de mat6700,sur cette discussion http://www.developpez.net/forums/sho...85#post2666022 je dois faire un boucle avec une requete à l'interieur :

    "For i = 1 to [Nombre de ports] [...] Docmd.RunSQL .... [...] Next"

    mais je ne sais pas ou mettre ce code ? , il faut aller dans visual basic ?
    et creer un module ?
    Je ne comprends pas trop...
    Il y a pleins d'exemples de code interessants si ce site, mais j'ai pas trouver la "base", si vous pouviez me conseiller des guides commençant par le début, et m'aiguiller un peu pour l'emplacement de la boucle ci dessus, je vous en serais vraiment reconnaissant.
    Merci d'avance

  2. #2
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Citation Envoyé par flamby6969 Voir le message
    Bonjour,

    Je débute avec access, me débrouilles pas trop mal, par contre, j'ai quelques soucis avec le vba,etc..
    Mon problem est le meme que celui de mat6700,sur cette discussion http://www.developpez.net/forums/sho...85#post2666022 je dois faire un boucle avec une requete à l'interieur :

    "For i = 1 to [Nombre de ports] [...] Docmd.RunSQL .... [...] Next"

    mais je ne sais pas ou mettre ce code ? , il faut aller dans visual basic ?
    et creer un module ?
    Je ne comprends pas trop...
    Il y a pleins d'exemples de code interessants si ce site, mais j'ai pas trouver la "base", si vous pouviez me conseiller des guides commençant par le début, et m'aiguiller un peu pour l'emplacement de la boucle ci dessus, je vous en serais vraiment reconnaissant.
    Merci d'avance

    oui, le VBA s'écrit forcément dans un module...
    Mais il y a plusieurs sortes de modules.
    Tu souhaites déclencher ta boucle quand ?
    Si c'est quand tu cliques sur un bouton d'un formulaire, alors, tu commences par faire ton formulaire. Tu y ajoutes ton bouton. Tu vas dans les propriétés du bouton. Tu vas dans l'onglet Evènements. Tu choisis "sur Clic". Tu sélectionne "Procédure évènementielle" dans la liste. tu cliques sur le petit bouton de droite (avec les ...) et tu te retrouves dans une page de module attachée à ton formulaire, directement entre un Sub xxxxx_Clic et un End Sub.

    Tu es arrivé !
    il ne te reste plus qu'à écrire ton code.

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Par défaut Réponse
    Merci pour la rapidité de ta réponse,

    C'est exactement ça, je voudrais que les enregistrements soient crées quand on click sur un bouton dans le formulaire.
    Mon formulaire est fait, j'ai fais exactement ce que tu as dis, et en cliquant sur les trois petits points de l'évenement "sur click" des propriétés du bouton, j'arrive dans une page qui me semble etre dédiée à la création de macros ??, :



    Je n'ais pas l'impression d'etre entre un Sub ... et End Sub , si je ne me suis pas trompé, il faut que je sélectionne quoi comme action?

  4. #4
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    Peut-être que tu as oublié deux détails...
    => le premier : de préciser que tu es en access2007
    => le second, de choisir "procédure évènementielle" AVANT de cliquer sur les 3 petits points.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    bonjour,
    dans l'évenement "sur clic" de ton bouton, clique sur les "..." et sélectionne "générateur de code"
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Par défaut re
    merci à tous les deux,.. j'avance lentement, mais surement
    et désolé pour Access2007, je pensais que ca ne rajouterais pas de complication.
    => le second, de choisir "procédure évènementielle" AVANT de cliquer sur les 3 petits points.
    J'ai bien cliqué sur Evènement avant de cliquer sur les trois petits points, mais je n'ai pas trouvé de "procédure évènementielle", je sais pas si c'est la meme chose ?
    dans l'évenement "sur clic" de ton bouton, clique sur les "..." et sélectionne "générateur de code"
    Je n'ais pas accès au générateur de code, ca m'ouvre directement le générateur de macros cf image de tout à l'heure. , par contre, à force de bidouiller, je crois avoir trouver : j'ai cliqué sur "visualiser le code" dans le ruban création, à droite de propriétés. ensuite, j'ai bien trouvé le Sub Commande_Click ... End Sub,
    J'ai mis le code suivant à l'interieur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub Commande89_Click()
        Dim I As Byte
        Dim Num_Fact: Me.N°_de_facture
            For I = 1 To Me.Nombre_de_cps
            DoCmd.RunSQL "INSERT INTO Coupons ( [N° de Facture], [Count] ) SELECT Num_Fact ,I ;"
        Next
    End Sub
    Mais rien ne se passe quand je clique sur le bouton dans le formulaire.. y aurait il des erreurs ?.. (probablement j'imagine vu que je fais cela pour la premiere fois.. )

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    je ne sais pas trop ce que tu cherches à faire avec mais le code correcte serait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Commande89_Click()
        Dim I As Byte
        Dim Num_Fact
    Num_Fact = Me.N°_de_facture
            For I = 1 To Me.Nombre_de_cps
            DoCmd.RunSQL "INSERT INTO Coupons ( [N° de Facture], [Count] ) VALUES("& Num_Fact &", " & I &");"
        Next
    End Sub
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  8. #8
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Par défaut re
    Bonjour, et désolé pour ma réponse tardive, j'ai eu quelques soucis informatiques ces derniers jours..

    J'ai repris le code que tu as mis, et pour commencer, j'aurrais une question : à quel endroit faut il copier le code, dans les "microsoft office acces objets de classe", les "modules", ou les "modules de classe" ?
    Je suppose que le bon choix est le premier parce que dans ce répertoire, j'ai déja un objet "Form_facture" dans lequel, lorsque je double click, je retrouve dans le fenetre principal l'espace pour coder, ainsi qu'au dessus, deux listes déroulantes avec tous les objets présents dans mon formulaire dans la premiere(ex: Commande89), et les actions possibles dans la deuxieme (Click, etc..)

    Bref, j'ai sauvegardé, et tout et tout.. je pensais que ce serrait bon, mais rien ne se passe lorsque je lance le formulaire et que je click sur le bouton .. .
    aurriez vous une idée?
    c'est automatique l'assignation de cette procédure lorsque l'on click sur le bouton, ou bien faut il rajouter quelque chose quelque part, comme dans les propriétés du bouton par exemple (ex: ajouter une procédure évenementielle sur click, mais j'ai pas trouvé quoi faire, il y a bien exécuter une macro, mais ce code, c'est pas une macro, non ?)

    merci d'avance pour votre aide ..

  9. #9
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Par défaut suite
    est ce que cela pourrait venir du fait que je ne donne pas une valeurs à tous les champs présent dans la table Coupons ?
    en effet, j'ai rajouté pour un usage ultérieur un champ "Statut" et un clé primaire "ID" pour avoir un identifiant unique pour chaque coupon.

  10. #10
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Par défaut re: suite
    Re bonjour,

    Je viens de trouver d'ou venait l'un de mes problèmes : les macros étaient désactivées, donc pas d'actions quand je cliquais sur le bouton.

    j'ai encore un petit soucis :

    Une boite me dialogue me demande si je souhaite ajouter une ligne , est il possible de supprimer cet avertissement ?
    Car si je dois crée 50 coupons, il me faut cliquer 50 fois sur "ok"

  11. #11
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut, essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.SetWarnings false
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  12. #12
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Par défaut Résolut
    Merci merci beaucoup !!

    tout fonctionne à merveille maintenant

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

Discussions similaires

  1. [AJAX - PHP] Lancer des requêtes dans une boucle
    Par Psycadi dans le forum AJAX
    Réponses: 12
    Dernier message: 01/07/2010, 16h05
  2. [MySQL] Deux requêtes dans une boucle
    Par stefanelle dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 25/02/2009, 10h41
  3. [MySQL] Résultat de requête dans une boucle
    Par pcboy dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/01/2009, 16h55
  4. Comment éviter des requêtes dans une boucle
    Par dam28800 dans le forum Langage
    Réponses: 43
    Dernier message: 04/12/2008, 16h53
  5. Problème de requête dans une boucle avec ADOQuery
    Par Ekik dans le forum Bases de données
    Réponses: 8
    Dernier message: 14/05/2007, 16h07

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