Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
842 connectés 

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  traitement de texte en masse

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

traitement de texte en masse

n°2085044
Krapaud
Modérateur
Posté le 05-07-2005 à 16:49:42  profilanswer
 

le titre du sujet est explicite, désolé j'ai pas trouvé mieux.
 
En fait j'ai un problème :  
 
j'ai un fichier excel de quelques miliers de lignes formaté de la façon suivante :  
 


blablabla
          doudoudou     1     dodo     xxxxx     tatata     0000000000
          doudoudou     1     dodo     xxxxx     tatata     0000000000
          doudoudou     1     dodo     xxxxx     tatata     0000000000
blublublu
          doudoudou     1     dodo     xxxxx     tatata     0000000000
          doudoudou     1     dodo     xxxxx     tatata     0000000000
          doudoudou     1     dodo     xxxxx     tatata     0000000000


 
Tout ça dans un document excel
 
Je souhaite obtenir le résultat suivant :  
 


blablabla
          doudoudou      
          1 dodo xxxxx tatata
          0000000000
 
          doudoudou      
          1 dodo xxxxx tatata
          0000000000
 
          doudoudou      
          1 dodo xxxxx tatata
          0000000000
 
blublublu
 
          doudoudou      
          1 dodo xxxxx tatata
          0000000000
 
          doudoudou      
          1 dodo xxxxx tatata
          0000000000
 
          doudoudou      
          1 dodo xxxxx tatata
          0000000000


 
Mais la blague c'est que je veux cette disposition pour toutes les lignes, sans que ça apparaisse dans un tableau, grosso modo un truc au kilomètre quoi.
 
Pour le passage de excel (tableau) vers du word (sans tableau) je suis passé par un fichier CSV (avec openoffice) et j'ai donc une mise en page valable dans word.
 
Maintenant si je veux ma 'bonne' disposition je prends textpad et je me farçis toutes les lignes les unes après les autres.
 
Vous ne connaitriez pas une méthode plus rapide?
 
Merci!

mood
Publicité
Posté le 05-07-2005 à 16:49:42  profilanswer
 

n°2085071
Krapaud
Modérateur
Posté le 05-07-2005 à 17:16:21  profilanswer
 

[:sisicaivrai]

n°2085114
wackevat
Posté le 05-07-2005 à 17:50:23  profilanswer
 

Bonsoir,
 
Tu as besoin d'apprendre un langage de programmation : il y a un forum http://forum.hardware.fr/hardwaref [...] _sujet.htm
 
