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 :

Macro qui va chercher des conditions dans une table


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Points : 66
    Points
    66
    Par défaut Macro qui va chercher des conditions dans une table
    Bonjour,

    J’ai fait une petite macro qui déclenche une requête qui va chercher dans la table BASE les personnes qui ont les yeux bleus. Le résultat est ajouté dans la table RESULTAT.
    Elle marche bien malgré mon niveau de débutant ;-)

    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 rqt_yeux()
     
    'Définitions
    Dim db As DAO.Database
    Dim rst As DAO.Recordset
    Dim Qry As DAO.QueryDef
    Dim fld As DAO.Field
    Dim sql As String
     
    End Sub
     
    'Base en cours
    Set db = CurrentDb
    CurrentDb.QueryDefs.Delete "tmp"
    strSQL = "INSERT INTO resultat (NOM)select NOM From BASE Where YEUX='bleu';"
    Set Qry = CurrentDb.CreateQueryDef("tmp", strSQL)
    DoCmd.OpenQuery "tmp"
     
    End Sub
    Je cherche à améliorer cette macro : je voudrais utiliser un système de boucle qui va chercher une ou plusieurs couleurs choisies par l’utilisateur dans la table COULEURS.

    Exemple : Ici la table COULEURS contient les couleurs BLEU et VERT.
    Je voudrais que la requête tourne une fois pour la couleur BLEU puis ajoute le résultat dans la table RESULTAT.
    Je souhaiterais ensuite qu’elle retourne une fois pour la couleur VERT et qu’elle ajoute à la suite dans la table RESULTAT.

    Important : je souhaite faire tourner la requête autant de fois que de couleurs et ne pas utiliser de condition OU. En d’autres terme, je souhaite faire tourner la condition avec à chaque fois une seule couleur en condition.

    Voir fichier joint.

    Si quelqu’un peut m’aider, merci par avance !
    MS Excel 2007
    MS Access 2003
    SQL Server Express 2008 R2

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 219
    Points : 1 707
    Points
    1 707
    Par défaut
    bonsoir,
    et en classant simplement les couleurs de la table principale ?
    ex:

  3. #3
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Bonsoir,

    A quoi ça sert d'avoir une table "résultat" alors que l'info est déjà dans BASE et facile à filtrer ???

    Il est possible de parcourir la table couleurs et de faire l'insert pour chaque couleur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim rsc as recordset
    Set rsc = CurrentDb.OpenRecordset("SELECT * FROM couleurs")
    while not rsc.eof
      DoCmd.RunSQL "INSERT INTO resultat (NOM) select NOM From BASE Where YEUX='" & rsc!yeux & "';"
      rsc.movenext
    wend
    Pour ne le faire que pour les couleurs sélectionnées il faudrait ajouter un booleen "selection" à la table couleurs et changer le premier select
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT * FROM couleurs where selection"
    Pour info :
    db ne sert à rien puisqu'ensuite tu appelles currentdb et non db
    tmp ne sert pas à grand chose non plus inutile de compliquer le code...
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  4. #4
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Points : 66
    Points
    66
    Par défaut
    Bonsoir,

    merci pour vos réponses et vos remarques. Comme je débute, j'ai tendance à me compliquer. La solution est super claire.

    Par contre votre code bloque à la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     DoCmd.RunSQL "INSERT INTO resultat (NOM) select NOM From BASE Where YEUX='" & rsc!couleur & "';"
    avec un "run-time error 3265"--> Item not found in this collection. Savez vous pourquoi?

    Merci par avance.
    MS Excel 2007
    MS Access 2003
    SQL Server Express 2008 R2

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 107
    Points : 5 230
    Points
    5 230
    Par défaut
    Ah oui dans la table "couleurs" les couleurs sont dans le champ "yeux"

    J'ai corrigé ci-dessus
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  6. #6
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2009
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2009
    Messages : 106
    Points : 66
    Points
    66
    Par défaut
    J'aurais pu m'en rendre compte aussi

    Cela montre que je dois faire quelques progrès!!!

    Merci mille fois!
    MS Excel 2007
    MS Access 2003
    SQL Server Express 2008 R2

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

Discussions similaires

  1. Chercher des données dans une Table
    Par olivier45fr dans le forum Access
    Réponses: 5
    Dernier message: 03/05/2011, 15h48
  2. Macro - Ecrire des valeurs dans une table
    Par gojaru dans le forum Access
    Réponses: 2
    Dernier message: 17/08/2006, 13h54
  3. Chercher des mots dans une ligne
    Par chemouz dans le forum C++
    Réponses: 1
    Dernier message: 17/12/2005, 12h42
  4. [MySQL] Chercher des info dans une DB, et les afficher en lien
    Par pierrot10 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/10/2005, 19h29
  5. chercher des rue dans une carte
    Par .:dev:. dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 21/09/2005, 10h29

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