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

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant data manager
    Inscrit en
    février 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Assistant data manager

    Informations forums :
    Inscription : février 2015
    Messages : 22
    Points : 19
    Points
    19
    Par défaut Créer et afficher une requête VBA dans un formulaire
    Bonjour à tous !

    Travaillant depuis quelques mois sur Access, j'ai pris l'habitude de lire votre site lorsque je suis confronté à un problème.
    Aujourd'hui néanmoins, me voilà coincé, cela fait en fait plusieurs jours que je le suis par un petit souci, et malgré mes recherches, je n'avance pas d'un pas.
    Je travaille actuellement sur la création d'une base de donnée interne à l'entreprise dans laquelle je travaille. J'aimerais pour son fonctionnement incorporer une requête codée en VBA, j'ai déjà un modèle (réalisé par un stagiaire il y a 15 ans qui a fait un excellent travail) mais j'ai énormément de mal à le comprendre.
    Du coup, j'ai décidé d'y aller progressivement, en tentant déjà de créer une première requête VBA "bidon", histoire déjà de voir comment ça marche.
    Je pense être sur la bonne voie pour créer la requête (du moins je l'espère) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Recavancee()
    strSql = "SELECT Volontaires.[Nom 1], Volontaires.N°Volontaire " & vbCrLf & _
    "FROM Volontaires " & vbCrLf & _
    "WHERE (((Volontaires.[Nom 1])=""Citrouilland""));"
     
    End Sub

    En gros, c'est tout simple (mais si j'y arrive, ça me fera faire un gros pas pour continuer ensuite de façon autonome et faire ce que je veux réellement faire). Il s'agit de réaliser une requête que je pourrais aussi faire via une requête "normale". Elle consiste à extraire dans la liste des clients tous les clients ainsi que leur numéro client ayant pour premier nom "Citrouilland" (je précise qu'il s'agit bien sûr de clients factice tant que cette base est en travaux).
    Pour obtenir cette requête, j'ai utilisé un code qui convertit un code SQL en VBA. Néanmoins, je suis surpris qu'il ne nécessite pas de recordset, donc je me demande si je suis sur la bonne piste !
    Ensuite, une fois cela codé en VBA, je veux que la requête s'active grâce à un bouton sur un formulaire, et que son activation ouvre un formulaire, comportant un sous-formulaire avec la liste des clients concernés. Le formulaire est bien sûr déjà prêt, reste à ce que je comprenne comment faire en sorte qu'il ne me donne que les sujets concernés par la requête plus ou moins juste (en priant pour que ce soit plutôt plus que moins) que j'ai placée.
    Merci pour votre attention !

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    rédacteur/modérateur
    Inscrit en
    avril 2005
    Messages
    11 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : rédacteur/modérateur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2005
    Messages : 11 077
    Points : 22 420
    Points
    22 420
    Par défaut
    Bonjour,
    Le recordset est réservé à des traitements VBA particuliers.

    Je te conseille de transformer ta Sub en Function pour qu'elle renvoie texte SQL.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function Recavancee()
    Recavancee = "SELECT Volontaires.[Nom 1], Volontaires.N°Volontaire " & vbCrLf & _
    "FROM Volontaires " & vbCrLf & _
    "WHERE (((Volontaires.[Nom 1])=""Citrouilland""));"
     
    End function
    Honnêtement les vbCrlf on s'en fout mais bon, ça n'empêche pas le fonctionnement.

    Ensuite lorsque tu souhaites l'utiliser dans la source d'un contrôle (formulaire, sous-form, liste...) il te suffit de l'affecter comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...Moncontrole.recordsource = racavancee()
    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistant data manager
    Inscrit en
    février 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Assistant data manager

    Informations forums :
    Inscription : février 2015
    Messages : 22
    Points : 19
    Points
    19
    Par défaut
    Merci pour ta réponse !
    Je suis en train d'essayer ça, ça m'est d'une grande aide !
    Bonne continuation à toi !

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/01/2015, 21h16
  2. Réponses: 1
    Dernier message: 13/05/2010, 17h13
  3. [OpenOffice][Base de données] Afficher des paramètres d'une requête paramétrée dans un formulaire
    Par ggnore dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 02/09/2009, 12h37
  4. résultat d'une requête Somme dans un formulaire
    Par chrislauxerrois dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 03/08/2006, 16h29
  5. comment afficher une image animée dans un formulaire
    Par dadamovic dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/05/2006, 19h59

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