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

Méthologie lecture fichier Spool d'édition

15 réponses
Avatar
---DGI972---
Bonjour,

Je doit réaliser un Script pour décortiquer un fichier Spool d'édition
et avant de me lancer dans des lignes de code j'aurais souhaité
discuter de la faisabilité et de la méthode .
Je m'explique:
J'ai un fichier Spool qui contient des pages formatées avec des Noms
Prénoms adresses etc ...
Certaines Clients possédent plusieures pages qui sont numérotées 000001
000002 dans une position fixe dans le fichier.
Le but du Script est de faire un fichier pour les clients 1 pages, 1
fichier pour les clients à 2 Pages etc ...
Je pensais lire le fichier d'entrée (ligne par ligne) jusqu'a
rencontrer le symbole de changement de page (dans mon cas 1=1=) puis
écrire cette page complète dans un fichier temporaire en mémorisant
dans une variable la valeur de la page (par ex 00001), continuer la
lecture ligne par ligne jusqu'au caractère de fin de page, écrire dans
un autre fichier temporaire en mémorisant la variable de la page (par
exemple 00001).
Si les deux variables sont identiques le premier fichier temporaire est
bien un client en 1page il faut donc le recopier dans le fichier client
1page.
Recopier le 2 iéme fichier temporaire dans le premier fichier
temporaire.
Je m'aperçois que je n'ai même pas le squelette de mon code.
Quelqu'un peut il m'aider à débroussailler ma problèmatique ???

Merci

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

10 réponses

1 2
Avatar
Fred
Dans son message
---DGI972--- nous dit :

Bonjour,

Je doit réaliser un Script pour décortiquer un fichier Spool d'édition
et avant de me lancer dans des lignes de code j'aurais souhaité
discuter de la faisabilité et de la méthode .
Je m'explique:
J'ai un fichier Spool qui contient des pages formatées avec des Noms
Prénoms adresses etc ...
Certaines Clients possédent plusieures pages qui sont numérotées
000001 000002 dans une position fixe dans le fichier.
Le but du Script est de faire un fichier pour les clients 1 pages, 1
fichier pour les clients à 2 Pages etc ...
Je pensais lire le fichier d'entrée (ligne par ligne) jusqu'a
rencontrer le symbole de changement de page (dans mon cas 1=1=) puis
écrire cette page complète dans un fichier temporaire en mémorisant
dans une variable la valeur de la page (par ex 00001), continuer la
lecture ligne par ligne jusqu'au caractère de fin de page, écrire dans
un autre fichier temporaire en mémorisant la variable de la page (par
exemple 00001).
Si les deux variables sont identiques le premier fichier temporaire
est bien un client en 1page il faut donc le recopier dans le fichier
client 1page.
Recopier le 2 iéme fichier temporaire dans le premier fichier
temporaire.
Je m'aperçois que je n'ai même pas le squelette de mon code.
Quelqu'un peut il m'aider à débroussailler ma problèmatique ???

Merci


Bonsoir,

Si ton problème est toujours d'actualité.
Je pense que tu peux te passer d'un des fichiers temporaires. Une chaîne
de caractères devrait pouvoir contenir une page entière (ou si c'est
trop, au moins ce qui suis la marque de fin de page jusqu'au numéro de
la page suivante, mais tu ne précises pas où il se trouve.)

Schématiquement, tu peux traiter ton fichier spool ligne par ligne. Dans
la boucle de traitement, tu peux insérer des actions en fonction de la
ligne courante.

Par exemple :

Si la ligne contient "1=1=", vider le contenu de la chaîne tampon dans
le fichier temporaire et réinitialiser la chaîne tampon.
(la chaîne tampon est une chaîne dans laquelle tu cumules les lignes
lues dans une page)

Si la ligne contient un numéro de page, et si ce numéro de page est 1,
Tu fermes ton fichier temporaire et tu l'ajoutes au fichier
correspondant au numéro de page vu auparavant (cela implique une
variable pour mémoriser le numéro de page) Et tu ouvres à nouveau ton
fichier temporaire. Bien sûr tu mémorises ce numéro de page.

C'est un peu succinct mais tu commences à avoir un peu l'habitude :-)
Mon principe ne gère pas le cas de la première ouverture du fichier
temporaire, ni le cas de la fin du fichier spool.
Il faudra le compléter un peu.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

