Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion de fichier texte

3 réponses
Avatar
FAB
Boujour a tous,

Je cherche à lire un fichier texte où des donnée sont stokée via le vba.

Dans mon fichier texte, les donnée sont séparée par des point virgule car
générer par un autre logiciel.

Apparement la fonction INPUT ou INPUT # ne fonctionne qu'avec des virgules.

Merci à tous pour votre aide.

Fab.

--
Mettre un tiret entre be et iees pour me répondre.

3 réponses

Avatar
chrisn
Bonjour FAB,


Dans mon fichier texte, les donnée sont séparée par des point
virgule car

générer par un autre logiciel.

Apparement la fonction INPUT ou INPUT # ne fonctionne qu'avec des
virgules.


la fontion input(nombre_de_caractères,[#]fichier_lu) sait lire

caractère par caractères, il suffit de reconstituer vos entrées
Exemple :

Sub litfic()

Dim Moncar, Monart
Moncar = ""
Monart = ""
Open "c:monfichier.txt" For Input As #1
Moncar = Input(1, #1)
Do While Not EOF(1)
If Moncar = ";" Then
' mettre monart ou vous voulez
Moncar = Input(1, #1)
Monart = ""
Else
Monart = Monart + Moncar
Moncar = Input(1, #1)
End If
Loop
Close #1

'juste pour vérification du dernier article
Sheets("feuil1").Select
Range("A1").Select
ActiveCell.FormulaR1C1 = Monart
End Sub

Attention, il vous faudra gérer le cas où votre dernière chaîne ne
se termine pas par ";"


--
chrisn
mettre le bon fai, libertysurf pour me répondre

Avatar
Clément Marcotte
Bonjour,

Apparement la fonction INPUT ou INPUT # ne fonctionne qu'avec des
virgules.


Jamais eu ce problème. Ceci dit, deux façons parmi d'autres, en lisant
le ligne au complet et en la séparant après. Nécessite Excel 2000 ou
plus à cause du Split(). Pour Excel 97, il y a des fonctions de
remplacement pour Split() sur le site de Frédéric.

http://perso.wanadoo.fr/frederic.sigonneau

Sun ouvrirfichiertexteetseparer()
Dim separateur As String, i As Integer, f1 As Object
Dim fso As Object, f As Object, laligne As String
Const ForReading = 1
separateur = InputBox("Indiquez votre séparateur", _
"Choix du séparateur")
lenom = "c:copieunbeaufichiertexte.txt"
Set fso = CreateObject("Scripting.FileSystemObject")
Set f1 = fso.GetFile(lenom)
Set f = f1.OpenAsTextStream(ForReading, TristateUseDefault)
i = 1
Do While Not f.AtEndOfStream
laligne = f.ReadLine
laligne1 = Split(laligne, separateur)
For j = 0 To UBound(laligne1)
If InStr(laligne1(j), Chr(34)) = 1 Then
laligne1(j) = Right(laligne1(j), Len(laligne1(j)) - 1)
End If
If InStrRev(laligne1(j), Chr(34)) > 0 Then
laligne1(j) = Left(laligne1(j), InStrRev(laligne1(j), Chr(34)) - 1)
End If
Cells(i, j + 1).Value = laligne1(j)
Next
i = i + 1
Loop
f.Close
End Sub





Sub ouvrirfichiertexteetseparer1()
Dim separateur As String, i As Integer
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f
separateur = InputBox("Indiquez votre séparateur", "Choix du
séparateur")
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:copieunbeaufichiertexte.txt", _
ForAppending, True)
derniereligne = f.Line
f.Close
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:copieunbeaufichiertexte.txt", _
ForReading, TristateUseDefault)
For i = 1 To derniereligne
laligne = f.ReadLine
If laligne > "" Then
laligne1 = Split(laligne, separateur)
For j = 0 To UBound(laligne1)
If InStr(laligne1(j), Chr(34)) = 1 Then
laligne1(j) = Right(laligne1(j), Len(laligne1(j)) - 1)
End If
If InStrRev(laligne1(j), Chr(34)) > 0 Then
laligne1(j) = Left(laligne1(j), InStrRev(laligne1(j), Chr(34)) - 1)
End If
Cells(i, j + 1).Value = laligne1(j)
Next
Else
Exit For
End If
Next
f.Close
End Sub



"FAB" a écrit dans le message de
news:
Boujour a tous,

Je cherche à lire un fichier texte où des donnée sont stokée via le
vba.


Dans mon fichier texte, les donnée sont séparée par des point
virgule car

générer par un autre logiciel.


Merci à tous pour votre aide.

Fab.

--
Mettre un tiret entre be et iees pour me répondre.




Avatar
FAB
Salut,

Grand merçi a toi.

A+

Fab

"chrisn" a écrit dans le message de
news:
Bonjour FAB,


Dans mon fichier texte, les donnée sont séparée par des point
virgule car

générer par un autre logiciel.

Apparement la fonction INPUT ou INPUT # ne fonctionne qu'avec des
virgules.


la fontion input(nombre_de_caractères,[#]fichier_lu) sait lire

caractère par caractères, il suffit de reconstituer vos entrées
Exemple :

Sub litfic()

Dim Moncar, Monart
Moncar = ""
Monart = ""
Open "c:monfichier.txt" For Input As #1
Moncar = Input(1, #1)
Do While Not EOF(1)
If Moncar = ";" Then
' mettre monart ou vous voulez
Moncar = Input(1, #1)
Monart = ""
Else
Monart = Monart + Moncar
Moncar = Input(1, #1)
End If
Loop
Close #1

'juste pour vérification du dernier article
Sheets("feuil1").Select
Range("A1").Select
ActiveCell.FormulaR1C1 = Monart
End Sub

Attention, il vous faudra gérer le cas où votre dernière chaîne ne
se termine pas par ";"


--
chrisn
mettre le bon fai, libertysurf pour me répondre