Si tu connais plus ou moins les expressions régulières, Editpad (Pro - 30 jours d'essaie) peut t'aider.

n°2085162
Krapaud
Modérateur
Posté le 05-07-2005 à 18:25:02  profilanswer
 

en fait je ne vois pas le rapport avec la programmation : je ne vais pas pondre un soft en turbopascal pour parcourir mon fichier, d'autant qu'il n'y a pas une ligne identique, et qu'il n'y a pas un mot identique, que les coupures ne sont pas toutes au même endroit...

n°2085168
wackevat
Posté le 05-07-2005 à 18:30:07  profilanswer
 

Pas un soft mais un script.
 
Et puis pas de mot identique mais il doit y avoir un certain "format", parce que sinon je ne vois pas comment tu peux t'en sortir :)


Message édité par wackevat le 05-07-2005 à 18:31:21
n°2085298
Papy Octet
Posté le 05-07-2005 à 20:48:33  profilanswer
 

Pas évident ton truc.
Tu n'aurais pas Access par hazard ? Parce qu'alors ce serait très facile à faire.
 
Je bosse sur ton problème, mais en VBA dans Excel.
Je reviens demain.
 
A+

n°2085364
Deadlock
Feck off, cup !
Posté le 05-07-2005 à 22:06:04  profilanswer
 

Au niveau de la structure, tu as bien une ligne avec un seul champ suivie de plusieures lignes comportant X champs ?


Message édité par Deadlock le 05-07-2005 à 22:23:17

---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
n°2085384
Deadlock
Feck off, cup !
Posté le 05-07-2005 à 22:22:08  profilanswer
 

Si c'est le cas, tu installes Cygwin ou n'importe quel package permettant d'utiliser la commande AWK (ou NAWK, GAWK, ...) sous windows et tu peux faire ça en une simple commande:
 
$ cat input.txt

blablabla
          doudoudo1     1     dodo1    xxxx1     tatat1     0000000001
          doudoudo2     2     dodo2    xxxx2     tatat2     0000000002
          doudoudo3     3     dodo3    xxxx3     tatat3     0000000003
blublublu
          doudoudo4     4     dodo4    xxxx4     tatat4     0000000004
          doudoudo5     5     dodo5    xxxx5     tatat5     0000000005
          doudoudo6     6     dodo6    xxxx6     tatat6     0000000006


 
$  awk 'NF == 1 { print $0 ; next } { print "\t"$1"\n\t"$2" "$3" "$4" "$5"\n\t"$6"\n" }' input.txt

blablabla
        doudoudo1
        1 dodo1 xxxx1 tatat1
        0000000001
 
        doudoudo2
        2 dodo2 xxxx2 tatat2
        0000000002
 
        doudoudo3
        3 dodo3 xxxx3 tatat3
        0000000003
 
blublublu
        doudoudo4
        4 dodo4 xxxx4 tatat4
        0000000004
 
        doudoudo5
        5 dodo5 xxxx5 tatat5
        0000000005
 
        doudoudo6
        6 dodo6 xxxx6 tatat6
        0000000006


 
C'est la méthode la plus simple et la plus rapide ... car AWK est fait pour ce genre de traitement.
Comme dans ton exemple je ne sais pas si tu veux une ligne vierge entre la première et la seconde (tes deux exemples sont différents) tu peux ajouter cette ligne en remplaçant le { print $0 ; next } par { print $0"\n" ; next }


Message édité par Deadlock le 05-07-2005 à 22:30:37

---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
n°2085486
Krapaud
Modérateur
Posté le 05-07-2005 à 23:32:35  profilanswer
 

wackevat a écrit :

Pas un soft mais un script.
 
Et puis pas de mot identique mais il doit y avoir un certain "format", parce que sinon je ne vois pas comment tu peux t'en sortir :)


oui, le format que j'ai indiqué juste au dessus :)

n°2085487
Krapaud
Modérateur
Posté le 05-07-2005 à 23:32:46  profilanswer
 

Papy Octet a écrit :

Pas évident ton truc.
Tu n'aurais pas Access par hazard ? Parce qu'alors ce serait très facile à faire.
 
Je bosse sur ton problème, mais en VBA dans Excel.
Je reviens demain.
 
A+


 
 
je t'en remercie :jap:

mood
Publicité
Posté le 05-07-2005 à 23:32:46  profilanswer
 

n°2085488
Krapaud
Modérateur
Posté le 05-07-2005 à 23:33:27  profilanswer
 

Deadlock a écrit :

Si c'est le cas, tu installes Cygwin ou n'importe quel package permettant d'utiliser la commande AWK (ou NAWK, GAWK, ...) sous windows et tu peux faire ça en une simple commande:
 
$ cat input.txt

blablabla
          doudoudo1     1     dodo1    xxxx1     tatat1     0000000001
          doudoudo2     2     dodo2    xxxx2     tatat2     0000000002
          doudoudo3     3     dodo3    xxxx3     tatat3     0000000003
blublublu
          doudoudo4     4     dodo4    xxxx4     tatat4     0000000004
          doudoudo5     5     dodo5    xxxx5     tatat5     0000000005
          doudoudo6     6     dodo6    xxxx6     tatat6     0000000006


 
$  awk 'NF == 1 { print $0 ; next } { print "\t"$1"\n\t"$2" "$3" "$4" "$5"\n\t"$6"\n" }' input.txt

blablabla
        doudoudo1
        1 dodo1 xxxx1 tatat1
        0000000001
 
        doudoudo2
        2 dodo2 xxxx2 tatat2
        0000000002
 
        doudoudo3
        3 dodo3 xxxx3 tatat3
        0000000003
 
blublublu
        doudoudo4
        4 dodo4 xxxx4 tatat4
        0000000004
 
        doudoudo5
        5 dodo5 xxxx5 tatat5
        0000000005
 
        doudoudo6
        6 dodo6 xxxx6 tatat6
        0000000006


 
C'est la méthode la plus simple et la plus rapide ... car AWK est fait pour ce genre de traitement.
Comme dans ton exemple je ne sais pas si tu veux une ligne vierge entre la première et la seconde (tes deux exemples sont différents) tu peux ajouter cette ligne en remplaçant le { print $0 ; next } par { print $0"\n" ; next }


 
 
j'ai un linux a mes cotés, je vais tester ça dès mon arrivée au taf  [:plat00n]

n°2085490
Krapaud
Modérateur
Posté le 05-07-2005 à 23:34:19  profilanswer
 

par contre deadlock, tu pourrais m'expliquer le fonctionnement de ta ligne de commande s'il te plait? :jap:

n°2085598
Deadlock
Feck off, cup !
Posté le 06-07-2005 à 08:22:42  profilanswer
 

Krapaud a écrit :

par contre deadlock, tu pourrais m'expliquer le fonctionnement de ta ligne de commande s'il te plait? :jap:

C'est assez basic comme AWK. AWK fait du traitement séquentiel sur des fichiers texte. Il commence par la première ligne et applique les règles définies ligne par ligne. $0 représente la ligne complète, $1 à $n représentent les champs de cette ligne séparés par la variable FS (Field separator) qui par défaut utilise l'espace ou la TAB, FS n'est donc pas renseigné dans cet exemple car induit. NF retourne le nombre de champs dans la ligne en cours ($0).
La commande que je t'ai donnée est un simple IF ... THEN ... ELSE
 
NF == 1 -> Si le nombre de champs est égal à 1
{ print $0 ; next } -> Alors affiche la ligne complète et passe à la suivante
{ print "\t"$1"\n\t"$2" "$3" "$4" "$5"\n\t"$6"\n" } -> Dans le cas contraire (nombre de champs différent de 1) affiche une TAB + champ1 + CR + TAB + champ2 + SPC + champ3 + SPC + champ4 + SPC + champ5 + CR + TAB + champ6 + CR
 
Et ainsi de suite ...
Mais encore une fois c'est un AWK des plus simples, le AWK est proche du C avec des clauses BEGIN/END, des tableaux multi-dim, des boucles, traitment NUM/STR, incrémentations (i++, ++i, i--, ...) etc, etc, ...


Message édité par Deadlock le 06-07-2005 à 08:25:50

---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
n°2085889
Krapaud
Modérateur
Posté le 06-07-2005 à 12:49:04  profilanswer
 

je nai qu'une chose à dire :  [:plat00n]  [:plat00n]  [:plat00n]  [:plat00n]  [:plat00n]  [:plat00n]  
 
ça marche presque, j'ai une ou deux modifs à faire mais c'est ça :o

n°2085891
Krapaud
Modérateur
Posté le 06-07-2005 à 12:50:27  profilanswer
 

par contre ça me supprime des éléments :o

n°2085897
Deadlock
Feck off, cup !
Posté le 06-07-2005 à 12:53:30  profilanswer
 

Si tu as des exceptions (lignes vides, test sur certains champs, ...) donne les moi et je les prendrais en compte. Ca peut être utile si tu dois faire ce traitement plusieures fois.


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
n°2085898
Deadlock
Feck off, cup !
Posté le 06-07-2005 à 12:54:23  profilanswer
 

Krapaud a écrit :

par contre ça me supprime des éléments :o

Ah bon ? Ton exemple ne dois pas être suffisant pour déduire la structure alors.


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
n°2085906
Krapaud
Modérateur
Posté le 06-07-2005 à 12:58:59  profilanswer
 

ok, je vais te donner un exemple

n°2085909
Deadlock
Feck off, cup !
Posté le 06-07-2005 à 13:00:51  profilanswer
 

En fait je ne pense pas qu'il supprime des éléments mais si une ligne vierge est présente dans le fichier source celà va afficher 4 lignes vides (comme s'il manquait un élément). Tu peux ajouter un test au début pour éviter ça:
 
