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 :

Affichage résultat d'un select [AC-2003]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Par défaut Affichage résultat d'un select
    Bonjour à tous

    Je débute actuellement en VBA et j'utilise le FAQ de ce site afin de m'exercer.
    Je suis actuellement en train de réaliser le travail suivant:

    J'ai une base de donnée access Eleve et je souhaites par une macro appeler son contenu et l'afficher dans excel.

    Je peux evidemment utiliser l'enregistreur de macro, ce qui actuellement fonctionne mais le but final est de pouvoir utiliser cette macro pour insérer des paramètres dans ma recherche afin de préciser les résultats.

    Voici actuellement mon code

    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
    20
    21
     Sub DAOOpenRecordset()
     
        Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
        Dim sSQL As String
        ' Ouverture de la base de données
        Set db = DBEngine.OpenDatabase("C:\Documents and Settings\thibaut.lecrosnier\Bureau\bd1.mdb")
        sSQL = "Select * From Eleve"
        ' Ouverture du recordset
        Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
     
    ' parcours du rst
     
        Do Until rst.EOF
        ' code
        rst.MoveNext
        Loop
     
     ' Fermeture du Recordset
        rst.Close
     
    End Sub
    Je n'ai pas de message d'erreur sur ma macro mais je n'ai pas non plus de résultat.

    Je pense qu'il s'agit d'un oublie de ma part dans la macro mais débutant en VBA je ne trouve pas la solution.

    Merci pour votre aide

    Edit: fautes de frappe

  2. #2
    Membre Expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Par défaut
    Bonjour,

    ...mais je n'ai pas non plus de résultat.
    Oui, mais en même temps ton code ne demande aucun affichage du résultat....

    As-tu consulté ce tuto: Définition et manipulation de données avec DAO

    ....et en particulier ce chapitre : 5.4. Manipulation des données

    ...à voir si cela te permet d'avancer...

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Par défaut
    Effectivement je n'avais pas d'affichage dans mon code..

    j'ai donc rajouté ceci dans mon parcours du rst

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "Le nom de L'Eleve est : " & rst.Fields("eleve").Value
    J'affiche donc maintenant le nom de chaque eleve dans un MsgBox à la suite.

    De quel maniere je pourrais afficher les résultats dans un tableau excel.
    Par exemple avoir dans un tableau Nom | Age | Classe un affichage des valeurs correspondantes.

    la partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    & rst.Fields("eleve").Value
    ne va pas bouger mais je ne vois pas comment insérer ca dans des cellules excel.

    Merci en tout cas FreeAccess

  4. #4
    Membre Expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Par défaut
    Pour l'exportation de données vers Excel, tu as plusieurs possibilités:

    Communication entre Access et Excel

    ...en fonction de ton application, tu choisi celle qui te convient le mieux..

    [EDIT] Sinon méthode rapide : Clic droit sur la table concernée, puis Exporter > Excel

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Par défaut
    Le but est d'automatisé le processus, c'est a dire d'avoir par exemple un bouton qui appelle la macro et qui m'affiche mon
    dans un tableau.

    Je ne peux donc pas passer par l'export.
    Afin d'avoir un peu de résultat j'avais enregistré mon export dans une macro et ainsi je peux l'appliquer sur mon bouton mais malheureusement je ne peux pas vraiment modifier ma macro enregistré.

    J'essai de faire ca par étape afin de bien comprendre le principe et de pouvoir modifier ensuite le code à ma guise afin d'ajouter des fonctionnalités comme la possibilité d'ajouter un paramètre dans ma requete pour préciser les recherches.

    Je ne suis pas sur que ton lien corresponde donc à ma recherche ou alors je n'ai pas compris le code.

  6. #6
    Membre Expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Par défaut
    Alors là je ne comprends plus ce que tu souhaite réaliser...

    Pour moi, tu as une base ACCESS contenant une ou plusieurs tables.
    Tu souhaite "récupérer" ces différentes données et les "afficher" dans EXCEL.......donc faire une exportation d'ACCESS vers EXCEL.

    Le tuto proposé te montre les différentes possibilités que tu as pour "envoyer" ces données vers Excel.

    Concernant ceci :
    ...avoir par exemple un bouton qui appelle la macro et qui m'affiche mon...dans un tableau
    Qu'appelle-tu 'tableau'...

    ...et bien sur cela se fera par code VBA :
    voir chapitre L'export simple

  7. #7
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Par défaut
    Merci pour les liens, je vais prendre le temps de les lire minutieusement.

    Je ne passe pas encore le topic en résolu si quelque fois j'ai d'autres questions à apporter sur le sujet.

  8. #8
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Par défaut
    La lecture n'a pas eu besoin d'être si minutieuse que ca, j'ai trouvé ma solution rapidement!!

    Je me permet de poster mon code pour les personnes ayant le même problème que moi même si je conseille la lecture du FAQ et de l'ensemble des liens fournis par FreeAccess

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    Sub DAOOpenRecordset()
     
        Dim db As DAO.Database, rst As DAO.Recordset, fld As DAO.Field
        Dim sSQL As String
        Dim appexcel As Excel.Application
        Dim wbexcel As Excel.Workbook
        Dim XLApp As Object
        Dim ligne As Long
     
     
     
     
        Set XLApp = GetObject(, "Excel.Application")
        XLApp.Sheets("Feuil1").Select
     
     
     
        ' Ouverture de la base de données
        Set db = DBEngine.OpenDatabase("C:\Documents and Settings\thibaut.lecrosnier\Bureau\bd1.mdb")
        sSQL = "Select * From Eleve"
        ' Ouverture du recordset
        Set rst = db.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
     
        ligne = 2
     
    ' parcours du rst
     
        Do Until rst.EOF
     
        XLApp.Cells(ligne, 2) = rst![eleve]
        XLApp.Cells(ligne, 4) = rst![age]
        XLApp.Cells(ligne, 3) = rst![classe]
     
     
        ligne = ligne + 1
        rst.MoveNext
        Loop
     
     ' Fermeture du Recordset
        rst.Close
     
    End Sub
    J'ai mis une petite manip qui me permet d'incrémenter la variable ligne dans ma boucle afin que les éléments s'ajoutent à la suite et ne s'écrasent pas sur la même ligne.

    Concernant la seconde partie de mon travail avec la récupération d'une variable venant d'un formulaire ou d'une cellule excel, je dois créer un nouveau topic et passé celui la en résolu? Ou je peux continuer sur celui la?

  9. #9
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 127
    Par défaut
    Bonjour,

    Le code est dans excel ou dans access ?
    S'il est dans access tu peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rst = Currentdb.OpenRecordset(sSQL, dbOpenForwardOnly, dbReadOnly)
    Cela évite de déclarer db et de dire où sont les données

    Ensuite pour filtrer les données afin de n'avoir qu'une partie des élèves il suffit de préciser des conditions dans sSQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    sSQL = "Select * From Eleve WHERE age<=" & AgeMax
    sSQL = "Select * From Eleve WHERE classe='" & MaClasse "'"
    par exemple si AgeMax est un nombre et MaClasse une variable string qui contient le nom d'une classe

  10. #10
    Membre confirmé
    Inscrit en
    Mars 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 105
    Par défaut
    Bonjour nico

    Le code se situe dans Excel donc je suis obligé de spécifier le chemin.
    Effectivement je compte utiliser cette requete la pour filtrer mes données, la partie requete SQL n'est pas vraiment un souci.

    Mon questionnement se situe plus sur comment faire pour récupérer la valeur d'une case pour ensuite la passer dans ma requete.

    Je vais donner un exemple pour mieux expliquer mes propos.

    L'utilisateur doit spécifier une classe dans la case A1.
    Ensuite je récupère la valeur de A1 et je l'affecte a une variable classeRecup.
    Puis j'applique ma variable classeRecup dans ma requete par un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL = "Select * From Eleve WHERE classe='" & classRecup "'"
    J'espere avoir été assez clair

  11. #11
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 127
    Par défaut
    Je me doutais que c'était dans excel car tu parles de "macro" et ce mot a un autre sens dans access

    C'est clair mais finalement qu'est-ce que tu ne sais pas faire ???

    Avec un peu de chance tu peux même tenter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sSQL = "Select * From Eleve WHERE classe='" & range("a1") & "'"

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

Discussions similaires

  1. [Toutes versions] Affichage résultat requête Select depuis code VB
    Par gronimo21000 dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/09/2011, 15h26
  2. [MySQL] optimisation affichage du résultat d'un select
    Par guiguimouk dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 30/04/2008, 10h26
  3. Formater résultat d'un select.
    Par wilaya dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/04/2005, 15h38
  4. [Sybase] résultat d'un select dans une variable
    Par stoz dans le forum Sybase
    Réponses: 2
    Dernier message: 14/09/2004, 14h28
  5. Insérer le résultat d'un SELECT
    Par zoubidaman dans le forum SQL
    Réponses: 3
    Dernier message: 16/08/2004, 16h49

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