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

Découper un fichier texte

5 réponses
Avatar
RENAUD Eric
Bonjour,
J'ai un fichier texte extrait de SAP avec des enregistrements séparés par le
signe |
Suivant le critère retenu pour l'extraction, je n'ai plus le même nombre
pour certains champs.
Pour pouvoir récupérer les données de chaque enregistrement quelque soit le
cas de figure, je
pensais déterminer la position de chaque | (pipe):
Pip1=2
Pip2=10
Pip3=20
Pip4=35

Comme ça je pourrais récupérer chaque string comprise entre deux | (pipes)
Enreg1=Entre 3 et 9
Enreg2=Entre 11 et 19
Enreg3=Entre 21 et 34

Comment pourrais-je faire cela de manière relativement simple ?

D'avance merci

5 réponses

Avatar
Pounet95
Bonjour,
Le fichier est en foramt texte, OK.
Est-il le résultat d'une requête toute faite sur laquelle tu ne peux
aucunement intervenir ?
Ou, est-ce toi qui utilise la transaction et qui à la fin de celle-ci génère
le fichier texte ?

Il est tout à fait possible de récupérer le résultat d'un traitement liste
dans un fichier Excel directement !
Demande autour de toi sur ton lieu de travail , il y a bien au moins un qui
sait ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:

Bonjour,
J'ai un fichier texte extrait de SAP avec des enregistrements séparés par
le
signe |
Suivant le critère retenu pour l'extraction, je n'ai plus le même nombre
pour certains champs.
Pour pouvoir récupérer les données de chaque enregistrement quelque soit
le
cas de figure, je
pensais déterminer la position de chaque | (pipe):
Pip1=2
Pip2
Pip3
Pip45

Comme ça je pourrais récupérer chaque string comprise entre deux | (pipes)
Enreg1=Entre 3 et 9
Enreg2=Entre 11 et 19
Enreg3=Entre 21 et 34

Comment pourrais-je faire cela de manière relativement simple ?

D'avance merci




Avatar
RENAUD Eric
Hélas le nombre d'enregistrement dépasse les capacités d'Excel c'est
pourquoi je me suis orienté vers une autre démarche.
"Pounet95" a écrit dans le message de
news:
Bonjour,
Le fichier est en foramt texte, OK.
Est-il le résultat d'une requête toute faite sur laquelle tu ne peux
aucunement intervenir ?
Ou, est-ce toi qui utilise la transaction et qui à la fin de celle-ci
génère

le fichier texte ?

Il est tout à fait possible de récupérer le résultat d'un traitement liste
dans un fichier Excel directement !
Demande autour de toi sur ton lieu de travail , il y a bien au moins un
qui

sait ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de
news:


Bonjour,
J'ai un fichier texte extrait de SAP avec des enregistrements séparés
par


le
signe |
Suivant le critère retenu pour l'extraction, je n'ai plus le même nombre
pour certains champs.
Pour pouvoir récupérer les données de chaque enregistrement quelque soit
le
cas de figure, je
pensais déterminer la position de chaque | (pipe):
Pip1=2
Pip2
Pip3
Pip45

Comme ça je pourrais récupérer chaque string comprise entre deux |
(pipes)


Enreg1=Entre 3 et 9
Enreg2=Entre 11 et 19
Enreg3=Entre 21 et 34

Comment pourrais-je faire cela de manière relativement simple ?

D'avance merci







