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 :

Envoyer table Access vers Excel [AC-2007]


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 101
    Points : 58
    Points
    58
    Par défaut Envoyer table Access vers Excel
    Bonsoir à tous,

    Encore une fois, je vous sollicile...

    J'ai un fichier Excel avec 2 lignes d'en-têtes (format imposé par le client) et je dois intégrer en automatique les données contenues dans une table Access.

    S'il n'y avait pas ces 2 lignes d'en-tête, ce serait très simple, j'aurais juste à exporter mais là, je dois "coller" à partir de la ligne 3 tout le contenu de ma table 'Export' SANS le nom des champs et enregistrer le classeur sous un nom spécifique.

    J'aurais aimé vous mettre un modèle mais la taille de base Access m'en empêche donc j'espère avoir été suffisamment clair.

    Merci pour votre temps et bonne soirée,

    Farid

  2. #2
    Rédacteur/Modérateur

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

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

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

    tu as deux lignes d'en tete, mais ces deux lignes contiennent-elles les libelle des champs ?

    Tes donnees seront inserees dans des tables deja existantes ?

    Solution possible :
    - VBA qui supprime les 2 lignes et enregistre sous un auter nom temporaire
    - VBA qui importe le classeur temporaire
    - VBA qui supprime le classeur temporaire


    Ces etapes te conviendraient-elles ?

    Penses tu etre en mesure de realiser les lignes de code correspondantes ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 101
    Points : 58
    Points
    58
    Par défaut
    Salut Jean-Philippe,

    Merci de te pencher sur mon souci.

    En fait, j'insère mes données dans une table 'intermédiaire' qui contient tous les champs que je dois retrouver sur le document Excel et dans le même ordre.
    Le souci de ces 2 lignes d'en-têtes c'est que certaines cellules sont fusionnées.

    Pour schématiser, il faudrait que j'arrive à faire :
    A3 = Champ 1
    B3 = Champ 2
    C3 = Champ 3
    ...
    AN3 = Champ 40

    Ensuite enregistrer le classeur avec un nom XXX.xlsx pour conserver le modèle avec les en-têtes toujours vide.

    Peu importe la méthode utilisée, seul le résultat compte

    Pour compléter ma réponser, je bricolle un peu en VBA mais sans plus donc je ne sais pas du tout comment m'y prendre.

    Encore merci pour ton temps,

    Farid

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    Arg,

    en fait c'est le chemin inverse : Access vers Excel

    Alors c'est tout con, on peut passer par la methode copyfromrecordset, exemple


    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
    Dim RS as ADODB.Recordset
    dim StrSQL as String
    'je vais partir sur une nouvelle instance d'Excel + nouveau classeur, toi tu pourras passer par un Workbooks.Open()
    dim xlApp as Excel.Application
    Dim xlwbk as Workbook
     
    strSQL = "SELECT * FROM TaTable"
     
    RS.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
     
    Set xlApp = New Excel.Application
    xlapp.visible = true
    set xlwbk = xlapp.workbooks.add
    xlwbk.range("A3").Copyfromrecordset RS
    RS.Close
    http://mhubiche.developpez.com/vba/o...cel/recordset/
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 101
    Points : 58
    Points
    58
    Par défaut
    Merci JP !

    En testant, j'ai un message d'erreur à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    RS.Open StrSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
    "Variable objet ou variable de bloc With non définie"

    Il y a peut-être des références à cocher ?

    Encore merci,

    Farid

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    En principe tu as besoin de
    Microsoft ActiveX Data Objects 2.x Library
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  7. #7
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 101
    Points : 58
    Points
    58
    Par défaut
    Malheureusement ça ne passe pas même avec la référence.

    Il semble qu'il y ait un souci avec la connexion mais je ne comprends pas.

  8. #8
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    Rassure moi, tu as au moins mis a jour le SQL ?

    Quel est ton code complet du moment ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  9. #9
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 101
    Points : 58
    Points
    58
    Par défaut
    Oui, oui, j'ai bien remplacé avec le nom de ma table

    Voici mon code :
    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
    Function ExportXLS()
     
     
    Dim RS As ADODB.Recordset
    Dim StrSQL As String
    'je vais partir sur une nouvelle instance d'Excel + nouveau classeur, toi tu pourras passer par un Workbooks.Open()
    Dim xlApp As Excel.Application
    Dim xlwbk As Workbook
     
    StrSQL = "SELECT * FROM Export"
     
    RS.Open StrSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic
     
    Set xlApp = New Excel.Application
    xlApp.Visible = True
    Set xlwbk = xlApp.Workbooks.Add
    xlwbk.Range("A3").CopyFromRecordset RS
    RS.Close
     
    End Function
    A part le nom de la table, je n'ai rien changé, je voulais tester avant d'adapter

  10. #10
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 595
    Points : 34 271
    Points
    34 271
    Par défaut
    Je pense que j'ai zappe le New

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim RS As New ADODB.Recordset
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Je pense que j'ai zappe le New

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim RS As New ADODB.Recordset

    bonjour,
    avec Excel, ça marche également comme ça!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim RS As object
    StrSQL = "SELECT * FROM Export"
    set RS =CurrentDb.OpenRecordset(StrSQL )
    'etc...
    xlwbk.Range("A3").CopyFromRecordset RS

  12. #12
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 101
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Je pense que j'ai zappe le New

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim RS As New ADODB.Recordset
    Effectivement, ça marche beaucoup mieux mais je n'arrive pas jusqu'au bout. Ca bloque à la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlwbk.Range("A3").CopyFromRecordset RS
    Le message est le suivant : Propriété ou méthode non gérée par cet objet.

    L'ouverture d'un nouveau classeur se fait correctement mais les enregistrements ne sont pas collés.

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 101
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    bonjour,
    avec Excel, ça marche également comme ça!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim RS As object
    StrSQL = "SELECT * FROM Export"
    set RS =CurrentDb.OpenRecordset(StrSQL )
    'etc...
    xlwbk.Range("A3").CopyFromRecordset RS
    Bonjour,

    Merci pour cette solution via Excel.
    Comme j'ai plusieurs export à générer, je pense que la méthode en partant d'Access convient répond davantage à ma problématique

    Un grand MERCI en tout cas

    Farid

  14. #14
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlwbk.sheets(1).range("A3").Copyfromrecordset RS

  15. #15
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 101
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlwbk.sheets(1).range("A3").Copyfromrecordset RS
    Génial, ça fonctionne impec' !!!!!!!!

    Bravo et merci à vous deux !

    Quelques lignes de codes pour régler un gros mal de tête

  16. #16
    Invité
    Invité(e)
    Par défaut
    un utilitaire ASPÉGIC 2016 (télécharger.com)
    Dernière modification par Invité ; 23/11/2016 à 17h08.

  17. #17
    Membre du Club
    Homme Profil pro
    Inscrit en
    Février 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 101
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par dysorthographie Voir le message
    un utilitaire ASPÉGIC 2016 (télécharger.com)
    Doliprane 2014 bien qu'ancien marche bien aussi

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

Discussions similaires

  1. export table access vers excel qui stoppe au niveau d'une table
    Par Dermochelys dans le forum VBA Access
    Réponses: 7
    Dernier message: 10/11/2009, 17h01
  2. Exporter une table Access vers Excel dans le dossier courant
    Par piflechien73 dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/11/2009, 17h17
  3. Export journalier Table Access vers Excel
    Par SylvainJ dans le forum Access
    Réponses: 1
    Dernier message: 04/08/2006, 15h00
  4. Problème pour exporter une table Access vers Excel
    Par PAULOM dans le forum Access
    Réponses: 22
    Dernier message: 02/05/2006, 13h42
  5. Envoyer les colones d'une table access vers excel
    Par mapoupou dans le forum Access
    Réponses: 5
    Dernier message: 05/11/2005, 18h42

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