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 :

VBA excel : piloter BdD access et y importer fichier CSV


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Points : 5
    Points
    5
    Par défaut VBA excel : piloter BdD access et y importer fichier CSV
    Bonjour !

    Je voudrais pouvoir piloter une base de données Access depuis VBA excel, et importer ainsi des fichiers csv sous forme de table.
    la raison est que ces fichiers csv seront victimes de traitement par la suite, et qu'il serait plus facile d'avoir ces fichiers csv en entrée sous forme de tables access.

    en fait, je voudrais pouvoir faire depuis excel ce qu'on peut faire sous access par les menus; comme ça :

    sous MSAccess :
    file>get external data>import
    'on sélectionne alors le fichier csv à importer; les champs étant délimités par des ";"
    on importe le csv dans une nouvelle table, dont on choisit le nom
    la 1ère ligne du csv contient les identifiants des colonnes, donc idéalement ils apparaissent comme les noms des champs de la nouvelle table.

    je souhaite automatiser ca en VBA sous Excel.

    pour le moment, je suis parti sur ça : (mais ça ne marche pas du tout :-( )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'un getopenfilename pour sélectionner le fichier csv qu'on souhaite traiter:
    NomFichier = Application.GetOpenFileName(filefilter:=("Fichier texte (*.csv),*.csv"), Title:="Ouvrir un fichier")
     
    docmd.transferspreadsheet acImport, acspreadsheettypeexcel9, "maTable", "maBdD", True, "A1:B10"
    si je tapes directement ca dans VBA, ca ne marche pas, j'ai des messages d'erreur au niveau du "docmd". y'a t'il des mots clé à taper ou je sais pas au début du code pour dire qu'on travaille sur la BdD access ? ou faut-il procéder autrement ?

  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
    Pourquoi ne pas importer directement les csv dans Access ?

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour

    Tu peux tester cette procédure qui transfère directement le contenu du fichier CSV vers une nouvelle table Access, à partir d'une macro Excel.


    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
    44
    45
    46
    47
    48
    49
    50
    51
    Sub tranfertCSV_Vers_NouvelleTableAccess()
        'Transfére un fichier CSV vers une nouvelle table Access
        'depuis une macro Excel.
        '
        'Nécessite d'activer la référence
        '"Microsoft ActiveX Data Objects x.x Library
        '
     
        Dim AccessCn As ADODB.Connection
        Dim AccessRst As ADODB.Recordset
        Dim Csv_CN As New ADODB.Connection
        Dim Csv_Rst As New ADODB.Recordset
        Dim DossierCSV As String, NomTable As String
        Dim FichCSV As String, MaBase As String
        Dim nbEnr As Long
     
        'Répertoire du fichier CSV
        DossierCSV = "C:\Documents and Settings\mimi\dossier"
        'Nom du fichier CSV à transfèrer
        FichCSV = "LeFichierCSV.csv"
        'Chemin et nom de la base Access
        MaBase = "C:\Documents and Settings\mimi\dossier\dataBase.mdb"
        'Nom de la nouvelle Table Access
        NomTable = "MaNouvelleTable"
     
     
        'Connection au fichier CSV
        Csv_CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
            DossierCSV & ";Extended Properties='text;FMT=Delimited'"
        'Requète dans le fichier CSV
        Csv_Rst.Open "SELECT * FROM " & FichCSV, Csv_CN, _
            adOpenStatic, adLockOptimistic
     
        'Connection à la base de données Access
        Set AccessCn = New ADODB.Connection
        AccessCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                       "Data Source=" & MaBase
     
     
        Csv_CN.Execute "SELECT * INTO [" & NomTable & "] IN '" & _
            MaBase & "' From [" & FichCSV & "]", nbEnr
     
     
        AccessCn.Close
        Csv_Rst.Close
        Csv_CN.Close
        Set AccessRst = Nothing
        Set AccessCn = Nothing
        Set Csv_Rst = Nothing
        Set Csv_CN = Nothing
    End Sub



    michel

Discussions similaires

  1. [AC-2010] Importation Fichier.csv MS Excel vers Access en vba
    Par Dixies dans le forum IHM
    Réponses: 12
    Dernier message: 24/09/2014, 00h42
  2. Réponses: 1
    Dernier message: 15/11/2007, 13h51
  3. [VBA Excel] Piloter PowerPoint
    Par SilkyRoad dans le forum Contribuez
    Réponses: 2
    Dernier message: 07/03/2007, 05h14
  4. [Excel] - QueryTable dans Excel Piloté par Access
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 23/02/2007, 13h28
  5. Transformer une Bdd Excel en Bdd Access
    Par Golork dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/08/2005, 16h40

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