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

Split

6 réponses
Avatar
John-Pet
Bonsoir

je récupère le code source d'une page Internet
quand j'ouvre avec le bloc note ce fichier le saut de ligne ou retour
chariot est représenté par un carré, mais le fichier ne contient qu'une
ligne en faite
quand j'ouvre ce fichier par Vb et que je fait un msgbox sur ce fichier
j'ai bien toutes mes lignes dans la box.
par contre lorsque je veux traiter ce fichier pour en faire un tableau
par la fonction split(fichier.txt , vbCrLf) celui ci me renvoi qu'une
ligne aussi, il ne prend pas en compte le retour chariot et saut de
ligne

merci d'avance

JP

--
Adresse mail : john-pet@wanadoo.fr
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

6 réponses

Avatar
Jean-marc
John-Pet wrote:
Bonsoir

je récupère le code source d'une page Internet
quand j'ouvre avec le bloc note ce fichier le saut de ligne ou retour
chariot est représenté par un carré, mais le fichier ne contient
qu'une ligne en faite
quand j'ouvre ce fichier par Vb et que je fait un msgbox sur ce
fichier j'ai bien toutes mes lignes dans la box.
par contre lorsque je veux traiter ce fichier pour en faire un tableau
par la fonction split(fichier.txt , vbCrLf) celui ci me renvoi qu'une
ligne aussi, il ne prend pas en compte le retour chariot et saut de
ligne

merci d'avance

JP



Le fichier que tu as récupéré est au format Unix. Dans ce format,
les passages à la ligne ne sont pas constitués de CR/LF mais
simplement de LF.

Tu peux splitter avec vbLf au lieu de vbCrlF.

Tu peux aussi mettre le contenu du fichier dans un buffer, et faire
un global replace vbLf vbCrlf; Puis tu splittes normalement
avec vbCrLf.

Et voila :-)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
John-Pet
Jean-marc a formulé la demande :
John-Pet wrote:
Bonsoir

je récupère le code source d'une page Internet
quand j'ouvre avec le bloc note ce fichier le saut de ligne ou retour
chariot est représenté par un carré, mais le fichier ne contient
qu'une ligne en faite
quand j'ouvre ce fichier par Vb et que je fait un msgbox sur ce
fichier j'ai bien toutes mes lignes dans la box.
par contre lorsque je veux traiter ce fichier pour en faire un tableau
par la fonction split(fichier.txt , vbCrLf) celui ci me renvoi qu'une
ligne aussi, il ne prend pas en compte le retour chariot et saut de
ligne

merci d'avance

JP



Le fichier que tu as récupéré est au format Unix. Dans ce format,
les passages à la ligne ne sont pas constitués de CR/LF mais
simplement de LF.

Tu peux splitter avec vbLf au lieu de vbCrlF.

Tu peux aussi mettre le contenu du fichier dans un buffer, et faire
un global replace vbLf vbCrlf; Puis tu splittes normalement
avec vbCrLf.

Et voila :-)



Ok merci pour les renseignements
cela fonctionne

++

JP

--
Adresse mail :
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Avatar
Jean-marc
John-Pet wrote:
Jean-marc a formulé la demande :

Ok merci pour les renseignements
cela fonctionne



Merci du retour.

Je suis en veine d'inspiration ce soir.

Voici un splitter de fichier texte universel:


Public Function splitUniversal(ByVal fName As String, _
ByRef t() As String) As Integer
Dim buffer As String
Dim f As Integer

On Error GoTo splitUniversal_ERR

f = FreeFile
Open fName For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
If InStr(buffer, vbCrLf) > 0 Then ' DOS format ?
t() = Split(buffer, vbCrLf)
ElseIf InStr(buffer, vbLf) > 0 Then ' Unix ?
t() = Split(buffer, vbCrLf)
ElseIf InStr(buffer, vbCr) > 0 Then ' VMS ?
t() = Split(buffer, vbCrLf)
Else ' NO split !
t() = Split(buffer, "")
End If

splitUniversal_END:
Exit Function
splitUniversal_ERR:
splitUniversal = Err.Number
Resume splitUniversal_END
End Function




Si ça peut vous servir, tant mieux :o)

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
Jacques93
Bonjour Jean-marc,
Jean-marc a écrit :
John-Pet wrote:
Jean-marc a formulé la demande :

Ok merci pour les renseignements
cela fonctionne



Merci du retour.

Je suis en veine d'inspiration ce soir.

Voici un splitter de fichier texte universel:


Public Function splitUniversal(ByVal fName As String, _
ByRef t() As String) As Integer
Dim buffer As String
Dim f As Integer

On Error GoTo splitUniversal_ERR

f = FreeFile
Open fName For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
If InStr(buffer, vbCrLf) > 0 Then ' DOS format ?
t() = Split(buffer, vbCrLf)
ElseIf InStr(buffer, vbLf) > 0 Then ' Unix ?
t() = Split(buffer, vbCrLf)
ElseIf InStr(buffer, vbCr) > 0 Then ' VMS ?
t() = Split(buffer, vbCrLf)
Else ' NO split !
t() = Split(buffer, "")
End If

splitUniversal_END:
Exit Function
splitUniversal_ERR:
splitUniversal = Err.Number
Resume splitUniversal_END
End Function




Si ça peut vous servir, tant mieux :o)




euh... Est ce bien normal que tu split toujours avec vbCrLf ??? et non
pas avec vbCrLf (DOS) vbLf (Unix), vbCr (VMS). Copier / Coller ?

--
Cordialement,

Jacques.
Avatar
Jean-marc
Jacques93 wrote:
Bonjour Jean-marc,

euh... Est ce bien normal que tu split toujours avec vbCrLf ??? et non
pas avec vbCrLf (DOS) vbLf (Unix), vbCr (VMS). Copier / Coller ?




Je ne dirais qu'un mot : Arghhhhhhhhhh !!

Merci inifiniment Jacques, je ne devrais pas copier/coller/poster après
une rude journée de travail :-(

Je rectifie donc :


Public Function splitUniversal(ByVal fName As String, _
ByRef t() As String) As Integer
Dim buffer As String
Dim f As Integer

On Error GoTo splitUniversal_ERR

f = FreeFile
Open fName For Binary As #f
buffer = Space$(LOF(f))
Get #f, , buffer
Close #f
If InStr(buffer, vbCrLf) > 0 Then ' DOS format ?
t() = Split(buffer, vbCrLf)
ElseIf InStr(buffer, vbLf) > 0 Then ' Unix ?
t() = Split(buffer, vbLf)
ElseIf InStr(buffer, vbCr) > 0 Then ' VMS ?
t() = Split(buffer, vbCr)
Else ' NO split !
t() = Split(buffer, "")
End If

splitUniversal_END:
Exit Function
splitUniversal_ERR:
splitUniversal = Err.Number
Resume splitUniversal_END
End Function


Merci encore, jacques!


--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
Avatar
Jacques93
Bonjour Jean-marc,
Jean-marc a écrit :
Jacques93 wrote:
Bonjour Jean-marc,

euh... Est ce bien normal que tu split toujours avec vbCrLf ??? et non
pas avec vbCrLf (DOS) vbLf (Unix), vbCr (VMS). Copier / Coller ?




Je ne dirais qu'un mot : Arghhhhhhhhhh !!

Merci inifiniment Jacques, je ne devrais pas copier/coller/poster après
une rude journée de travail :-(




[...]

De rien, ça arrive aux meilleurs, toujours se méfier du copier/coller ;-)

--
Cordialement,

Jacques.