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 :

Exporter des données d'une requete vers Excel [AC-2007]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 54
    Points : 39
    Points
    39
    Par défaut Exporter des données d'une requete vers Excel
    Bonjour,

    Je me trouve devant un problème avec ma base, car comme je viens de commencer le vba je galère un peu.

    J'ai fais une base qui gère la création d'évènements.
    En fonction de la ville sélectionnée, une liste de tous les évènements qui auront lieu dans cette ville s'affiche, et quand on clique dessus on arrive sur le détail de l'événement en question.

    Je dois faire en sorte que chaque événement de la liste puisse être extrait avec toutes les données vers un fichier Excel.

    Je pensais faire une requête pour récupérer les infos dont j'ai besoin, mais voila je ne sais pas pas comment exporter le résultat vers un fichier Excel.

    De plus je voudrais formater un document Excel, avec une mise en page spéciale et exporter les données dedans (pouvoir mettre les infos la ou je le veux.

    J'ai fais plusieurs recherche sur le forum, lu le Tuto de Cafeine, mais je ne trouve pas exactement ce que je cherche.


    Je demande beaucoup je sais, mais si vous pouviez déjà me donner des indices, je pourrais je pense trouver par la suite.


    Merci

    Binette

  2. #2
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    324
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 324
    Points : 470
    Points
    470
    Par défaut


    Tu en demande beaucoup! Je pense qu'il faut que tu passes par de l'automation (voir le tuto de Cafeine). Mais cela demande de bonnes connaissances en VB pour y arriver. Le plus simple pour commencer est de faire un simple export de ta requête en Excel. Dans le fichier Excel créé, tu lance l'enregistrement d'une macro, et tu formate ton classeur Excel selon tes désirs (couleurs, bordures, marges,etc...). Quand tu as fini, tu arrête l'enregistrement de la macro et tu auras le code VB (enregistré en tant que Macro dans la fenêtre d'explorateur de l'éditeur Visual Basic) te permettant de façonner ton classeur Excel. Ce code sera alors à transposer en Access, et en utilisant l'automation.
    Après si tu coince toujours, et que tu veuille un exemple concret à utiliser comme base, il va falloir donner plus d'éléments: nom de la requête, nom du fichier Excel, quelques exemples de formatage comme les couleurs présentes, les bordures, etc...

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 54
    Points : 39
    Points
    39
    Par défaut
    Bon, après moult recherche et lecture de FAQ/Tuto et autre, j'ai trouvé dans un premier temps le code pour faire la requete et l'extraire dans un fichier Excel.
    Il me reste plus qu'a trouver comment faire la mise en page automatiquement des données extraites.

    je vous copie le code, ca pourra toujours servir à d'autres :

    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
    Dim Db As DAO.Database
        Dim QryModele As DAO.QueryDef
        Dim strSQLModele As String
        Dim strNomQueryModele As String
        Dim strNomQuery As String
     
        strNomQueryModele = "qry_export"
        strNomQuery = "qry_export_modele"
     
        Set Db = CurrentDb
        Set QryModele = Db.QueryDefs(strNomQueryModele)
        strSQLModele = QryModele.SQL
     
        '   Effectue le remplacement du critere par la valeur
        strSQLModele = Replace(strSQLModele, "[valeur]", (valeur a changer))
     
     
        '   Si la requête existe déjà alors
        If TesteExistenceRequete(strNomQuery) Then
        '   alors modifier le code de la requête
            Db.QueryDefs(strNomQuery).SQL = strSQLModele
        '   Sinon
        Else
        '   Créer la nouvelle requête
            Db.CreateQueryDef strNomQuery, strSQLModele
        End If
     
        DoCmd.OutputTo acOutputQuery, "ma requete", acFormatXLS, "chemin du fichier"
    avec la fonction TesteExistenceRequete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Function TesteExistenceRequete(strNomRequete As String) As Boolean
     
        On Error GoTo err
        Dim Db As DAO.Database
        Dim QryTest As DAO.QueryDef
        'initialise un objet représentant la base de données
        Set Db = CurrentDb
        'tente d'accéder à la requête
        Set QryTest = Db.QueryDefs(strNomRequete)
        TesteExistenceRequete = True
     
    err:
     
    End Function
    Je ne sais pas si c'est le plus simple / correct à faire mais c'est la seule solution que j'ai comprise et réussi à appliquer :S


    Je crois que je me complique la vie, ne faudrait il pas mieux que je les copie vers un fichier Excel déjà existant avec 2 onglet, un avec les données exportées, et un autre qui contient la mise en forme et qui va pointer vers les données exportées?

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 54
    Points : 39
    Points
    39
    Par défaut
    C'est bon cela fonctionne,

    j'ai rajouté
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim appExcel As Excel.Application 'Application Excel
        Dim wbExcel As Excel.Workbook 'Classeur Excel
        Dim wsExcel As Excel.Worksheet 'Feuille Excel
        '   Ouverture de l'application
        Set appExcel = CreateObject("Excel.Application")
     
        '   Ouverture d'un fichier Excel
        appExcel.Visible = True
        Set wbExcel = appExcel.Workbooks.Open("chemin du fichier")
    Je peux donc dans un onglet avoir les données exportés et dans l'autre la mise en page qui va bien .

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 05/05/2010, 18h48
  2. [AC-2003] Exporter des données d'une requete vers une table
    Par FCL31 dans le forum Modélisation
    Réponses: 3
    Dernier message: 23/04/2009, 09h41
  3. Transferer des données d'une requete vers une table
    Par Lotfus dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/07/2007, 09h03
  4. Réponses: 4
    Dernier message: 02/04/2007, 13h00
  5. Exporter les données d'une flexgrid vers Excel
    Par ecarbill dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 16/08/2006, 18h06

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