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 à l'essai
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Points : 21
    Points
    21
    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 éminent

    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
    Points : 9 197
    Points
    9 197
    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 à l'essai
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Points : 21
    Points
    21
    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 éminent

    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
    Points : 9 197
    Points
    9 197
    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 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370
    Par défaut
    bonjour,
    dans l'évenement "sur clic" de ton bouton, clique sur les "..." et sélectionne "générateur de code"

  6. #6
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Points : 21
    Points
    21
    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 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370
    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

  8. #8
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Points : 21
    Points
    21
    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 à l'essai
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Points : 21
    Points
    21
    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 à l'essai
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Points : 21
    Points
    21
    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 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370
    Par défaut
    salut, essaie ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    docmd.SetWarnings false

  12. #12
    Membre à l'essai
    Inscrit en
    Novembre 2007
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 46
    Points : 21
    Points
    21
    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