Bonjour,
Alors, voilà mon besoin :
J'ai un fichier word avec des tags à l'intérieur, de types <g1> blabla </g1> <g2> blablabla </g2>. Le problème, c'est que parfois je reçois des fichiers où ces tags s'entremêlent ("nested formatting") de cette façon :
<g1> <g2> blablabla </g2> blablabla </g1>
Cela pose un gros problème dans mon système qui n'arrive pas à lire le fichier. Il me faut donc rétablire l'ordre d'apparition des tags. Je voudrais que cela se fasse automatiquement, parce que dans de très gros fichiers (où les tags vont jusqu'à <g600>...) je pourrais y passer des heures... et devenir fou !
Donc, mon idée est d'isoler ces tags dans un fichier texte ou Excel (ce que j'ai déjà réussi à faire avec le code ci-dessous, à l'aide de regex, ça fonctionne bien). Le problème est qu'ensuite, je ne sais trop comment faire pour :
- 1 repérer automatiquement les tags emmêlés
- 2 les remettre dans le bon ordre
- 3 reprendre la liste ainsi corrigée et procéder automatiquement aux changements dans le fichier d'origine
J'imagine qu'il me faudrait créer un tableau externe, sans doute dans excel, et utiliser une fonction spécifique de tri. Par contre pour le réimport, je sèche complètement... J'espère que quelqu'un ici pourrait m'aider ! Merci d'avance !
//// Voici une liste ainsi générée par mon code VBA ///
<g3>
</g3>
<g4>
</g4>
<g5>
</g5>
<g6>
</g6>
<g8>
</g8>
<g10>
</g10>
<g12>
</g12>
<g14>
</g14>
<g16>
</g16>
<g17>
</g17>
<g22>
<g23> >>>> ici on peut déjà repérer un problème, comme décrit plus haut
</g23>
</g22>
/// Voici le code VBA que j'ai produit jusqu'à présent et qui fonctionne pour générer la dite liste ///
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 Sub AAAExtract_WildCard_Matches() Dim sWildCard As String Dim sDir Dim oWD As Word.Document Dim sPath As String sWildCard = "\<[g/]{1;2}[0-9]{1;4}\>" sPath = "C:\Users\XXXX\Desktop\" sDir = Dir$(sPath & "*.doc", vbNormal) Do Until LenB(sDir) = 0 Set oWD = Documents.Open(sPath & sDir) Open "C:\Mein-Ordner\Match_Output.txt" For Append As #1 Selection.Find.Font.Hidden = False Selection.HomeKey wdStory, wdMove Selection.Find.Execute FindText:=sWildCard, MatchWildcards:=True Do While Selection.Find.Found Print #1, Selection.Range.Text Selection.Range.Collapse wdCollapseEnd Selection.Find.Execute Loop Close #1 oWD.Close False sDir = Dir$ Loop End Sub
Partager