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 depuis Access et exécution d'une macro [AC-2000]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Par défaut Export Excel depuis Access et exécution d'une macro
    Bonjour.

    Je cherche à coder quelque chose dans Access 2000 qui m'a l'air assez compliqué, et je me demande déjà si c'est possible.

    Je dois écrire un programme qui exporte une table de données Access vers un fichier Excel, puis qui exécute automatiquement une macro sur le fichier Excel tout en le créant. En fait, lors de mon export, Excel ajoute automatiquement des apostrophes devant toutes les données qui sont en format texte, et je souhaite les enlever à l'aide d'un bout de code qui change le format des cellules concernées (la première colonne) en standard plutôt qu'en texte.

    J'ai le code pour changer le format (récupéré à partir d'une macro, donc. J'ai utilisé le menu Convertir dans Excel), j'ai le code pour l'export (j'utilise DoCmd.TransferSpreadsheet), et je cherche donc à ce que ces apostrophes soient supprimées directement depuis Access, en même temps que la création du fichier d'export Excel.
    Est-ce que je lui en demande trop ?

    Merci d'avance

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

    Dans un premier temps, il faudrait que tu expliques comment tu fais l'export d'Access vers Excel.

    De plus, as-tu lu la FAQ Access en utilisant le moteur de recherche avec le mot Excel ?

    As-tu également lu ce tuto : http://cafeine.developpez.com/access/tutoriel/excel/

    Philippe

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Par défaut
    Bonjour,

    Voici mon code pour exporter une table de données vers Excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, NomTableRequête, NomFichierExport, True, NomOnglet
    NomTableRequête, NomFichierExport et NomOnglet sont des variables. Ce bout de code est dans une fonction que je n'ai pas écrite, en fait.

    Je viens de regarder le tuto et la FAQ Access, et j'avais aussi pas mal cherché sur Google mais je ne trouve rien de concluant.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Cette fonction de transfert n'est pas l'idéal, le mieux est de piloter Excel à partir d'Access.

    C'est cette partie là qu'il faut utiliser : http://cafeine.developpez.com/access/tutoriel/excel/#LV

    Tu peux tout gérer, car tu pilotes Excel en utilisant le VBA Excel.

    Philippe

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Par défaut
    Bonjour.

    Intéressant, ouais. Je suppose que je devrais rajouter le code de ma macro qui vire les apostrophes juste après la boucle ?

    Pour l'instant, j'ai copié le code tel quel (en changeant le nom de la table à exporter et le nom du fichier Excel à enregistrer), mais j'ai un bug d'incompatibilité de type à la ligne "set rec = CurrentDb.OpenRecordest..."

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Mai 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 5
    Par défaut
    Rebonjour

    J'ai fait autrement, finalement. Je me suis inspiré d'un bout de code trouvé je sais plus où et j'ai crée une fonction à part pour enlever les apostrophes, du coup je garde ma fonction d'export précédente, même si elle est pas idéale.
    J'ai oublié de préciser que les apostrophes à supprimer ne concernent qu'une seule colonne, mais sur deux feuilles différentes.

    Voici ma fonction :
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Function ApostropheKiller(NomFichierExport As String)
     
    Dim oAppExcel As Excel.Application
    Dim oClasseur As Excel.Workbook
    Dim oFeuille As Excel.Worksheet
     
        'Ouvre le fichier excel
        Set oAppExcel = CreateObject("Excel.Application")
        Set oClasseur = oAppExcel.Workbooks.Open(NomFichierExport)
     
        'Sélectionne la première feuille
        Set oFeuille = oClasseur.Worksheets(1)
     
        'Macro pour virer les apostrophes
        oFeuille.Activate
        oFeuille.Columns("A:A").Select
        Selection.TextToColumns Destination:=oFeuille.Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(1, 1), TrailingMinusNumbers:=True
        oFeuille.Range("A1").Select
     
        'Sélectionne la deuxième feuille
        Set oFeuille = oClasseur.Worksheets(2)
     
        oFeuille.Activate
        oFeuille.Columns("A:A").Select
        Selection.TextToColumns Destination:=oFeuille.Range("A1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(1, 1), TrailingMinusNumbers:=True
        oFeuille.Range("A1").Select
     
        'Ferme Excel
        oClasseur.Save
        oClasseur.Close
        oAppExcel.Quit
        Set oAppExcel = Nothing
        Set oClasseur = Nothing
        Set oFeuille = Nothing
        MsgBox "fini"
     
    End Function
    J'ai pas mal tâtonné et j'ai eu pas mal de messages d'erreur avant d'arriver à ce résultat. Dans l'état actuel des choses, quand j'exécute l'Automation Excel une première fois, tout marche parfaitement. Mais la deuxième fois, j'obtiens une erreur 91 ("Variable objet ou variable de bloc With non définie") au niveau de la ligne "Selection.TextToColumns...".
    Auparavant, avant d'essayer quelques petites modifications, j'avais une erreur 1004 à cet endroit ("La méthode Sheets de l'objet Global a échoué").

    Je me doute bien qu'il y a un problème au niveau des feuilles du fichier Excel, mais je comprends presque pas ce que je fais alors...

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

Discussions similaires

  1. [AC-2003] Exécuter une macro Excel depuis Access
    Par tarnx dans le forum VBA Access
    Réponses: 2
    Dernier message: 17/12/2009, 13h16
  2. Plantage général d'excel lors de l'exécution d'une macro
    Par Esmax666 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/10/2009, 10h31
  3. Lancer une macro Excel depuis Access
    Par pascal913 dans le forum Access
    Réponses: 12
    Dernier message: 31/07/2006, 15h31
  4. Verifier l'existence d'une cellule de excel depuis access
    Par snooopy007 dans le forum Access
    Réponses: 2
    Dernier message: 18/07/2006, 17h25
  5. Lancer une macro Excel depuis Access
    Par marcobosio dans le forum Access
    Réponses: 6
    Dernier message: 05/06/2006, 20h51

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