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

  FORUM HardWare.fr
  Windows & Software
  Logiciels

  Une macro pour isoler des fragments de texte

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Une macro pour isoler des fragments de texte

n°3104126
rashmut
Posté le 03-11-2013 à 21:59:00  profilanswer
 

Citation :

Parler ne fait pas cuire le riz

Bonjour,  
 
J'ai un rapport de plusieurs centaines de pages (plus de 900) à classer.  
C'est un document texte (.txt) qui a été mal informatisé, tous les paragraphes et les infos qu'ils contiennent sont entassés les uns à la suite des autres.  
J'aimerais le remettre en forme rapidement, en isolant uniquement les infos recherchés.  
 
Une chance que les passages qui m'intéressent sont systématiquement encadrés par les termes récurrents "rapportlab...[blabla]...Références" ("blabla" étant les passages qui m'intéressent, "rapportlab" et "références" les termes encadrants)  
 
Ce que je souhaiterais, c'est qu'on m'aide à réaliser une macro capable de couper le contenu entre "rapportlab" et "références" (du fichier A) et de les coller successivement dans la première colonne d'un tableau (dans un fichier B). Ce que j'entend par successivement, c'est le premier copier-coller soit dans la colonne 1; ligne 1 du tableau, le second dans la colonne 1; ligne 2 la ligne 2, etc
 
Peut-être commencer par basculer de mon fichier .txt vers un format excel...
En espérant que ma difficulté soit une aisance pour d'autres, je vous remercie d'avance pour l'aide que vous pourriez m'apporter.

mood
Publicité
Posté le 03-11-2013 à 21:59:00  profilanswer
 

n°3104148
olivthill
Posté le 04-11-2013 à 01:19:21  profilanswer
 

Si, par chance "rapportlab...[blabla]...Références"  se trouve sur une ligne, alors c'est très facile avec findstr
 
Si on a "rapportlab", puis lignes suivantes "blabla", puis ligne suivante "Références", alors c'est un peu plus compliqué, mais il y a plusieurs solutions pour y arriver.
 
Par exemple, en VBS (le VBS est de base sur tous les Windows depuis Windows95).
Il suffit de copier le code suivant (que j'ai testé) dans un fichier qui se termine par ".vbs", par exemple dans "mef1.vbs" (mef=mise en forme)

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f_in, f_out
Dim file_in, file_out
 
Set fso = CreateObject("Scripting.FileSystemObject" )
 
file_in = "toto.txt" ' Mettre le nom du fichier en entrée
file_out = fso.GetBaseName(file_in) & "_new.txt" ' Le nom du fichier en sortie se termine par new.txt
 
Set f_in = fso.OpenTextFile(file_in, ForReading)
Set f_out = fso.OpenTextFile(file_out, ForWriting, true)
 
flag = "dehors"
i = 1
Do Until f_in.AtEndOfStream
   text_line = f_in.ReadLine
   If (text_line = "rapportlab" ) Then
      flag = "dedans"
   ElseIf (text_line = "Références" ) Then
      flag = "dehors"
   ElseIf (flag = "dedans" ) Then
      f_out.WriteLine text_line
   End If
Loop
 
f_in.Close
f_out.Close
 
WScript.Echo "Ok"


Ensuite, il faut cliquer sur mef1.vbs, et le mot "Ok" apparait indiquant que le traitement est fini, et que le nouveau fichier filtré est prêt.
 
---
Une autre solution est de copier le texte en lui mettant ".htm" à la fin.
Par exemple, s'il s'appelait toto.txt, il devient toto.htm.
Ensuite, on ouvre le fichier toto.htm avec un éditeur de texte (pas avec le navigateur pour le moment).
On met au début :

<html>
<body>
<!--


On met à la fin :

-->
</body>
</html>


On fait un remplacement (avec la fonction de remplacement de l'éditeur de texte) de la chaine "rapportlab" par la chaine "-->".
 
On fait un remplacement de la chaine "Références" par la chaine "<!--".
 
On sauvegarde.
 
On ouvre le fichier avec le navigateur (en cliquant de dessus ou en glissant le nom du fichier dans un navigateur déjà ouvert).
 
Là, on voit toutes les lignes, sauf celles qui sont en commentaires, c'est-à-dire sauf celles qui sont entre "<!--" et "-->".
On peut alors faire un copier coller de ce qui reste affiché à l'écran dans le fichier résultat.
 
NB. : J'ai testé aussi cette méthode.
Elle marche, sauf pour des retours à la ligne, qu'on pourra ajouter par un remplacement des fins de ligne par "<br>",
Mais ça dépend de l'éditeur alors je ne l'ai pas décrit.


Message édité par olivthill le 04-11-2013 à 01:32:28
n°3104152
rashmut
Posté le 04-11-2013 à 06:57:47  profilanswer
 

Merci beaucoup Olivthill, je vais tester votre code et votre astuce immédiatement!


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

  Une macro pour isoler des fragments de texte

 

Sujets relatifs
Changer la Direction du texte dans Word[HELP] Programme en C pour éditer un fichier texte
Modifier la taille du texteaide macro excel!^^
Excel et Macromacro recherche sous excel avec saisie sur fenêtre
logiciel recherche texte PDFOutil pour formater un texte sur une ligne
Recherche d'un texte dans des fichiers 
Plus de sujets relatifs à : Une macro pour isoler des fragments de texte


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