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

extraire des chaines précises

5 réponses
Avatar
jerome
Bonjour,

J'ai un fichier texte pour lequel je voudrais extraire toutes les lignes (à
inscrire dans un autre fichier) contenant un mot.

Dim texte As String
Dim Numfile As Integer
Dim First As Long
Dim Next As Long

Numfile = FreeFile

Open "c:\appli\fichier.txt" For Input As Numfile
texte = Input(LOF(Numfile), Numfile)
Close Numfile

First = InStr(1, texte, "lemotàcontenir")

Mais à partir de là, je suis bloqué car je ne sais pas comment lui dire de
prendre toute la ligne.
De plus, je penses qu'il faut une boucle.

Merci
Jerome

5 réponses

Avatar
François Picalausa
"jerome" a écrit dans le message de
news:3fbe391f$0$954$
Bonjour,

J'ai un fichier texte pour lequel je voudrais extraire toutes les
lignes (à inscrire dans un autre fichier) contenant un mot.

Dim texte As String
Dim Numfile As Integer
Dim First As Long
Dim Next As Long

Numfile = FreeFile

Open "c:applifichier.txt" For Input As Numfile
texte = Input(LOF(Numfile), Numfile)
Close Numfile

First = InStr(1, texte, "lemotàcontenir")



Bonjour/soir,

Tu peux essayer ceci:

Private Function ExtractLines() As String
Dim Numfile As Integer
Dim strContentLines() As String
Dim i As Long

Numfile = FreeFile

Open "c:applifichier.txt" For Binary As Numfile
ExtractLines = String$(LOF(Numfile), vbNullChar)
Get Numfile, , ExtractLines 'stoque temporairement le contenu du
fichier en retour de la fonction
Close Numfile

strContentLines = Split(ExtractLines, vbCrLf)
ExtractLines = "" 'efface le stoquage temporaire

For i = 0 To UBound(strContentLines)
If InStr(1, strContentLines(i), "lemotàcontenir") > 0 Then
ExtractLines = ExtractLines & strContentLines(i) & vbCrLf
End If
Next i

If ExtractLines <> "" Then
ExtractLines = Left$(ExtractLines, Len(ExtractLines) - 2) 'efface le
crlf de trop
End If
End Function


--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com
Avatar
jerome
"François Picalausa" a écrit dans le message de news:

"jerome" a écrit dans le message de
news:3fbe391f$0$954$
> Bonjour,
>
> J'ai un fichier texte pour lequel je voudrais extraire toutes les
> lignes (à inscrire dans un autre fichier) contenant un mot.
(...)
Bonjour/soir,

Tu peux essayer ceci:

Private Function ExtractLines() As String
Dim Numfile As Integer
Dim strContentLines() As String
Dim i As Long

Numfile = FreeFile

Open "c:applifichier.txt" For Binary As Numfile
ExtractLines = String$(LOF(Numfile), vbNullChar)
Get Numfile, , ExtractLines 'stoque temporairement le contenu du
fichier en retour de la fonction
Close Numfile

strContentLines = Split(ExtractLines, vbCrLf)
ExtractLines = "" 'efface le stoquage temporaire

For i = 0 To UBound(strContentLines)
If InStr(1, strContentLines(i), "lemotàcontenir") > 0 Then
ExtractLines = ExtractLines & strContentLines(i) & vbCrLf
End If
Next i

If ExtractLines <> "" Then
ExtractLines = Left$(ExtractLines, Len(ExtractLines) - 2) 'efface


le
crlf de trop
End If
End Function



Impeccable, Merci !

Jerome
Avatar
Claude BATTAIA
Bonjour,
je n'ai peut-être pas tout compris mais le plus simple ne serait-il pas de
lire le fichier ligne par ligne avec l'instruction LINE INPUT ?????


"jerome" a écrit dans le message de news:
3fbe391f$0$954$
Bonjour,

J'ai un fichier texte pour lequel je voudrais extraire toutes les lignes



inscrire dans un autre fichier) contenant un mot.

Dim texte As String
Dim Numfile As Integer
Dim First As Long
Dim Next As Long

Numfile = FreeFile

Open "c:applifichier.txt" For Input As Numfile
texte = Input(LOF(Numfile), Numfile)
Close Numfile

First = InStr(1, texte, "lemotàcontenir")

Mais à partir de là, je suis bloqué car je ne sais pas comment lui dire de
prendre toute la ligne.
De plus, je penses qu'il faut une boucle.

Merci
Jerome




Avatar
Zoury
Salut Jérôme!

Note bien la difference entre les deux méthodes employées (la tienne et
celle de François) pour lire le contenu entier du fichier..

> texte = Input(LOF(Numfile), Numfile)



VS

> ExtractLines = String$(LOF(Numfile), vbNullChar)
> Get Numfile, , ExtractLines 'stoque temporairement le contenu du



La deuxième est **beaucoup** plus rapide..
http://groups.google.com/groups?selm=eLBoiqMjCHA.1280%40tkmsftngp12


--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/

Merci de poster les réponses au groupe afin d'en faire profiter à tous
Avatar
jerome
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:
Salut Jérôme!


Salut Yannick !
Note bien la difference entre les deux méthodes employées (la tienne et
celle de François) pour lire le contenu entier du fichier..

> > texte = Input(LOF(Numfile), Numfile)

VS

> > ExtractLines = String$(LOF(Numfile), vbNullChar)
> > Get Numfile, , ExtractLines 'stoque temporairement le contenu


du

La deuxième est **beaucoup** plus rapide..


Oui, je m'en était rendu compte, et je le remerci pour son aide.

@+
jerome