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 :

Export excel à partir d'une requête


Sujet :

VBA Access

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Export excel à partir d'une requête
    Bonjour,

    J'ai une requête avec 100 lignes , disons 20 lignes par client, j'aimerais créer autant de fichier excel avec les colonnes de ma requête que de client Comme je ne sais pas faire j'ai créé autant de requête que j'exporte que de Client : mais pas top des qu'il y a un nouveau client. Merci pour votre aide ;-)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chargé de projet
    Inscrit en
    Novembre 2015
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chargé de projet
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2015
    Messages : 429
    Points : 1 684
    Points
    1 684
    Par défaut
    Citation Envoyé par re_monde Voir le message
    Bonjour,

    J'ai une requête avec 100 lignes , disons 20 lignes par client, j'aimerais créer autant de fichier excel avec les colonnes de ma requête que de client Comme je ne sais pas faire j'ai créé autant de requête que j'exporte que de Client : mais pas top des qu'il y a un nouveau client. Merci pour votre aide ;-)
    Je propose d'utiliser VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'Comment modifier le code d'une requete
    Dim strSQL As String
    strSQL = "instruction SQL"
    CurrentDB.QueryDefs("Requête à modifier").SQL = strSQL
     
    'Commande d'export dans Excel d'une Requete
    DoCmd.OutputTo acOutputQuery, "Requete1", "MicrosoftExcel5.0/95Workbook(*.xlsm)", "", True, "", , acExportQualityPrint
    Tu n'as plus qu'a faire un tableau de String avec le nom de tes clients et ta requête dans laquelle tu insérera le nom du client dans la clause WHERE.

    Puis mettre tout sa dans une boucle qui parcourra ton tableau et qui exécutera la requête pour chaque nom de clients.
    Pour ne pas passer pour un boulet :
    http://coursz.com/difference-entre-r...-et-gddr4.html

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Bonjour, je n'ai pas tout compris dans la réponse , faire un tableau de string ? et comment mettre ma clause where.
    Merci de nouveau pour ton aide.

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Certe un tableau de string sera le travail mais ce ne sera pas très dynamique.

    Je te propose l'amélioration suivante :

    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
    public sub ExporterExcel
       dim db as dao.database:set db=currentdb
       dim rClient as dao.recordset:set rClinet=db.openRecordset("NomTaTableClient", dbOpenSnapShot) 'Récupère la liste des clients
       dim qModele as dao.querydef: set qModele=db.querydefs("NomTaRequeteDeDonnees") 'Là les données de tous les clients
       dim qExport as dao.querydef: set qModele=db.querydefs("NomTaRequeteExport") 'ici seulement les données du client
     
       do while not rClient.eof
     
            qExoprt.sql="select [" & qModele.name & "].* from [" & qModele.name & "] & where [" & qModele.name & "].[ClefClient]=" & rClient![Clef] 'Crée le SQL pour ce client en particulier
            'Commande d'export dans Excel d'une Requete
            DoCmd.OutputTo acOutputQuery, qExport.name, "MicrosoftExcel5.0/95Workbook(*.xlsm)", "", True, "", , acExportQualityPrint 'Là je m'essaye car d'habitude on utilise DoCmd.TransferSpreadSheet
            rClient.movenext 'Passe au client suivant
       loop
     
       set qModele=nothing
       set qExport=nothing
       db.close:set db=nothing
    end sub
    Note bien qu'il faut 2 requêtes : une qui donne les données pour tous les clients et une qui va servir à sélectionner seulement un client et qui servira au transfert vers Excel.
    L'avantage d'avoir une requête modèle est que le SQL ne sera pas en dur dans le code et qu'il est plus facile, selon moi, de mettre au point et de changer une requête dans l'éditeur de requête que dans le VBA.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Formateur en informatique
    Inscrit en
    Janvier 2017
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 60
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Merci pour le code, j'ai essayé, mais voilà je suis une débutante xxl dans le vba.
    Je te joins un exemple zippé de ma base.
    Je n'ai pas trop compris à quoi servait la 2ème requête et on ne lui dit pas non plus où enregistrer les fichiers excel.

    Si tu peux m'aider, je prends
    Merci bcp
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Export CSV à partir d'une requête SQL(VB.Net)
    Par bestcasaoui dans le forum VB.NET
    Réponses: 3
    Dernier message: 11/01/2011, 16h51
  2. Réponses: 5
    Dernier message: 05/11/2009, 12h17
  3. Export CSV à partir d'une requête SQL
    Par neimad31 dans le forum VBA Access
    Réponses: 5
    Dernier message: 26/08/2009, 13h10
  4. insertion dans une table excel à partir d'une requête access ?
    Par cameleon1881 dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/04/2009, 17h57
  5. Graphique sur Excel à partir d'une requête
    Par celiaaa dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/06/2007, 00h52

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