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 :

Importer un Fichier Csv dans une table Access [AC-2003]


Sujet :

VBA Access

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut Importer un Fichier Csv dans une table Access
    Bonsoir,

    Je voudrais utiliser le code qu’a communiqué Marot_r sur ce post :

    http://www.developpez.net/forums/d74...s/#post4295774

    Lorsque le code passe sur
    While Not EOF(1)

    EOF(1) et à Vrai et va directement à la ligne
    Close #1


    Champs de la table Access 2003:

    ID
    HEURE
    NOMA
    NOMB
    COURT
    NATURE
    DATE

    Sur WordPad les enregistrements de la table importée (Fichier Excel Csv) se présentent de cette façon :

    DATE ; HEURE ; NOM ; NOM ; COURT ; NATURE
    Samedi 05 Décembre 2009
    ;09h 00;DURAND;;N°7;Adhérent

    Nota : ce n’est pas une erreur de ma part le fichier à importer contient deux fois le champ NOM.

    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
    Private Sub Import()
     
    Dim Ligne AS string 
    Dim HEURE As String
    Dim NOM As String
    Dim COURT As String
    Dim NATURE As String
    Dim db As DAO.Database: Set db = CurrentDb
    Dim rs As DAO.Recordset: Set rs = db.OpenRecordset("table1")
     
     
    Open "C:\Documents and Settings\Propriétaire\Mes documents\Bureau\Import\Excel.csv" For Input As #1
     
    Line Input #1, ligne ' pour eviter la premiere ligne
    While Not EOF(1)
        Line Input #1, ligne
     
        DATE = Left(ligne, (len_enreg(ligne)))
        ligne = Right(ligne, (Len(ligne) - (Len(DATE) + 1)))
     
        HEURE = Left(ligne, (len_enreg(ligne)))
        ligne = Right(ligne, (Len(ligne) - (Len(HEURE) + 1)))
     
        NOM = Left(ligne, (len_enreg(ligne)))
        ligne = Right(ligne, (Len(ligne) - (Len(NOM) + 1)))
     
        NOM = Left(ligne, (len_enreg(ligne)))
        ligne = Right(ligne, (Len(ligne) - (Len(NOM) + 1)))
     
        COURT = Left(ligne, (len_enreg(ligne)))
        ligne = Right(ligne, (Len(ligne) - (Len(COURT) + 1)))
     
        NATURE = Left(ligne, (len_enreg(ligne)))
        ligne = Right(ligne, (Len(ligne) - (Len(NATURE) + 1)))
     
        With rs
           .AddNew
            ![DATE] = DATE
            ![HEURE] = HEURE
            ![NOMA] = NOM
            ![NOMB] = NOM
            ![COURT] = COURT
            ![NATURE] = NATURE
           .Update
        End With
    Wend  
     
    Close #1
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Function len_enreg(ByVal a As String) As Integer ' renvoi la taille de l'enregistrement en cours ( jusque ";")
     
    Dim cpt As Integer
    cpt = 1
    While Mid(a, cpt, 1) <> ";"
        cpt = cpt + 1
    Wend
     
    len_enreg = cpt - 1
     
    End Function
    Merci pour votre aide.

    Salutations.

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Lors de la première lecture, tu as quoi dans "ligne" (qui d'ailleurs n'est pas déclaré) ?

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut
    Bonjour Kloun,

    Merci pour ta réponse,

    Un debug.print sur Line Input #1, ligne donne :

    DATE ; HEURE ; NOM ; NOM ; COURT ; NATURE
    Lundi 28 Décembre 2009;09h 00;XXXXXX;;N°7;club
    Lundi 28 Décembre 2009;18h 00;WWWWWW;ZZZZZZ;N°8;adherent
    Lundi 28 Décembre 2009;20h 00;KKKKKK;MMMMMMM;N°8;adherent

    Salutations

  4. #4
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    Donc, lors de la première lecture, tu as récupéré la totalité des données de ton fichier ?

    Edit : avec des dates et des heures pareilles, tu vas t'amuser.

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut
    Re Bonjour,

    Oui c'est bien la totalité de mon fichier que j'ai récupéré, par contre toutes mes valeurs sont en string.

    Mes connaissances ne me permettent pas d'aller plus loin.

    Peux-tu m'aider ?

    Salutations

  6. #6
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 183
    Points : 1 362
    Points
    1 362
    Par défaut
    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
    Private Sub Import()
     
    Dim Ligne AS string 
    Dim iStr_Heure As String
    dim iStr_Date as string
    Dim iStr_Nom1 As String
    Dim iStr_Nom2 As String
    Dim iStr_Court As String
    Dim iStr_Nature As String
    Dim db As DAO.Database: Set db = CurrentDb
    Dim rs As DAO.Recordset: Set rs = db.OpenRecordset("table1")
    dim iInt_NumFic as integer
    dim iStr_Champs() as string
     
    iInt_NumFic = FreeFile
    Open "C:\Documents and Settings\Propriétaire\Mes documents\Bureau\Import\Excel.csv" For Input As #iInt_NumFic
    Line Input #iInt_NumFic, ligne ' pour eviter la premiere ligne
    While Not EOF(1)
        Line Input #1, ligne
        istr_Champs = split(ligne, ";")
        iStr_Date = istr_Champs(0)
        iStr_Heure = istr_Champs(1)
        iStr_Nom1 = istr_Champs(2)
        iStr_Nom2 = istr_Champs(3)
        iStr_Court = istr_Champs(4)
        iStr_Nature = istr_Champs(5)    
        With rs
           .AddNew
            ![DATE] = iStr_Date
            ![HEURE] = iStr_Heure
            ![NOMA] = iStr_Nom1
            ![NOMB] = iStr_Nom2
            ![COURT] = iStr_Court
            ![NATURE] = iStr_Nature
           .Update
        End With
    Wend  
     
    Close #iInt_NumFic
     
    End Sub
    Dans ta table, change le nom du champ date, ça t'évitera bien des problèmes : c'est un mot réservé
    Reste à comprendre pourquoi la 1ère lecture du fichier ramène tout le fichier et pas seulement la 1ère ligne.
    C'est toi qui a fait l'export du fichier XLS en CSV ?

  7. #7
    Membre habitué
    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Août 2005
    Messages : 660
    Points : 165
    Points
    165
    Par défaut
    Bonjour Kloun et bonne année,

    Le code fonctionne correctement, j'ai modifié selon tes conseils
    le nom des champs.

    Merci pour l'aide que tu m'a apportée.

    Salutations

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

Discussions similaires

  1. [VB6]Importer un fichier texte dans une table ACCESS
    Par jean-pierre96 dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 26/02/2013, 15h55
  2. Importer un fichier CSV dans une table Access
    Par zemeilleurofgreg dans le forum Bases de données
    Réponses: 17
    Dernier message: 09/07/2008, 22h48
  3. Importer un fichier csv dans une table mdb
    Par pobrouwers dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 02/12/2007, 14h17
  4. Importer un fichier CSV dans une table mySQL
    Par crazydiver_e2 dans le forum Requêtes
    Réponses: 4
    Dernier message: 16/01/2007, 10h47
  5. Impossible d'importer un fichier csv dans une table sous MySQL
    Par manue85 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 20/04/2006, 12h06

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