Avatar
---DGI972---
Dans son message
---DGI972--- nous dit :

Bonjour,

Je doit réaliser un Script pour décortiquer un fichier Spool d'édition
et avant de me lancer dans des lignes de code j'aurais souhaité
discuter de la faisabilité et de la méthode .
Je m'explique:
J'ai un fichier Spool qui contient des pages formatées avec des Noms
Prénoms adresses etc ...
Certaines Clients possédent plusieures pages qui sont numérotées
000001 000002 dans une position fixe dans le fichier.
Le but du Script est de faire un fichier pour les clients 1 pages, 1
fichier pour les clients à 2 Pages etc ...
Je pensais lire le fichier d'entrée (ligne par ligne) jusqu'a
rencontrer le symbole de changement de page (dans mon cas 1=1=) puis
écrire cette page complète dans un fichier temporaire en mémorisant
dans une variable la valeur de la page (par ex 00001), continuer la
lecture ligne par ligne jusqu'au caractère de fin de page, écrire dans
un autre fichier temporaire en mémorisant la variable de la page (par
exemple 00001).
Si les deux variables sont identiques le premier fichier temporaire
est bien un client en 1page il faut donc le recopier dans le fichier
client 1page.
Recopier le 2 iéme fichier temporaire dans le premier fichier
temporaire.
Je m'aperçois que je n'ai même pas le squelette de mon code.
Quelqu'un peut il m'aider à débroussailler ma problèmatique ???

Merci


Bonsoir,

Si ton problème est toujours d'actualité.
Je pense que tu peux te passer d'un des fichiers temporaires. Une chaîne de
caractères devrait pouvoir contenir une page entière (ou si c'est trop, au
moins ce qui suis la marque de fin de page jusqu'au numéro de la page
suivante, mais tu ne précises pas où il se trouve.)

Schématiquement, tu peux traiter ton fichier spool ligne par ligne. Dans la
boucle de traitement, tu peux insérer des actions en fonction de la ligne
courante.

Par exemple :

Si la ligne contient "1=1=", vider le contenu de la chaîne tampon dans le
fichier temporaire et réinitialiser la chaîne tampon.
(la chaîne tampon est une chaîne dans laquelle tu cumules les lignes lues
dans une page)

Si la ligne contient un numéro de page, et si ce numéro de page est 1, Tu
fermes ton fichier temporaire et tu l'ajoutes au fichier correspondant au
numéro de page vu auparavant (cela implique une variable pour mémoriser le
numéro de page) Et tu ouvres à nouveau ton fichier temporaire. Bien sûr tu
mémorises ce numéro de page.

C'est un peu succinct mais tu commences à avoir un peu l'habitude :-)
Mon principe ne gère pas le cas de la première ouverture du fichier
temporaire, ni le cas de la fin du fichier spool.
Il faudra le compléter un peu.


Bonjour,
Oui, mon problème est toujours d'actualité.
Je n'arrive pas a visualiser le fait de découper par un chaine tampon
car une fois que je rencontre la chaine de caractère 1=1 j'ai en
mémoire la totalitée de la page mais je ne sais pas comment est la page
suivante.Il faut faire une sorte de flip flop ??.
Sinon je m'oriente aussi vers l'analyse du numéro de client qui est
unique avec la méthode
Set dic = CreateObject("Scripting.Dictio­nary")
If not dic.Exists(N°CLIENT) Then
dic.Add N°CLIENT,SLine
Si je rencontre le numéros de client plusieurs fois c'est qu'il y a
autand de fois de page (1/3 2/3 3/3 si je rencontre 3 fois le Numéros
de client).
Je pense donc infuencer directement le fichier en recopiant dans le
fichier spool de sortie 00001/00003 pour la 1ère page 00002/00003 et
00003/00003 pour la trosème page.
Je serais capable par la suite de traiter les différentes pages.
Mais je m'avance peut être pour affirmer que si je rencontre plusieur
fois le numéros de client c'est que les pages suivent, de pouvoir
compter le nombre de Numéros de client avec la méthode dic.Add, et via
une chaine tampon de savoir la valeur la prochaine page.
Merci pour le soutien, mais je sens que je vais partir en congé avec le
bébé dans le portable.

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net


Avatar
Fred
Dans le message:,
---DGI972--- écrit:
Dans son message
---DGI972--- nous dit :

Bonjour,

