lire un .txt avec vba

lire un .txt avec vba - VB/VBA/VBS - Programmation

Marsh Posté le 06-12-2006 à 15:25:49    

bonjour tous,
 
voilà j'ai un petit souci avec la lecture d'un fichier texte... quelqu'un peut-il m'aider à trouver la solution ?
 
Mon fichier txt est composé d'un certain nombre de lignes. Chaque ligne est une suite de champs (string ou integer) séparés par des virgules. Je souhaite stocker ces informations dans un tableau.
 
Le code ci-dessous me permet, ligne après ligne de stocker ces données dans des variables. Mais comment faire si ma ligne contient 400 champs ?
 
J'imagnine qu'il y a un autre moyen que d'écrire input #1, champ1, champ2, ..., champ400
 
enfin j'espère...
 
Merci !
 
 
Private Sub CommandButton1_Click()
     
Dim champ1, champ2
 
Open "M:\testfile.txt" For Input As #1
Do While Not EOF(1)
 
Input #1, champ1, champ2
 
Loop
Close #1
End Sub

Reply

Marsh Posté le 06-12-2006 à 15:25:49   

Reply

Marsh Posté le 06-12-2006 à 15:33:59    

Placer ta ligne dans une variable de type string
puis faire un split de cette variable avec comme séparateur la virgule, ce qui scindera ta chaine en autant d'éléments dans un tableau de type Variant
voir aide en ligne pour instruction Split,LBound,UBound

Reply

Marsh Posté le 06-12-2006 à 15:40:25    

raaaaaahh, merci !!! je ne connaissais pas cette fonction, magnifique :)

Reply

Marsh Posté le 06-12-2006 à 16:02:17    

Je rajoute la fonction Join() à la liste de kiki29
Elle fait l'inverse de Split()

Reply

Marsh Posté le 06-12-2006 à 16:08:03    

Utiliser Line Input au lieu de Input
Petit exemple : par contre la limite jusqu'à Excel 2007 exclu est de 256 colonnes


Option Explicit
 
Sub Bouton1_QuandClic()
Dim Chaine As String
Dim Ar() As String
Dim i As Integer
Dim r As Long, c As Long
Dim NumFichier As Integer
 
    Cells.Clear
    NumFichier = FreeFile
    r = 1
    Open "M:\testfile.txt" For Input As #NumFichier
        Do While Not EOF(NumFichier)
            c = 1
            Line Input #NumFichier, Chaine
            Ar = Split(Chaine, "," )
            For i = LBound(Ar) To UBound(Ar)
                Cells(r, c) = Ar(i)
                c = c + 1
            Next
            r = r + 1
        Loop
    Close #NumFichier
End Sub


Message édité par kiki29 le 07-12-2006 à 08:14:55
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed