Fichier text et vba

Résolu/Fermé
berbib - 14 déc. 2010 à 11:53
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 14 déc. 2010 à 17:01
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.


A voir également:

4 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 14/12/2010 à 16:37
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)
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 14/12/2010 à 16:39
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)
0
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
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
14 déc. 2010 à 17:01
D'ac, mais dans ton cas la fonction Split est plus appropriée.
0