Je doit réaliser un Script pour décortiquer un fichier Spool
d'édition et avant de me lancer dans des lignes de code j'aurais
souhaité discuter de la faisabilité et de la méthode .
Je m'explique:
J'ai un fichier Spool qui contient des pages formatées avec des Noms
Prénoms adresses etc ...
Certaines Clients possédent plusieures pages qui sont numérotées
000001 000002 dans une position fixe dans le fichier.
Le but du Script est de faire un fichier pour les clients 1 pages, 1
fichier pour les clients à 2 Pages etc ...
Je pensais lire le fichier d'entrée (ligne par ligne) jusqu'a
rencontrer le symbole de changement de page (dans mon cas 1=1=) puis
écrire cette page complète dans un fichier temporaire en mémorisant
dans une variable la valeur de la page (par ex 00001), continuer la
lecture ligne par ligne jusqu'au caractère de fin de page, écrire
dans un autre fichier temporaire en mémorisant la variable de la
page (par exemple 00001).
Si les deux variables sont identiques le premier fichier temporaire
est bien un client en 1page il faut donc le recopier dans le fichier
client 1page.
Recopier le 2 iéme fichier temporaire dans le premier fichier
temporaire.
Je m'aperçois que je n'ai même pas le squelette de mon code.
Quelqu'un peut il m'aider à débroussailler ma problèmatique ???

Merci


Bonsoir,

Si ton problème est toujours d'actualité.
Je pense que tu peux te passer d'un des fichiers temporaires. Une
chaîne de caractères devrait pouvoir contenir une page entière (ou
si c'est trop, au moins ce qui suis la marque de fin de page
jusqu'au numéro de la page suivante, mais tu ne précises pas où il
se trouve.) Schématiquement, tu peux traiter ton fichier spool ligne
par ligne.
Dans la boucle de traitement, tu peux insérer des actions en
fonction de la ligne courante.

Par exemple :

Si la ligne contient "1=1=", vider le contenu de la chaîne tampon
dans le fichier temporaire et réinitialiser la chaîne tampon.
(la chaîne tampon est une chaîne dans laquelle tu cumules les lignes
lues dans une page)

Si la ligne contient un numéro de page, et si ce numéro de page est
1, Tu fermes ton fichier temporaire et tu l'ajoutes au fichier
correspondant au numéro de page vu auparavant (cela implique une
variable pour mémoriser le numéro de page) Et tu ouvres à nouveau
ton fichier temporaire. Bien sûr tu mémorises ce numéro de page.

C'est un peu succinct mais tu commences à avoir un peu l'habitude :-)
Mon principe ne gère pas le cas de la première ouverture du fichier
temporaire, ni le cas de la fin du fichier spool.
Il faudra le compléter un peu.


Bonjour,
Oui, mon problème est toujours d'actualité.
Je n'arrive pas a visualiser le fait de découper par un chaine tampon
car une fois que je rencontre la chaine de caractère 1=1 j'ai en
mémoire la totalitée de la page mais je ne sais pas comment est la
page suivante.Il faut faire une sorte de flip flop ??.
Sinon je m'oriente aussi vers l'analyse du numéro de client qui est
unique avec la méthode
Set dic = CreateObject("Scripting.Dictio­nary")
If not dic.Exists(N°CLIENT) Then
dic.Add N°CLIENT,SLine
Si je rencontre le numéros de client plusieurs fois c'est qu'il y a
autand de fois de page (1/3 2/3 3/3 si je rencontre 3 fois le Numéros
de client).
Je pense donc infuencer directement le fichier en recopiant dans le
fichier spool de sortie 00001/00003 pour la 1ère page 00002/00003 et
00003/00003 pour la trosème page.
Je serais capable par la suite de traiter les différentes pages.
Mais je m'avance peut être pour affirmer que si je rencontre plusieur
fois le numéros de client c'est que les pages suivent, de pouvoir
compter le nombre de Numéros de client avec la méthode dic.Add, et via
une chaine tampon de savoir la valeur la prochaine page.
Merci pour le soutien, mais je sens que je vais partir en congé avec
le bébé dans le portable.


