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 requête filtrée vers Excel


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Points : 10
    Points
    10
    Par défaut Export requête filtrée vers Excel
    Bonjour à tous !

    Je sais que de nombreux posts existes déjà à ce sujet mais je n'ai malheureusement pas trouvé ce qui me convient....

    Voilà mon problème, j'execute un formulaire qui permet de filtrer les informations de ma requête. Et depuis ce formulaire j'aimerais pouvoir Exporter vers Excel le résultat de ma requête filtrée en choisissant uniquement certains colonnes ! Je sais que des méthodes existes telle que le :

    - DoCmd.TransferSpreadsheet : Problème, j'aimerais pouvoir créer le fichier au même moment que j'éxecute le code et pas que le fichier soit pré-creer !

    - Ou à l'aide de recordset : Problème, il faut cocher la case Microsoft Excel........ malheureusement mon code doit pouvoir se lire sur n'importe quel machine sans avoir à cocher cette case....

    Voilà, est-ce possible de faire un espèce de "mixte" des deux solutions ? Ou suis-je bloqué ?

    Merci d'avance pour votre aide !

    Assyris

  2. #2
    Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Mai 2009
    Messages
    51
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2009
    Messages : 51
    Points : 45
    Points
    45
    Par défaut
    Bonjour,

    Je ne suis pas un expert , mais quelque soit la méthode que tu utilise, je pense que pour ouvrir une fichier excel depuis access il faut obligatoirement cocher la référence Excel.

    Qu'entends tu par exporter certaines colonnes? Ces certaines colonne correspondent au résultat de ta requete filtré ou bien à une partie de celle-ci?

    Sinon si ton formulaire filtre à partir de la valeur de certains contrôle (par exemple liste déroulante) tu peux passer par une requete temporaire et utiliser DoCmd.OutputTo qui permet de ne pas indiquer de chemin de destination pour le fichier excel.

    Ex :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub btnExcel_Click()
     
    Dim qd As QueryDef
    Dim SQL As String
     
     
     
    SQL = "SELECT LesChampsQueTuVeuxAfficher FROM TaTable WHERE TonChamp = '" & ListeDéroulante & "';"
     
    Set qd = CurrentDb.CreateQueryDef("Requete_Temporaire", SQL) 'Crée la requete temporaire
        DoCmd.OutputTo acOutputQuery, "Requete_Temporaire", acSpreadsheetTypeExcel9, "NomDuFichier.xls", True 'L'ouvre sous excel
        DoCmd.DeleteObject acQuery, "Requete_Temporaire" 'La supprime
     
    End Sub
    Bien sur tu peux rajouter des conditions en fonctions de tes différents contrôles te servant à filtrer.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2009
    Messages : 19
    Points : 10
    Points
    10
    Par défaut
    Bonjour !

    Merci Soulq pour ta réponse

    Alors enfait j'ai essayé ton code adapté à ma base et effectivement c'est tout à fait ce que je veux ! J'ai juste rajouté quelques petites lignes pour créer automatiquement un fichier Excel avant ton code. En tout cas, ca marche impec !

    J'ai juste une ou deux petites questions,

    - Comment faire pour changer le titre des colonnes sous Excel, par défaut il inscrit le nom du champ de Access. Comment mettre un nom souhaité ?

    - Pour créer un fichier j'utilise le code suivant qui marche bien :

    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
        Dim xlApp As Excel.Application
        Dim xlSheet As Excel.Worksheet
        Dim xlBook As Excel.Workbook
        Dim chemin As String
     
     
        'Initialisations
        Set xlApp = CreateObject("Excel.Application")
        Set xlBook = xlApp.Workbooks.Add
     
        'Ajouter une feuille de calcul
        Set xlSheet = xlBook.Worksheets.Add
        xlSheet.name = "Chgmt_cable"
     
        chemin = CreateObject("Wscript.Shell").SpecialFolders("Desktop")
        xlBook.SaveAs (chemin & "\chgmt_cable" & date & ".xls")
     
        xlApp.Quit
        Set xlSheet = Nothing
        Set xlBook = Nothing
        Set xlApp = Nothing
        Set qd = Nothing
    Je cherche cependant à créer un fichier en demandant à l'utilisateur quel nom il souhaite utiliser. Si possible avec une recherche "explorer" comme sous Windows, avec la possibilité de choisir l'emplacement, etc... Y a-t-il une commande pour avoir cette fenêtre ?

    Merci encore de l'aide !

    Assyris

Discussions similaires

  1. [AC-2003] Export d'une Requête temporaire vers Excel
    Par brankorri dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 20/09/2012, 16h12
  2. [AC-2003] Problème exportation requête access vers tableau excel
    Par demichoux dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/06/2011, 17h13
  3. Réponses: 5
    Dernier message: 05/11/2009, 12h17
  4. Réponses: 1
    Dernier message: 03/06/2009, 16h14
  5. Exporter une requête SQL vers excel
    Par Info_76 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/08/2007, 09h09

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