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
    D'ac, mais dans ton cas la fonction Split est plus appropriée.
    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
        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. 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)