Bonjour,
Le scripting est formellement interdit pendant les congés :-)
Fais tourner mon algorithme sur un exemple. Tu devrais constater les
points suivants :
- dans la chaîne ne figure que la page en cours de lecture.
- dans le fichier temporaire ne figurent que les pages précédentes.
Le principe est donc : si dans la chaîne (page en cours de lecture) on
détecte que le numéro de pages est 1, alors ce qui figure dans le
fichier temporaire concerne un lot de pages complet et prêt à être
archiver en fonction de nombre de ses pages. (sauf pour la première
page)
Auquel cas on vide le fichier temporaire. La rencontre du prochain saut
de page aura pour effet de remplir ce fichier temporaire avec ce que
contient la chaîne, c'est-à-dire la première page d'un nouveau lot.
Si le numéro de page n'est pas 1, on continue la lecture et la rencontre
du prochain saut de page aura pour effet d'ajouter la page en cours
(chaîne) à la fin du fichier temporaire.
Penser à vider la chaîne dans le fichier temporaire à la fin du fichier
spool et copier le fichier temporaire dans le bon lot.
Si j'ai un moment ce soir et que tu n'as pas trouvé de solution,
j'écrirai cela de manière un peu plus complète.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT



Avatar
---DGI972---
Fred a émis l'idée suivante :
Dans le message:,
---DGI972--- écrit:
Dans son message
---DGI972--- nous dit :

Bonjour,

Je doit réaliser un Script pour décortiquer un fichier Spool
d'édition et avant de me lancer dans des lignes de code j'aurais
souhaité discuter de la faisabilité et de la méthode .
Je m'explique:
J'ai un fichier Spool qui contient des pages formatées avec des Noms
Prénoms adresses etc ...
Certaines Clients possédent plusieures pages qui sont numérotées
000001 000002 dans une position fixe dans le fichier.
Le but du Script est de faire un fichier pour les clients 1 pages, 1
fichier pour les clients à 2 Pages etc ...
Je pensais lire le fichier d'entrée (ligne par ligne) jusqu'a
rencontrer le symbole de changement de page (dans mon cas 1=1=) puis
écrire cette page complète dans un fichier temporaire en mémorisant
dans une variable la valeur de la page (par ex 00001), continuer la
lecture ligne par ligne jusqu'au caractère de fin de page, écrire
dans un autre fichier temporaire en mémorisant la variable de la
page (par exemple 00001).
Si les deux variables sont identiques le premier fichier temporaire
est bien un client en 1page il faut donc le recopier dans le fichier
client 1page.
Recopier le 2 iéme fichier temporaire dans le premier fichier
temporaire.
Je m'aperçois que je n'ai même pas le squelette de mon code.
Quelqu'un peut il m'aider à débroussailler ma problèmatique ???

Merci


Bonsoir,

Si ton problème est toujours d'actualité.
Je pense que tu peux te passer d'un des fichiers temporaires. Une
chaîne de caractères devrait pouvoir contenir une page entière (ou
si c'est trop, au moins ce qui suis la marque de fin de page
jusqu'au numéro de la page suivante, mais tu ne précises pas où il
se trouve.) Schématiquement, tu peux traiter ton fichier spool ligne par
ligne.
Dans la boucle de traitement, tu peux insérer des actions en
fonction de la ligne courante.

Par exemple :

Si la ligne contient "1=1=", vider le contenu de la chaîne tampon
dans le fichier temporaire et réinitialiser la chaîne tampon.
(la chaîne tampon est une chaîne dans laquelle tu cumules les lignes
lues dans une page)

Si la ligne contient un numéro de page, et si ce numéro de page est
1, Tu fermes ton fichier temporaire et tu l'ajoutes au fichier
correspondant au numéro de page vu auparavant (cela implique une
variable pour mémoriser le numéro de page) Et tu ouvres à nouveau
ton fichier temporaire. Bien sûr tu mémorises ce numéro de page.

C'est un peu succinct mais tu commences à avoir un peu l'habitude :-)
Mon principe ne gère pas le cas de la première ouverture du fichier
temporaire, ni le cas de la fin du fichier spool.
Il faudra le compléter un peu.