awk 'length($0) == 0 { next } NF == 1 { print $0 ; next } { print "\t"$1"\n\t"$2" "$3" "$4" "$5"\n\t"$6"\n" }' input.txt


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
n°2085910
Krapaud
Modérateur
Posté le 06-07-2005 à 13:00:52  profilanswer
 

comme je te le disais, y'a un gros problème de mise en forme dans le document :  
 


Administrateurs de biens - syndics de copropriétés      
 SYNDICAT DES COPROPRIETAIRES LA CHAUMIIERE 71  route  du Pavé Blanc 01 46 32 75 22
 LAFERRIERE ANJUERE (Administrareur de Biens) 3  Rue Louis Dupont 01.46.42.41.65
Agences de voyage      
 CLEF DES VOYAGES (agréé Club Med) 4  Villa Cour Creuse 01.46.45.24.24
 LE MAS DES COLOMBES 134  rue  d'Estienne d Orves 01.46.62.06.02
 THOMAS COOK VOYAGES 17 bis avenue Jean Jaurès 01.55.95.04.90
 SELECTOUR METAYER VOYAGES 200 bis avenue Jean Jaurès 01.46.45.00.00
 AMBIANCES VACANCES 4  place Maurice Gunsbourg 01.46.45.00.89


Message édité par Krapaud le 06-07-2005 à 13:01:28
n°2085913
Krapaud
Modérateur
Posté le 06-07-2005 à 13:02:26  profilanswer
 

