XL 2021 Lire un fichier txt

  • Initiateur de la discussion Initiateur de la discussion Hieu
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Hieu

XLDnaute Impliqué
Bonjour à tous,

Je suis actuellement dans le traitement de fichier txt sous VBa.
J'arrive à écrire un fichier txt via ce petit code :

VB:
fic = "toto.txt"
f = FreeFile
Open fic For Output As #f
Print #f,"Hello"
Close #f

Aujourd'hui, je souhaite lire un fichier, chercher dedans, trouver une ligne specifique, ecrire sur mon fichier excel...

VB:
fic = "titi.txt"
f = FreeFile
Open fic For Input As #f
' ??????
' num = no de ligne pour "coucou"
' range("a1") = no de ligne +1
' ...
Close #f

Si quelqu'un peut m'aider ?
Merci par avance,
 
Solution
Salut à tous,

Merci pour vos reponses, j'ai opté pour une autre solution qui fonctionne

Code:
Workbooks.open("toto.txt")
...
Workbooks("toto.txt").Close

C'est certainement moins efficient, mais au moins, je gere ^^

Merci encore,
bonjour
VB:
'Exemple lecture  1
Sub lecture1()    ' recupe le texte complet  avec binary acces read
    Dim laChaine As String, x, fichier As String
    fichier = "C:\Users\polux\Desktop\ttt.txt"
    x = FreeFile
    Open fichier For Binary Access Read As #x
    laChaine = String(LOF(x), " ")
    Get #x, , laChaine
    Close #x
    MsgBox laChaine
End Sub
---------------------------------------------------------------------------------------------


'Exemple lecture 2
Sub lecture2()    ' ligne par ligne avec input simple
    Dim x As Integer
    Dim DataLine As String
    fichier = "C:\Users\polux\Desktop\ttt.txt"
    x = FreeFile
    Open fichier For Input As #x
    While Not EOF(x)
        Line Input #x, DataLine    'lecture de la ligne
        Debug.Print DataLine
    Wend
    Close #x
End Sub
---------------------------------------------------------------------------------------------


'Exemple lecture 3
Sub lecture3()    ' recupe le texte complet avec input simple
    Dim x As Integer: x = FreeFile
    Dim lines As String, i As Long
    fichier = "C:\Users\polux\Desktop\ttt.txt"
    Open fichier For Input As #x
    lines = Input$(LOF(x), #x)
    Close #x
    Debug.Print lines
End Sub

ET POUR L ECRITURE
VB:
'exemple ecriture 1 cette methode créée le fichier si il existe pas ,le remplace si il existe
Sub ecriture()
    fichier = "C:\Users\polux\Desktop\ttt.txt"
    x = FreeFile
    Open fichier For Output As #x
    Print #x, "truc ma chin " & vbCrLf & "bidule"
    Close #x
End Sub
---------------------------------------------------------------------------------------------


'exemple ecriture 2 , cette methode ajoute le texte dans le fichier existant
Sub ecriture2()
    fichier = "C:\Users\polux\Desktop\ttt.txt"
    x = FreeFile
    Open fichier For Append As #x
    For i = 1 To 10
        Print #x, "ligne" & i
    Next
    Close #x
End Sub

ENSUITE ON PASSE AVEC LES METHODES FSO
VB:
METHODE AVEC SCRIPTINGFILESYSTEM OBJECT
texte entier
Sub LECTURE1()
 Const ForReading = 1: Const ForWriting = 2
 File_Path = "C:\Users\polux\Desktop\toto.txt"
  
Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set ofile = oFSO.OpenTextFile(File_Path, ForReading)
texte = ofile.readall
MsgBox UBound(Split(texte, vbCrLf))
End Sub

---------------------------------------------------------------------------
Sub LECTURE2()
Const ForReading = 1, ForWriting = 2 
Dim oFso, f
 
Set oFso = CreateObject("Scripting.FileSystemObject")
Set f = oFso.OpenTextFile("c:\tmp\fichier1.txt", ForReading)
while Not f.AtEndOfStream 
    debug.print  f.ReadLine
Wend
f.Close
End sub

ENSUITE ON PASSE AVEC ANALYSE DE FORMAT UTF-8 OU ANSI
VB:
Sub test2()
'on lit un fichier UDF 8
    Dim texto$, fichier$
    fichier = "C:\Users\polux\Desktop\Mémo UTF-8.txt"
    Open_For_Read_Force_Udf_8 fichier, texto
    MsgBox texto
End Sub

Sub test3()
'on lit un fichier ANSI
    Dim texto$, fichier$
    fichier = "C:\Users\polux\Desktop\Mémo 0.txt"
    Open_For_Read_Force_Udf_8 fichier, texto
    MsgBox texto
End Sub


Function Open_For_Read_Force_Udf_8(ByVal fichier$, texto$)
    Dim laChaine As String, x: x = FreeFile
    'lecture binnaire
    Open fichier For Binary Access Read As #x: laChaine = String(LOF(x), " "): Get #x, , laChaine: Close #x
    If Not laChaine Like "*[Ã|é|è|ç|â|€|«|»|û|ê|…|/ø|ø|À|É|È|Ã|Ö|]*" Then    'si la chaine ne contient pas de carateres sbizarre
        texto = laChaine    ' alors texto = lachaine
    Else    ' sinon on stream le fichier avec ADOBD.Stream
        With CreateObject("ADODB.Stream")
            .Charset = "utf-8": .Open: .LoadFromFile (fichier): texto = .ReadText()
        End With
    End If
End Function

VOILA JE PENSE QUE LA DEDANS TU A TA SOLUTION
 
Dernière édition:
et oui c'est vrai quoi pour quoi aller chercher une binette pour rempoter le géranium alors que j'ai le tractopelle dans le jardin
Game Of Thrones Hbo GIF
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
75
Réponses
15
Affichages
718
Réponses
2
Affichages
416
Réponses
2
Affichages
673
Réponses
2
Affichages
1 K
Retour