Bonjour,
Oui, mon problème est toujours d'actualité.
Je n'arrive pas a visualiser le fait de découper par un chaine tampon
car une fois que je rencontre la chaine de caractère 1=1 j'ai en
mémoire la totalitée de la page mais je ne sais pas comment est la
page suivante.Il faut faire une sorte de flip flop ??.
Sinon je m'oriente aussi vers l'analyse du numéro de client qui est
unique avec la méthode
Set dic = CreateObject("Scripting.Dictio­nary")
If not dic.Exists(N°CLIENT) Then
dic.Add N°CLIENT,SLine
Si je rencontre le numéros de client plusieurs fois c'est qu'il y a
autand de fois de page (1/3 2/3 3/3 si je rencontre 3 fois le Numéros
de client).
Je pense donc infuencer directement le fichier en recopiant dans le
fichier spool de sortie 00001/00003 pour la 1ère page 00002/00003 et
00003/00003 pour la trosème page.
Je serais capable par la suite de traiter les différentes pages.
Mais je m'avance peut être pour affirmer que si je rencontre plusieur
fois le numéros de client c'est que les pages suivent, de pouvoir
compter le nombre de Numéros de client avec la méthode dic.Add, et via
une chaine tampon de savoir la valeur la prochaine page.
Merci pour le soutien, mais je sens que je vais partir en congé avec
le bébé dans le portable.


Bonjour,
Le scripting est formellement interdit pendant les congés :-)
Fais tourner mon algorithme sur un exemple. Tu devrais constater les points
suivants :
- dans la chaîne ne figure que la page en cours de lecture.
- dans le fichier temporaire ne figurent que les pages précédentes.
Le principe est donc : si dans la chaîne (page en cours de lecture) on
détecte que le numéro de pages est 1, alors ce qui figure dans le fichier
temporaire concerne un lot de pages complet et prêt à être archiver en
fonction de nombre de ses pages. (sauf pour la première page)
Auquel cas on vide le fichier temporaire. La rencontre du prochain saut de
page aura pour effet de remplir ce fichier temporaire avec ce que contient la
chaîne, c'est-à-dire la première page d'un nouveau lot.
Si le numéro de page n'est pas 1, on continue la lecture et la rencontre du
prochain saut de page aura pour effet d'ajouter la page en cours (chaîne) à
la fin du fichier temporaire.
Penser à vider la chaîne dans le fichier temporaire à la fin du fichier spool
et copier le fichier temporaire dans le bon lot.
Si j'ai un moment ce soir et que tu n'as pas trouvé de solution, j'écrirai
cela de manière un peu plus complète.


