Fichier text et vba

Résolu
Bonjour,
J'ai besoin de vos lumières.
J'ai un fichier csv tiré d'un fichier excel.
Le but est de faire un import dans une base de données Access de ce fichier.
Donc mon problème est le suivant :
je n'arrive pas a traiter correctement ce fichier pour:
- Ouvrir le fichier
- Lire chaque ligne pour la mettre dans une variable.
- Récuperer la chaine de caractere de cette variable jusqu'au 1er ";" pour l'inserer dans ma table access.
Et ainsi de suite...

Merci de vos réponse je suis en galère.

4 réponses

  1. Contributeur
    Bonjour,
    un exemple ? , j'ai pas tester mais ça devrait t'aider...
    Dans un module public..
    Option Explicit 
    Public Chemin As String 
    Public Fichier As String 
    
    'Sélectionner un fichier par boite de dialogue 
    Function SelectionFichier() As Boolean 
    Dim nomfich As String, i As Integer 
        nomfich = Application.GetOpenFilename(FileFilter:="(*.*),*.tous" _ 
                , Title:="Sélectionnez le fichier à convertir") 
        If nomfich = "Faux" Then 'pas de sélection faite 
            Exit Function 
        End If 
        For i = Len(nomfich) To 2 Step -1 
            If Mid(nomfich, i, 1) = "\" Then Exit For 
        Next i 
        Chemin = Left(nomfich, i) 
        Fichier = Mid(nomfich, i + 1) 
        SelectionFichier = True 
    End Function 
    
    Sub OuvreFichier() 
    Dim F As String, Fich As Integer, TB, D 
        SelectionFichier 
        F = Chemin & Fichier 
        Fich = FreeFile 
        Open F For Input As #Fich 
        While Not EOF(Fich) 
            Line Input #Fich, D 
            TB = Split(D, ",") 'adapter au séparateur... 
            'Ici, la première donnée est dans T(0) 
            'Tu peu l'insérer où tu veux 
        Wend 
    End Sub

    Eventuellement tu peu remplacer SelectionFichier par le chemin et nom en dur dans le module.
    Syntaxe = OuvreFichier()
    A+
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    1. Contributeur
      Beh... entre temps tu a mis ton topic en résolu ? comment ?
      L'expérience instruit plus sûrement que le conseil. (André Gide)
      Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
      1. Après avoir bien reflechi et tourner sur le net... voila mon code.. sui fonctionne, peut etre pas tres académique :( mais bon... efficace.

        Merci a toi quand mème.

        Dim NumFic As Integer
        Dim strLigne As String
        Dim Niveau1 As String
        Dim requeteSelect6 As String

        Dim requeteInsert1 As String
        Dim Result As Integer
        Dim recset As Object
        Dim ID As Integer
        Dim DB As Database

        NumFic = FreeFile

        Open "c:\Classeur0.txt" For Input As #NumFic
        While Not EOF(NumFic)
        Line Input #NumFic, strLigne
        'Select Case i
        'Case 1
        pos = InStr(strLigne, ";")
        Niveau1 = Left(strLigne, pos - 1)
        strLigne = Mid(strLigne, pos + 1, Len(strLigne) - pos)
        requeteSelect1 = "Select ID_Niv1 from Article_Niv1 where Des_Niv1 = '" & Niveau1 & "';"
        requeteInsert1 = "INSERT INTO Article_Niv1 ( Des_Niv1 )VALUES ('" & Niveau1 & "');"
        Set DB = CurrentDb
        Set recset = DB.OpenRecordset("Select * from Article_Niv1 where Des_Niv1 = '" & Niveau1 & "';")
        Result = recset.RecordCount
        If Result = 0 Then
        DoCmd.RunSQL requeteInsert
        End If
        1. Contributeur
          D'ac, mais dans ton cas la fonction Split est plus appropriée.