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

Macros et VBA Excel Discussion :

Exporter une feuille complète dans Access


Sujet :

Macros et VBA Excel

  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 Exporter une feuille complète dans Access
    Bonjour,

    je sais que nombre de sujets ont déjà été créés par rapport à ça, mais ça fait 2 jours que je fouille ici et la, sans trouver vraiment de solution à mon problème.

    J'ai un fichier Excel, ou plutôt une feuille Excel, que je voudrais mettre sous Access, lancer une requête dessus (la table et la requête est déjà créée), et exporter le résultat de cette requête dans Excel, dans une feuille nommée "résultat".

    Au départ, je suis parti sur le process de silkyroad (ici), où pour ma part j'ai écrit ça :

    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
    Sub DoCmdRunSQL(ByVal sql As String, ByVal rDest As Range)
     
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        MsgBox Len(ActiveWorkbook.FullName)
        Set db = DAO.OpenDatabase(ActiveWorkbook.FullName, False, False, "Excel 8.0;HDR=YES;")
        Set rs = db.OpenRecordset(sql, dbOpenSnapshot)
        rDest.CopyFromRecordset rs
        Set rs = Nothing
        Set db = Nothing
     
    End Sub
     
    Sub testSQL()
    DoCmdRunSQL "SELECT * FROM [ExtractWithGoodTitle$A1:AF3917] WHERE SoldtoParty = 12236", Sheets("Resultat").Range("A2")
    End Sub
    Déja, ça ne marche que moyennement (comme j'ai mis dans le post de Silky), car j'ai un problème a priori de bases de données par défaut et ça m'ouvre Business Objects.
    De plus, j'ai essayer sur un autre poste (ordi plutot), et ça marche carrément pas, a priori il y aurait un problème d'activeX du coup je ne pourrait pas l'envoyer à quelqu'un pour qu'il fasse tourner le programme, vu que ça marche pas.


    Je me suis donc rabattu à me dire qu'il faudrait que je réussisse à piloter Access depuis Excel.

    Donc il faudrait que je puisse mettre mes données dans une table déjà connue, puis que j'exporte le résultat de ma requête dans ma feuille "Résultat".

    J'ai regardé ici et la, sans vraiment trouver ce qui j'avais besoin.

    Sur le deuxième lien, vous parlez d'ajouter un enregistrement dans une table, or moi ce n'est pas ce que je voudrais. Je voudrais mettre toute ma feuille dans ma table, et non ajouter un enregistrement (car les enregistrement déja existants dans ma table doivent être supprimés (comment faire ? un DELETE ?). De plus, dans mon fichier, j'ai 27 colonnes, et je me vois mal faire un Insert INTO avec les 27 colonnes (enfin en tout cas je pense qu'il y a meilleure solution, mais je ne la trouve pas.)

    J'ai vu dans le sliens qu'on pouvais lancer des macros a partir d'excel dans Access. Est-ce ça qu'il faut que j'utilise pour faire ce qu eje veux faire, en fait ?

    Je pense que pour exporter la requête, il faut utiliser ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97,"Requete_Temporaire", "c:\fichier.xls"
    Par contre, ça l'importe dans un fichier Excel : est-ce qu'il est possible de l'exporter dans une feuille directement du classeur ouvert ? ce code il faut le mettre dans un module Access ou Excel ?


    Désolé pour la longueur du post, mais j'ai vraiment besoin de vos lanternes pour avancer, car je suis un peu perdu avec tout ça.

    Je vous remercie par avance de vos éclaircissement qui me permettront surement de faire un grand pas en avant dans mon projet

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Il semble me souvenir que dans Access tu peux importer une table issue d'un feuille de calculs Excel. Je m'orienterais plutôt vers cette solution... Mais il y a longtemps que je n'ai plus touché à Access, alors...
    Bon courage.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Pour la méthode DoCmd.TransfertSpreadsheet.

    Si tu veux importer une feuille dans une table.

    Remplace acExport par acImport et la requête par le nom de la table.

    Starec

  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
    Merci Je vais essayer ça tout a l'heure, je vous tiens au courant

    J'en conclue qu'il faut que je créé un module dans Access et lancer une macro de la bas, mais a partir d'Excel c'est ça ?

  5. #5
    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
    Par contre j'ai pas eu de réponse pour cette question :

    Par contre, ça l'importe dans un fichier Excel : est-ce qu'il est possible de l'exporter dans une feuille directement du classeur ouvert ?
    Pour le moment, j'ai écrit ça, dans un module Access (que je lancerai a partir d'excel) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ImportFeuilleExcel()
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "ExtractWithGoodTitle", "C:\Classeur_TestsMacros.xls", True
    End Sub
    La je pense, qu'il faudrait que je me dirige vers le forum Access je pense

  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
    J'ai trouvé c'est bon


    Donc j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub RunAccess()
    Dim acApp As New Access.Application
    'demarrer access
    Set acApp = New Access.Application
    'ouvrir la base
    acApp.OpenCurrentDatabase ("C:\bd2.mdb")
    'exécuter la macro
    acApp.Run "ImportFeuilleExcel"
    'quitter access
    acApp.Quit
    Set acApp = Nothing
    End Sub
    dans le module Excel, et dans un module Access, j'ai écrit ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ImportFeuilleExcel()
    'Empêche les demande de confirmation de s'afficher
    DoCmd.SetWarnings False
    'Efface le contenu de la table
    DoCmd.RunSQL "DELETE * FROM ExtractWithGoodTitle;"
    'importe la table excel
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "ExtractWithGoodTitle", "C:\Classeur_TestsMacros.xls", True, "ExtractWithGoodTitle!"
    Merci a ceux qui sont passés par ici

    J'ai encore un chti problème d'exportation, mais mon problème premier et du nom du sujet est résolu merci a vous

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 09/10/2016, 18h53
  2. [AC-2013] Importer une feuille Excel dans Access
    Par rag83 dans le forum Modélisation
    Réponses: 11
    Dernier message: 18/01/2015, 12h38
  3. Réponses: 10
    Dernier message: 28/10/2008, 15h41
  4. Intégrer une feuille Excel dans mon formulaire Access
    Par supertoms dans le forum VBA Access
    Réponses: 0
    Dernier message: 13/05/2008, 21h37
  5. Réponses: 9
    Dernier message: 30/05/2006, 17h55

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