Bonjour,
Ok message reçu pour le Scripting, mais l'édition est réalisée tous les
mois 20 000 pages et c'est à la main que j'ai trié toutes les pages 1/1
ensembles, 1/2 et 2/2 ensembles et que mes collèques que me disent tu
peux rien faire en informatique pour nous aider, en plus je les voir
venir, ils me parlent déjà de trie par code postal (en plus l'affaire a
déjà une suite) et d'aprés un certain M Bellamy En informatique tout
est possible mais ce n'est pas toujours évident.... (Sauf que je suis
en Electronicien de base tombé dans l'informatique)
J'ai commencé a écrire 3 lignes pour voir comment cela se comporte:
(Le code ne fonctionne pas c'est un squelette)


Dim fso, objShell, NUMP, X, Y, Z, F1, F2, F3, Ligne ,LigneOK, page2,
F5, StrIn

Set fso = CreateObject("Scripting.FileSystemObject")
Set objShell = CreateObject("WScript.Shell")
Set F1 = fso.OpenTextFile("C:EDITIONSGDATASGEDGPCLE", 1)' fichier
d'entrée
Set F2 = fso.OpenTextFile("C:EDITIONSGDATASGEDGP1P", 2,True) '
fichier de sortie 1Page
Set F3 = fso.OpenTextFile("C:EDITIONSGDATASG1.tmp", 2,True)''
fichier de sortie Temporaire

Do While not F1.AtEndOfStream
SLigne = F1.ReadLine

Do until If Mid(Ligne,2,4)="1=1"
F3.WriteLine SLigne
loop

If Mid(SLigne,1,5)="00001" Then 'si = 00001 c'est la ligne qui contient
le N°client et le N° de page
Z=Mid(Ligne,14,11) 'Z= N°Client
NUMP=Mid(SLigne,50,5) 'NUMP = Numéros de page
Set F2 = fso.OpenTextFile("C:EDITIONSGDATABFMEGP1P", 2,
True)'fichier de sortie 1Pag
End If


F1.Close
F2.Close
F3.Close
Set fso = Nothing
Set objShell = Nothing
Set objShell =Nothing

Comment faire un ReadAll est est avoir dans une variable une valeur
dans une certaine ligne ?
La fabrication de la chaîne est elle de la forme
SLigne = F1.ReadLine
SLigne = SLigne & SLigne
C'est quoi le différence entre
Set F1 = fso.OpenTextFile("C:EDITIONSGDATASGEDGPCLE", 1)
Set F2 = fso.OpenTextFile("C:EDITIONSGDATASGEDGP1P", 2,True)
le 1 c'est la lecture, le 2 c'est l'écriture mais le True, faut il le
mettre d'office ?
Merci encore

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net




Avatar
Fred
Dans le message:,
---DGI972--- écrit:
Fred a émis l'idée suivante :
Dans le message:,
---DGI972--- écrit:
Dans son message
---DGI972--- nous dit :

[...]





Bonjour,
Je jette un oeil ce soir, promis.
En attendant, j'aurais besoin d'une petite précision.
Sur la ligne qui contient la marque de fin de document. Y a-t-il des
données, après la marque, qui devraient être intégrées dans la page
suivante ?
Ou bien est-ce que cette ligne toute entière peut-être considérée comme
la dernière de la page ?

Pour le reste je devrais y voir assez clair avec ton bout de code.

A plus tard.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT




Avatar
---DGI972---
Fred a émis l'idée suivante :
Dans le message:,
---DGI972--- écrit:
Fred a émis l'idée suivante :
Dans le message:,
---DGI972--- écrit:
Dans son message
---DGI972--- nous dit :

[...]





Bonjour,
Je jette un oeil ce soir, promis.
En attendant, j'aurais besoin d'une petite précision.
Sur la ligne qui contient la marque de fin de document. Y a-t-il des données,
après la marque, qui devraient être intégrées dans la page suivante ?
Ou bien est-ce que cette ligne toute entière peut-être considérée comme la
dernière de la page ?

Pour le reste je devrais y voir assez clair avec ton bout de code.

A plus tard.


Chaque page commence par 1=1
Ex: Mr TOTO a 2 pages et Mr TINTIN 1 seul page.

1=1
00001128477700122477700 CPT051P120050220000001000001 26
P10676222260

MR TOTO

Rue TATA

91000 TITI
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1=1
00001128477700122477700 CPT051P120050220000001000002 26
P10676222260

MR TOTO

Rue TATA

91000 TITI
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1=1
00001128477700123499900 CPT051P120050230000001000001 26
P10699222360

MR TINTIN

Rue MILOU

92000 HADOCK
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Merci





Avatar
---DGI972---
Fred a présenté l'énoncé suivant :
Dans le message:,
---DGI972--- écrit:
Fred a émis l'idée suivante :
Dans le message:,
---DGI972--- écrit:
Fred a émis l'idée suivante :
Dans le message:,
---DGI972--- écrit:
Dans son message
---DGI972--- nous dit :

[...]






Chaque page commence par 1=1
Ex: Mr TOTO a 2 pages et Mr TINTIN 1 seul page.

1=1


Là, je ne sais pas si la ligne est complétée avec des blancs dans le fichier
original
Il faudra peut-être modifier le test suivant dans le programme :
8<-----------
If Instr(sLine, "1=1") = 1 And Len(sLine) = 3 Then
8<------------

00001128477700122477700 CPT051P120050220000001000001 26
P10676222260

MR TOTO

Rue TATA

91000 TITI
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1=1
00001128477700122477700 CPT051P120050220000001000002 26
P10676222260

MR TOTO

Rue TATA

91000 TITI
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1=1
00001128477700123499900 CPT051P120050230000001000001 26
P10699222360

MR TINTIN

Rue MILOU

92000 HADOCK
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Merci


Finalement j'ai fait un programme qui fonctionne avec ton exemple.
Il devrait y avoir peu de choses à modifier si cela ne fonctionne pas en
grandeur nature.
Je le mets en pièce jointe pour éviter les coupures de lignes intempestives.
Bonne vacances :-)


Fred,
Un grand, trés grand merci
C'est exactement ce que je voulais.
merci







Avatar
---DGI972---
Fred a présenté l'énoncé suivant :
Dans le message:,
---DGI972--- écrit:
Fred a émis l'idée suivante :
Dans le message:,
---DGI972--- écrit:
Fred a émis l'idée suivante :
Dans le message:,
---DGI972--- écrit:
Dans son message
---DGI972--- nous dit :