Deadlock a écrit :

En fait je ne pense pas qu'il supprime des éléments mais si une ligne vierge est présente dans le fichier source celà va afficher 4 lignes vides (comme s'il manquait un élément). Tu peux ajouter un test au début pour éviter ça:
 
awk 'length($0) == 0 { next } NF == 1 { print $0 ; next } { print "\t"$1"\n\t"$2" "$3" "$4" "$5"\n\t"$6"\n" }' input.txt


 
 
sisi, il supprime des éléments, par exemple, un truc qui commence par LA POSTE va se transformer en OSTE :??:
 

n°2085914
Krapaud
Modérateur
Posté le 06-07-2005 à 13:03:57  profilanswer
 

désolé pour le spoiler mais j'ai pas le choix :D
 
sinon comme tu peux le constater :  
- les catégories peuvent contenir des espaces
- les numéros de téléphone sont soit séparés par des points, soit par des espaces
- les adresses peuvent contenir un "bis" "b" ou autre truc du genre :o

n°2085921
Deadlock
Feck off, cup !
Posté le 06-07-2005 à 13:08:05  profilanswer
 

Krapaud a écrit :

désolé pour le spoiler mais j'ai pas le choix :D
 
sinon comme tu peux le constater :  
- les catégories peuvent contenir des espaces
- les numéros de téléphone sont soit séparés par des points, soit par des espaces
- les adresses peuvent contenir un "bis" "b" ou autre truc du genre :o

Ah ben ouais on est loin de l'exemple dans ce cas ... tu as des champs de taille variable et surtout avec un nombre de mots non-statique :/
Tu sais pas le générer depuis Excel avec des séparateurs fixes (la virgule ou le point virgule) ?


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
n°2085925
Deadlock
Feck off, cup !
Posté le 06-07-2005 à 13:10:03  profilanswer
 

Tu veux mon mail (MP) pour m'envoyer un morceau de fichier valide ? Parce qu'à faire du copy/paste ça bouffe les TAB et les transforme en SPC souvent ...
Je te fais ça dans l'après-midi j'ai un peu de temps aujourd'hui ;)


---------------
Institutions européennes: Ensemble d'outils dont le but est de transformer une grande quantité d'argent en merde. Cette merde est utilisée pour créer de nouveaux fonctionnaires. L'argent restant payant des externes pour faire leur travail.
n°2086057
Krapaud
Modérateur
Posté le 06-07-2005 à 14:49:16  profilanswer
 

Deadlock a écrit :

Ah ben ouais on est loin de l'exemple dans ce cas ... tu as des champs de taille variable et surtout avec un nombre de mots non-statique :/
Tu sais pas le générer depuis Excel avec des séparateurs fixes (la virgule ou le point virgule) ?


si, aucun problème pour ça :)

n°2086060
Krapaud
Modérateur
Posté le 06-07-2005 à 14:49:38  profilanswer
 

Deadlock a écrit :

Tu veux mon mail (MP) pour m'envoyer un morceau de fichier valide ? Parce qu'à faire du copy/paste ça bouffe les TAB et les transforme en SPC souvent ...
Je te fais ça dans l'après-midi j'ai un peu de temps aujourd'hui ;)


ah je veux bien si ça ne te dérange pas :jap:

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Windows & Software
  Logiciels

  traitement de texte en masse

 

Sujets relatifs
Texte manuscrit sur tablette graphique --> fichier TXT ??fichier texte
[IE] probleme pour entrer du texte - virus??TELE 2 RESILIONS EN MASSE
Recherche d'un logiciel pour traitement d'une base de donnéOuvrir un gros fichier texte sous windows...Quel soft ?
Powerpoint : faire défiler un texte dans une zone...Recherche de logiciel de traitement audio
"dicter son texte" ==> quel programme?Un soft qui permet de coller du texte sur plusieurs colonnes ?
Plus de sujets relatifs à : traitement de texte en masse


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR