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 résultat d'une requête dans Excel dans une feuille précise [AC-2007]


Sujet :

VBA Access

  1. #1
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut Export résultat d'une requête dans Excel dans une feuille précise
    Bonjour,


    j'ai beau chercher sur le forum, je ne trouve pas de réponse à mon problème, ou les réponses que je trouve ne fonctionne pas J'ai donc besoin de votre aide.

    J'ai une requête, dont je voudrais export le résultat dans un fichier Excel bien précis, et surtout une feuille bien précise.

    Suite à la recherche dans la FAQ, j'ai donc écrit cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Set qd = CurrentDb.CreateQueryDef("DATA_ACTIVITE", OrdreSql)
        'transfert dans le fichier Excel dans l'onglet DATA_ACTIVITE
        DoCmd.TransferSpreadsheet acExport, 8, "DATA_ACTIVITE", FILE_LOCAL, True, ""
        'suppression de la requête temporaire
        DoCmd.DeleteObject acQuery, "DATA_ACTIVITE"
    Où OrdreSQL est un Select tout simple, et FILE_LOCAL est le chemin complet du fichier Excel où je veux copier les données.
    Avec la commande actuelle, quand je la lance, ça me créé un nouvel onglet dans ma feuille Excel, nommé DATA_ACTIVITE1, alors que je voudrais que les données aillent dans DATA_ACTIVITE, qui existe déjà..

    Par recherche sur le forum, j'ai lu qu'on devait préciser la feuille de copie dans le paramètre plage. J'ai alors essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.TransferSpreadsheet acExport, 8, "DATA_ACTIVITE", FILE_LOCAL, True, "DATA_ACTIVITE"
    Malheureusement, le résultat est exactement le même : une nouvelle feuille a été créée

    Comment faire pour copier le résultat dans ma feuille DATA_ACTIVITE ? Est-ce possible ?
    J'aurai une solution de contournement, qui serai de copier les données dans ma feuille puis de supprimer l'autre.

    Il faut savoir que je dois copier les données dans la feuille, car des TCD pointe sur une zone de nom, qui est créé sur cette feuille..

    Merci pour vos lumières

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 656
    Points : 34 370
    Points
    34 370
    Par défaut
    Salut,

    la feuille dans laquelle peuvent être importées/exportées les données/requêtes s'écrit après ton paramètre True/False de la ligne d'en-tête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acExport, 8, "DATA_ACTIVITE", FILE_LOCAL, True, "MaFeuille1"

  3. #3
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Justement, c'est ce que j'ai essayé (2e code que j'ai mis) mais ça me fait le même symptome que le premier ça me crée une nouvelle feuille, qu'il appelle DATA_ACTIVITE1...

    Serait-ce parce que le nom de la feuille est le même que celui de ma requête ?

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    J'ai essayé en changeant le nom de mon onglet dans le fichier Excel, et du coup dans ma requête, aussi sans succès

  5. #5
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bonjour Illight,

    Je suis en train de plancher sur des problématiques d'import/export de feuille Excel.
    Il me semble que lorsque je consulte les spécifications d'import/export, le nom de ma feuille est systématiquement suffixé d'un '$'

    Essaye de rajouter ce caractère au nom de ta feuille

  6. #6
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    A quel niveau ? dans ma requête pour le transfert ? ou dans le fichier Excel directement ?

    Je dois appeler ma feuille "$DATA_ACTIVITE" ??

  7. #7
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    A quel niveau ? dans ma requête pour le transfert ? ou dans le fichier Excel directement ?
    dans la commande docmd.transfertspreadsheet
    Je dois appeler ma feuille "$DATA_ACTIVITE" ??
    Non, plutôt "DATA_ACTIVITE$"

  8. #8
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    J'ai une mauvaise nouvelle : ça marche toujours pas

    j'ai essayé de le mettre partout, juste pour l'export, juste pour la feuille, pour les 2, rien n'y fait : ça veut pas

    De plus, quand je met le "$", ça lui plait encore moins, car ça me ressort carrément des erreurs

  9. #9
    Membre éclairé Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 598
    Points : 879
    Points
    879
    Par défaut
    Bon, j'ai regardé plus attentivement d'autres post (regarde celui-ci), ainsi que ce tuto.
    Malheureusement, le tensferspreadsheet est très limité en fonction export

    Voici ce que ditCafeine dans son tuto
    Limites :

    . Impossible de préciser un nom d'onglet, ou une plage de cellules.
    . Aucun formatage n'est possible
    . Structure tabulaire, sauf dans l'export d'un état : pas de possiblité de découper des zones
    J'ai bien peur que tu sois obligé de passer par l'automation

  10. #10
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Oui je l'avais vu dans le tuto à vrai dire mais vu que j'avais vu ici ou là que c'était possible, je me suis dit peut-être que...

    Merci en tout cas pour des recherches en tout cas, je vais mettre le topic en résolu, même sic 'est pas vraiment le cas

  11. #11
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 342
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 342
    Points : 4 299
    Points
    4 299
    Par défaut
    Re,

    C'est de nouveau moi

    J'ai une information de la plus haute importance : un transfert d'une requête vers un onglet est possible

    Le souci principal ne vient au final pas de la commande TransferSpreadsheet, mais plutôt de la manière que tu lance ta requête !

    En effet, Dans ma commande (pour rappel), je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Set qd = CurrentDb.CreateQueryDef("DATA_ACTIVITE", OrdreSql)
        'transfert dans le fichier Excel dans l'onglet DATA_ACTIVITE
        DoCmd.TransferSpreadsheet acExport, 8, "DATA_ACTIVITE", FILE_LOCAL, True, ""
        'suppression de la requête temporaire
        DoCmd.DeleteObject acQuery, "DATA_ACTIVITE"
    Par contre, si je la lance de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set qd = CurrentDb.QueryDefs("DATA_ACTIVITE").SQL = OrdreSQL
        'transfert dans le fichier Excel dans l'onglet DATA_ACTIVITE
        DoCmd.TransferSpreadsheet acExport, 8, "DATA_ACTIVITE", FILE_LOCAL, True, ""
        'suppression de la requête temporaire
    En ayant au préalable créé une requête DATA_ACTIVITE, la copie dans l'onglet s'appelle DATA_ACTIVITE se fait !

    De même, si ne fait pas de requête avant en VB directement, mais qu'on prend le résultat d'une requête au préalable. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DoCmd.TransferSpreadsheet acExport, 8, "Requete1", FILE_LOCAL, True, "DATA"
    (ma Requete1 est en fait un select tout basique sur différentes tables).

    => Les données ici se collent aussi dans mon onglet DATA, qui est pourtant existant !

    J'ai donc trouvé une solution, qui au final correspond à mon besoin

    Je me suis dit qu'il serait intéressant de vous donner l'information

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 19/12/2011, 17h11
  2. Réponses: 5
    Dernier message: 18/02/2009, 09h52
  3. Réponses: 1
    Dernier message: 13/02/2009, 10h13
  4. passer d'une requêtes SGL directe en une requête normale
    Par jenniferIUP dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 04/02/2009, 08h26
  5. Extraire d'une portion de chaîne dans SELECT d'une requête
    Par Anne1969 dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 16/03/2006, 08h29

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