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 :

Import d'un fichier CSV dans access par VB


Sujet :

VBA Access

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Import d'un fichier CSV dans access par VB
    Bonjour,

    J'ai un problème d'importation à résoudre...
    Toutes mes données sont sur Excel, Je dois réaliser à partir d'access une importation de ces données pour créer une nouvelle table, qui contiendra alors tous les en-têtes. J'aimerais trouver un programme sur visual basic qui permettrai de rendre cette importation automatique sachant que mes données sur excel peuvent etre modifiéé a tout moment (c'est pour ça que je peux pas crée la table en précisant les champs auparavant, il faut que le programme les reconnaisse). J'ai vu qu'on pouvait directement chercher les données dans une feuille d'Excel mais aussi qu'on pouvait importer le fichier csv correspondant. Quel est le plus facile? et comment je pourrais faire?
    Quelqu'un peut m'aider la dedans s'il vous plait?

    J'ai essayé ce 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    Private Sub ImportCSV(sFileCSV As String, sTable As String)
    Dim lFileCSV As Long
    Dim sLine As String
    Dim rsTable As Recordsets
    Dim sField As String
    Dim n As Integer
    Dim m As Long
    lFileCSV = FreeFile
    Open sFileCSV For Input As #lFileCSV
    Set rsTable = CurrenDB.OpenRecordset(sTable, dbOpenTable)
    m = 0
    Do
    Line Input #lFileCSV, sLine
    rsTable.AddNew
    rsTable.Refresh
    For n = 1 To Len(sLine)
    If Mid(sLine, n, 1) <> ";" Then
    sField = sField & Mid(sLine, n, 1)
    Else
    rsTable(m) = sField
    sField = ""
    m = m + 1
    End If
    If n = Len(sLine) Then
    rsTable(m) = sField
    sField = ""
    m = 0
    End If
    Next n
    rsTable.Update
    Loop Until EOF(lFileCSV)
     
    Close #lFileCSV
    rsTable.Close
    End Sub

    mais il y a beaucoup de problème dedans apparemment... il bloque avec AddNew par exemple.

    sinon j'ai aussi essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel3, "Etudiant_CSV", Chemin_Fichier, True, Feuille1

    mais je sais pas quel type de fichier je dois mettre : acSpreadsheetTypeExcel3
    ou un autre?
    parce que ça marche pas...



    Si vous avez besoin de plus de renseignement, demandez-moi.
    Merci d'avance

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    finalement j'ai essayé cette commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel5, "Etudiant_CSV", Chemin_Fichier, True, Feuille1

    Mais il faut que la table soit déjà crée auparavant, moi je veux qu'elle se crée directement a partir du fichier.

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

    Au vu de la lecture de ton post, je te conseille de lier ton fichier Excel pour que toutes les modifications de celui-ci se répercutent dans ta base.

    Pour cela

    • Clique droit sur la fenêtre Table
    • Sélectionnes Lier les Tables
    • Dans la fenêtre de sélection, sélectionne le type de fichier (xls)
    • Choisi ton fichier, et suit les indications des différentes fenêtres.


    Starec

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Finalement j'ai réussi avec cette ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel5, "nomtable", Chemin_Fichier, True, nomfeuille

    ça marche bien est aussi sur Access 2003 car moi j'ai Access 2007 à la base, et la compatibilité n'aider pas souvent au bon fonctionnement.
    Par contre si j'exécute 2 fois, la table n'est pas mis a jour, elle contiendra 2 fois toutes les données...
    Si vous connaissez un moyen de rajouter une commande pour la mettre a jour s'il vous plait, sinon tant pis
    Merci quand même pour l'idée de lié la feuille excel, mais il faut vraiment que ce soir fait par visual basic... (contrainte du métier je suppose)
    mais je garde l'idée au cas où il y aurait tout qui tombe à l'eau.

    Je mets quand meme le sujet en résolu, parce que j'ai obtenu ce que je voulais.
    a bientot

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

Discussions similaires

  1. Import Fichier csv dans access
    Par Laure2811 dans le forum VBA Access
    Réponses: 4
    Dernier message: 25/04/2013, 00h22
  2. Problème d'importation fichier CSV dans ACCESS
    Par Lorenzogazier dans le forum Access
    Réponses: 3
    Dernier message: 28/03/2009, 10h28
  3. import de plusieurs fichiers XML dans Access 2003
    Par frdek dans le forum Access
    Réponses: 7
    Dernier message: 09/08/2008, 19h39
  4. Import fichier csv dans access (séparateur décimal = virgule)
    Par Averroes dans le forum Modélisation
    Réponses: 16
    Dernier message: 16/09/2007, 11h25
  5. Réponses: 7
    Dernier message: 23/11/2005, 18h20

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