[...]






Chaque page commence par 1=1
Ex: Mr TOTO a 2 pages et Mr TINTIN 1 seul page.

1=1


Là, je ne sais pas si la ligne est complétée avec des blancs dans le
fichier original
Il faudra peut-être modifier le test suivant dans le programme :
8<-----------
If Instr(sLine, "1=1") = 1 And Len(sLine) = 3 Then
8<------------

00001128477700122477700 CPT051P120050220000001000001 26
P10676222260

MR TOTO

Rue TATA

91000 TITI
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1=1
00001128477700122477700 CPT051P120050220000001000002 26
P10676222260

MR TOTO

Rue TATA

91000 TITI
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
1=1
00001128477700123499900 CPT051P120050230000001000001 26
P10699222360

MR TINTIN

Rue MILOU

92000 HADOCK
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Merci


Finalement j'ai fait un programme qui fonctionne avec ton exemple.
Il devrait y avoir peu de choses à modifier si cela ne fonctionne pas en
grandeur nature.
Je le mets en pièce jointe pour éviter les coupures de lignes
intempestives.
Bonne vacances :-)


Fred,
Un grand, trés grand merci
C'est exactement ce que je voulais.
merci


Je pousse le bouchon plus loin:

Un trie par code postal Position 75 lg 5 dans la ligne qui commence par
"00001" est ce possible même dans chaque fichier de sortie SGEDGP1
SGEDGP2 etc ???
Je sais trier d'aprés une extraction de zone mais uniquement ligne par
ligne et à condition que les lignes soient de structures identiques (
Bref pas dans le cas présent ).
Je suis en vacances à partir de Vendredi et pas de Scripting en vue,
vue que vous m'avez déjà tout fait.
Encore bravo, je reste fasciné par la puissance du VbScript avec 20
lignes de code (et surtout le savoir faire William Saurin).

Gilles

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net








Avatar
Fred
Dans son message
---DGI972--- nous dit :
[...]

Fred,
Un grand, trés grand merci
C'est exactement ce que je voulais.
merci


Je pousse le bouchon plus loin:

Un trie par code postal Position 75 lg 5 dans la ligne qui commence
par "00001" est ce possible même dans chaque fichier de sortie SGEDGP1
SGEDGP2 etc ???
Je sais trier d'aprés une extraction de zone mais uniquement ligne
par ligne et à condition que les lignes soient de structures
identiques ( Bref pas dans le cas présent ).
Je suis en vacances à partir de Vendredi et pas de Scripting en vue,
vue que vous m'avez déjà tout fait.
Encore bravo, je reste fasciné par la puissance du VbScript avec 20
lignes de code (et surtout le savoir faire William Saurin).

Gilles


Bonjour,
Là cela se corse un peu tout de même !
Je pense que cela est faisable complètement en vbs, mais je doute qu'on
puisse l'écrire en 20 lignes cette fois.
Je te propose une autre idée, peut-être un peu capilotractée, mais qui
devrait fonctionner.

Dans l'algorithme, à un moment donné, on ajoute le fichier temporaire à
un autre fichier en fonction du nombre de pages.
A la place, je te propose d'enregistrer ce même fichier temporaire avec
un nom bien formaté, présentant toutes tes clés de tri dans l'ordre (je
me méfie, que vas-tu demander après les codes postaux :-D ?)
En fait, et plus clairement, chaque client aura son fichier avec un nom
du style : SGEDGPn_cccccc_xxxxx etc ...
où n est le nombre de pages, cccccc le code postal et xxxxxx une autre
info rendant unique le fichier (un code client peut-être ?)
Il faut simplement dans le programme, que tu ajoutes les variables qui
récupèrent le code postal et xxxxxx

Ensuite, les commandes :
DIR SGEDGP1* /B > Fichiers1page.txt
DIR SGEDGP2* /B > Fichiers2pages.txt
...
Vont te créer des fichiers qui contiennent les noms des fichiers client
par ordre alphabétique (donc par codes postaux). A toi de les relire et
de les concaténer pour créer SGEDGP1, SGEDGP2, etc ....

Tu peux aussi utiliser la commande
DIR SGEDGP* /B > TousLesFichiers.txt

Dans la liste tu auras d'abord les clients à 1 page, puis les clients à
2 pages, etc ...

