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

Compter les caractères et séparer en 2

4 réponses
Avatar
Didier S
Bonjour,

J'ai un document texte issu d'une exportation de BDD. Celui ci comporte plus
de 300 champs séparés par un point virgule, avec environ 700 enregistrements
délimités par une marque de paragraphe.
PB : Excel et Access n'ouvrent pas plus de 255 champs.
Mon idée est de découper mon document en deux.
Je souhaite écrire une macro dans Word qui pour chaque paragraphe se
positionne sur le 150e point virgule. Je copie le contenu qui précède ce
point virgule dans un document vierge et le contenu qui suit dans un autre
document, puis je passe au paragraphe suivant.
Ceci afin de respecter la structure du fichier. Je peux ensuite importer
dans Excel ou dans Access les deux fichiers séparemment.

Si quelqu'un peut m'aider sur ce coup !
Merci à tous et Bon week end

Didier

4 réponses

Avatar
Corona
Bonjour Didier,
Voici un code vite fait et testé
d0 = le fichier d'origine
d1 = le fichier avec les 250 premiers champs
D2 = le fichier du 251ème champs au dernier
Philippe

Option Explicit
Sub Decoupe()
Dim d0 As String, d1 As String, d2 As String
Dim ligne As String, Txt1 As String, Txt2 As String
Dim dv0 As Integer, dv1 As String, dv2 As String, Posit As Integer, x As
Integer

d0 = "C:Documents and SettingsPhilippeMes documentsData
Baseproject.txt"
d1 = "C:Documents and SettingsPhilippeMes documentsData
Baseproject1.txt"
d2 = "C:Documents and SettingsPhilippeMes documentsData
Baseproject2.txt"

dv0 = FreeFile: Open d0 For Input As #dv0
dv1 = FreeFile: Open d1 For Output As #dv1
dv2 = FreeFile: Open d2 For Output As #dv2

While Not (EOF(dv0))
Line Input #dv0, ligne
Posit = 1
For x = 1 To 250
Posit = InStr(Posit, ligne, ";"): Posit = Posit + 1
Next
Txt1 = Mid$(ligne, 1, Posit - 2)
Txt2 = Mid$(ligne, Posit)
Print #dv1, Txt1
Print #dv2, Txt2
Wend
Close
End Sub



"Didier S" a écrit dans le message de news:
4440b159$0$294$
Bonjour,

J'ai un document texte issu d'une exportation de BDD. Celui ci comporte
plus de 300 champs séparés par un point virgule, avec environ 700
enregistrements délimités par une marque de paragraphe.
PB : Excel et Access n'ouvrent pas plus de 255 champs.
Mon idée est de découper mon document en deux.
Je souhaite écrire une macro dans Word qui pour chaque paragraphe se
positionne sur le 150e point virgule. Je copie le contenu qui précède ce
point virgule dans un document vierge et le contenu qui suit dans un autre
document, puis je passe au paragraphe suivant.
Ceci afin de respecter la structure du fichier. Je peux ensuite importer
dans Excel ou dans Access les deux fichiers séparemment.

Si quelqu'un peut m'aider sur ce coup !
Merci à tous et Bon week end

Didier



Avatar
Corona
Désolé mal lu la question
Philippe
"Didier S" a écrit dans le message de news:
4440b159$0$294$
Bonjour,

J'ai un document texte issu d'une exportation de BDD. Celui ci comporte
plus de 300 champs séparés par un point virgule, avec environ 700
enregistrements délimités par une marque de paragraphe.
PB : Excel et Access n'ouvrent pas plus de 255 champs.
Mon idée est de découper mon document en deux.
Je souhaite écrire une macro dans Word qui pour chaque paragraphe se
positionne sur le 150e point virgule. Je copie le contenu qui précède ce
point virgule dans un document vierge et le contenu qui suit dans un autre
document, puis je passe au paragraphe suivant.
Ceci afin de respecter la structure du fichier. Je peux ensuite importer
dans Excel ou dans Access les deux fichiers séparemment.

Si quelqu'un peut m'aider sur ce coup !
Merci à tous et Bon week end

Didier



Avatar
Eric
Bonjour,

Un élément de réponse sur mpfa suite à ton post. Faire, comme le
préconise Corona, un éclatement en 2 fichiers .txt mais il te faut un
champ supplémentaire pour faire une liaison entre les 2 fichiers issus
de l'éclatement.

Bonjour,

J'ai un document texte issu d'une exportation de BDD. Celui ci comporte plus
de 300 champs séparés par un point virgule, avec environ 700 enregistrements
délimités par une marque de paragraphe.
PB : Excel et Access n'ouvrent pas plus de 255 champs.
Mon idée est de découper mon document en deux.
Je souhaite écrire une macro dans Word qui pour chaque paragraphe se
positionne sur le 150e point virgule. Je copie le contenu qui précède ce
point virgule dans un document vierge et le contenu qui suit dans un autre
document, puis je passe au paragraphe suivant.
Ceci afin de respecter la structure du fichier. Je peux ensuite importer
dans Excel ou dans Access les deux fichiers séparemment.

Si quelqu'un peut m'aider sur ce coup !
Merci à tous et Bon week end

Didier




--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl=fr

Avatar
Didier S
Bonjour,

Merci pour cette proposition.
C'était la voie à suivre, je l'ai adapté à mon cas et ça marche !

Merci pour votre aide et bon week end
Cordialement
Didier


"Corona" <Philippe Tulliez> a écrit dans le message de news:

Bonjour Didier,
Voici un code vite fait et testé
d0 = le fichier d'origine
d1 = le fichier avec les 250 premiers champs
D2 = le fichier du 251ème champs au dernier
Philippe

Option Explicit
Sub Decoupe()
Dim d0 As String, d1 As String, d2 As String
Dim ligne As String, Txt1 As String, Txt2 As String
Dim dv0 As Integer, dv1 As String, dv2 As String, Posit As Integer, x As
Integer

d0 = "C:Documents and SettingsPhilippeMes documentsData
Baseproject.txt"
d1 = "C:Documents and SettingsPhilippeMes documentsData
Baseproject1.txt"
d2 = "C:Documents and SettingsPhilippeMes documentsData
Baseproject2.txt"

dv0 = FreeFile: Open d0 For Input As #dv0
dv1 = FreeFile: Open d1 For Output As #dv1
dv2 = FreeFile: Open d2 For Output As #dv2

While Not (EOF(dv0))
Line Input #dv0, ligne
Posit = 1
For x = 1 To 250
Posit = InStr(Posit, ligne, ";"): Posit = Posit + 1
Next
Txt1 = Mid$(ligne, 1, Posit - 2)
Txt2 = Mid$(ligne, Posit)
Print #dv1, Txt1
Print #dv2, Txt2
Wend
Close
End Sub



"Didier S" a écrit dans le message de news:
4440b159$0$294$
Bonjour,

J'ai un document texte issu d'une exportation de BDD. Celui ci comporte
plus de 300 champs séparés par un point virgule, avec environ 700
enregistrements délimités par une marque de paragraphe.
PB : Excel et Access n'ouvrent pas plus de 255 champs.
Mon idée est de découper mon document en deux.
Je souhaite écrire une macro dans Word qui pour chaque paragraphe se
positionne sur le 150e point virgule. Je copie le contenu qui précède ce
point virgule dans un document vierge et le contenu qui suit dans un
autre document, puis je passe au paragraphe suivant.
Ceci afin de respecter la structure du fichier. Je peux ensuite importer
dans Excel ou dans Access les deux fichiers séparemment.

Si quelqu'un peut m'aider sur ce coup !
Merci à tous et Bon week end

Didier