Avatar
Pounet95
Re bonjour,
Vivement Excel 12 !!!
As-tu la possibilité d'éxécuter plusieurs fois la transaction en en
modifiant les critères ?
Sinon, je ne sais plus si c'est sur le site de Laurent Longres ou de
Frédéric Sigonneau, il y a de quoi récupérer des fichiers plus longs que les
65536 lignes ( c'est du VBA )


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de news:
%
Hélas le nombre d'enregistrement dépasse les capacités d'Excel c'est
pourquoi je me suis orienté vers une autre démarche.
"Pounet95" a écrit dans le message de
news:
Bonjour,
Le fichier est en foramt texte, OK.
Est-il le résultat d'une requête toute faite sur laquelle tu ne peux
aucunement intervenir ?
Ou, est-ce toi qui utilise la transaction et qui à la fin de celle-ci
génère

le fichier texte ?

Il est tout à fait possible de récupérer le résultat d'un traitement
liste
dans un fichier Excel directement !
Demande autour de toi sur ton lieu de travail , il y a bien au moins un
qui

sait ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de
news:


Bonjour,
J'ai un fichier texte extrait de SAP avec des enregistrements séparés
par


le
signe |
Suivant le critère retenu pour l'extraction, je n'ai plus le même
nombre
pour certains champs.
Pour pouvoir récupérer les données de chaque enregistrement quelque
soit
le
cas de figure, je
pensais déterminer la position de chaque | (pipe):
Pip1=2
Pip2
Pip3
Pip45

Comme ça je pourrais récupérer chaque string comprise entre deux |
(pipes)


Enreg1=Entre 3 et 9
Enreg2=Entre 11 et 19
Enreg3=Entre 21 et 34

Comment pourrais-je faire cela de manière relativement simple ?

D'avance merci











Avatar
RENAUD Eric
Finalement avec l'aide du forum des news sur VB, j'ai réaliser le programme
suivant qui me convient (il pourra servir à d'autres)
Sub ExtractionChaine()
Dim tbl() As String, i As Byte
MyChemin = "C:ExcelSAP-BD320"
Kill MyChemin & "2006XXXX-DFI-Articles_ZMATX.txt"
On Error GoTo 0
Open MyChemin & "2006XXXX-DFI-Articles_ZMATX.txt" For Append As #2
Open MyChemin & "2006XXXX-DFI-Articles_ZMAT.txt" For Input As #1
Do While Not EOF(1)
' Lit les données de la ligne
Line Input #1, Donnees
tbl = Split(Donnees, "|")
For i = 1 To UBound(tbl)
If i = 1 Then
MaLigne = tbl(i)
Else
MaLigne = MaLigne & ";" & tbl(i)
End If
Next
Print #2, MaLigne
Loop
Close #2
Close #1
End Sub


"Pounet95" a écrit dans le message de
news:%
Re bonjour,
Vivement Excel 12 !!!
As-tu la possibilité d'éxécuter plusieurs fois la transaction en en
modifiant les critères ?
Sinon, je ne sais plus si c'est sur le site de Laurent Longres ou de
Frédéric Sigonneau, il y a de quoi récupérer des fichiers plus longs que
les

65536 lignes ( c'est du VBA )


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de
news:

%
Hélas le nombre d'enregistrement dépasse les capacités d'Excel c'est
pourquoi je me suis orienté vers une autre démarche.
"Pounet95" a écrit dans le message de
news:
Bonjour,
Le fichier est en foramt texte, OK.
Est-il le résultat d'une requête toute faite sur laquelle tu ne peux
aucunement intervenir ?
Ou, est-ce toi qui utilise la transaction et qui à la fin de celle-ci
génère

le fichier texte ?

Il est tout à fait possible de récupérer le résultat d'un traitement
liste
dans un fichier Excel directement !
Demande autour de toi sur ton lieu de travail , il y a bien au moins un
qui

sait ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de
news:


Bonjour,
J'ai un fichier texte extrait de SAP avec des enregistrements séparés
par


le
signe |
Suivant le critère retenu pour l'extraction, je n'ai plus le même
nombre
pour certains champs.
Pour pouvoir récupérer les données de chaque enregistrement quelque
soit
le
cas de figure, je
pensais déterminer la position de chaque | (pipe):
Pip1=2
Pip2
Pip3
Pip45

Comme ça je pourrais récupérer chaque string comprise entre deux |
(pipes)


Enreg1=Entre 3 et 9
Enreg2=Entre 11 et 19
Enreg3=Entre 21 et 34

Comment pourrais-je faire cela de manière relativement simple ?

D'avance merci














Avatar
FxM
Bonsoir,

Si je lis la question originale, split(..) me semble être la moins
mauvaise solution.
Toutefois, dans la lecture du code final, je me demande si un simple
remplacement de | par ; ne suffirait pas ...

Sub test() 'non testé !!!
MyChemin = "C:ExcelSAP-BD320"
Open MyChemin & "2006XXXX-DFI-Articles_ZMATX.txt" For output As #2
Open MyChemin & "2006XXXX-DFI-Articles_ZMAT.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, Donnees
print #2, application.substitute(donnees,"|",";")
Loop
Close #1
Close #2
End Sub

@+
FxM




Finalement avec l'aide du forum des news sur VB, j'ai réaliser le programme
suivant qui me convient (il pourra servir à d'autres)
Sub ExtractionChaine()
Dim tbl() As String, i As Byte
MyChemin = "C:ExcelSAP-BD320"
Kill MyChemin & "2006XXXX-DFI-Articles_ZMATX.txt"
On Error GoTo 0
Open MyChemin & "2006XXXX-DFI-Articles_ZMATX.txt" For Append As #2
Open MyChemin & "2006XXXX-DFI-Articles_ZMAT.txt" For Input As #1
Do While Not EOF(1)
' Lit les données de la ligne
Line Input #1, Donnees
tbl = Split(Donnees, "|")
For i = 1 To UBound(tbl)
If i = 1 Then
MaLigne = tbl(i)
Else
MaLigne = MaLigne & ";" & tbl(i)
End If
Next
Print #2, MaLigne
Loop
Close #2
Close #1
End Sub


"Pounet95" a écrit dans le message de
news:%
Re bonjour,
Vivement Excel 12 !!!
As-tu la possibilité d'éxécuter plusieurs fois la transaction en en
modifiant les critères ?
Sinon, je ne sais plus si c'est sur le site de Laurent Longres ou de
Frédéric Sigonneau, il y a de quoi récupérer des fichiers plus longs que
les

65536 lignes ( c'est du VBA )


--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de
news:

%
Hélas le nombre d'enregistrement dépasse les capacités d'Excel c'est
pourquoi je me suis orienté vers une autre démarche.
"Pounet95" a écrit dans le message de
news:
Bonjour,
Le fichier est en foramt texte, OK.
Est-il le résultat d'une requête toute faite sur laquelle tu ne peux
aucunement intervenir ?
Ou, est-ce toi qui utilise la transaction et qui à la fin de celle-ci
génère

le fichier texte ?

Il est tout à fait possible de récupérer le résultat d'un traitement
liste
dans un fichier Excel directement !
Demande autour de toi sur ton lieu de travail , il y a bien au moins un
qui

sait ?

--
Pounet95
on trouve tout ( ou presque ) http://www.excelabo.net/
Conseillé :
http://dj.joss.free.fr/netiquet.htm
(charte, nétiquette, conseils, abréviations, souriettes...)
http://www.excelabo.net/mpfe/connexion.php
(connexion, conseils...)

"RENAUD Eric" <erenaud(retirerceci)@fr.fm> a écrit dans le message de
news:


Bonjour,
J'ai un fichier texte extrait de SAP avec des enregistrements séparés
par


le
signe |
Suivant le critère retenu pour l'extraction, je n'ai plus le même
nombre
pour certains champs.
Pour pouvoir récupérer les données de chaque enregistrement quelque
soit
le
cas de figure, je
pensais déterminer la position de chaque | (pipe):
Pip1=2
Pip2
Pip3
Pip45

Comme ça je pourrais récupérer chaque string comprise entre deux |
(pipes)


Enreg1=Entre 3 et 9
Enreg2=Entre 11 et 19
Enreg3=Entre 21 et 34

Comment pourrais-je faire cela de manière relativement simple ?

D'avance merci