Voilà, tu devrais pouvoir mettre cela en place.
1 - modification du programme actuel
2 - écriture d'un autre petit programme pour remettre bout à bout tous
les fichiers client.

Je te laisse chercher un peu avant d'écrire quelque chose ? ;-)
A plus tard.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
---DGI972---
Fred vient de nous annoncer :
Dans son message
---DGI972--- nous dit :
[...]

Fred,
Un grand, trés grand merci
C'est exactement ce que je voulais.
merci


Je pousse le bouchon plus loin:

Un trie par code postal Position 75 lg 5 dans la ligne qui commence
par "00001" est ce possible même dans chaque fichier de sortie SGEDGP1
SGEDGP2 etc ???
Je sais trier d'aprés une extraction de zone mais uniquement ligne
par ligne et à condition que les lignes soient de structures
identiques ( Bref pas dans le cas présent ).
Je suis en vacances à partir de Vendredi et pas de Scripting en vue,
vue que vous m'avez déjà tout fait.
Encore bravo, je reste fasciné par la puissance du VbScript avec 20
lignes de code (et surtout le savoir faire William Saurin).

Gilles


Bonjour,
Là cela se corse un peu tout de même !
Je pense que cela est faisable complètement en vbs, mais je doute qu'on
puisse l'écrire en 20 lignes cette fois.
Je te propose une autre idée, peut-être un peu capilotractée, mais qui
devrait fonctionner.

Dans l'algorithme, à un moment donné, on ajoute le fichier temporaire à un
autre fichier en fonction du nombre de pages.
A la place, je te propose d'enregistrer ce même fichier temporaire avec un
nom bien formaté, présentant toutes tes clés de tri dans l'ordre (je me
méfie, que vas-tu demander après les codes postaux :-D ?)
En fait, et plus clairement, chaque client aura son fichier avec un nom du
style : SGEDGPn_cccccc_xxxxx etc ...
où n est le nombre de pages, cccccc le code postal et xxxxxx une autre info
rendant unique le fichier (un code client peut-être ?)
Il faut simplement dans le programme, que tu ajoutes les variables qui
récupèrent le code postal et xxxxxx

Ensuite, les commandes :
DIR SGEDGP1* /B > Fichiers1page.txt
DIR SGEDGP2* /B > Fichiers2pages.txt
...
Vont te créer des fichiers qui contiennent les noms des fichiers client par
ordre alphabétique (donc par codes postaux). A toi de les relire et de les
concaténer pour créer SGEDGP1, SGEDGP2, etc ....

Tu peux aussi utiliser la commande
DIR SGEDGP* /B > TousLesFichiers.txt

Dans la liste tu auras d'abord les clients à 1 page, puis les clients à 2
pages, etc ...

Voilà, tu devrais pouvoir mettre cela en place.
1 - modification du programme actuel
2 - écriture d'un autre petit programme pour remettre bout à bout tous les
fichiers client.

Je te laisse chercher un peu avant d'écrire quelque chose ? ;-)
A plus tard.


Bonjour,
Faute d'ouragan je me suis penché sur la méthode tiré par les cheuveux
(Excellent je ne connaissais pas cette expression, pas du tout utilisée
aux antilles !!!).
J'ai rajouté la variable code postal dans le code que vous m'avez
fourni:

Sub AppendTempFile(iPageCount)
Set oBase = oFSO.OpenTextFile(sPath & sDstFileName & iPageCount &
iCodePostal, ForAppending, True, TristateFalse)
Set oTmp = oFSO.OpenTextFile(sPath & sTmpFileName, ForReading, False,
TristateFalse)
oBase.Write oTmp.ReadAll
oBase.Close
oTmp.Close
End Sub

If Left(sLine, 5) = "00001" Then
iPageNum = CInt(Mid(sLine, 50, 5))
iCodePostal = Mid(sline, 75, 5)
If iPrevPage <> 0 And iPageNum = 1 Then
oTmpTextStream.Close
AppendTempFile iPrevPage
Set oTmpTextStream = oFSO.OpenTextFile(sPath & sTmpFileName,
ForWriting, True, TristateFalse)
End If
iPrevPage = iPageNum
End if

J'obtiens donc en sortie un gloubilboulga dans un fichier texte.
J'essaye d'analyser cela et je vous tiens au courant, mais cela m'a
l'air trés mal partie.
Gilles

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net



1 2