Bonjour,
Je suis actuellement chargé de faire une macro sous word permettant de remplacer des occurrences prédéfinies, et générées par un autre logiciel, par des compteurs. Voici un exemple pour bien me faire comprendre :
texte avant macro :
texte après :<cpt_a> blablabla <cpt_b>
<cpt_a> blablabla
<cpt_a> blablabla <cpt_b>
Les "blablabla" étant, le supposé, reste du texte.1 blablabla 1
2 blablabla
3 blablabla 2
A savoir également que cet essais comporte deux occurrences mais je doit pouvoir en faire autant que je veux.
J'ai déjà bien progressé dans cette voie et me trouve actuellement avec le code suivant :
Et le problème est le suivant avec mon "fichier test", qui est comme suis :
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
45
46
47
48
49
50
51
52
53
54 Sub remplacement_balise_compteur() Call remplacement_cpt_a DoEvents Call remplacement_cpt_b DoEvents End Sub Sub remplacement_cpt_a() Dim i As Integer i = 1 Selection.GoTo (wdGoToFirst) Do Selection.Find.ClearFormatting With Selection.GoTo(wdGoToLine).Find .Text = "<cpt_a>" .Replacement.Text = i .Forward = True .Wrap = wdFindContinue .Execute Replace:=wdReplaceOne End With i = i + 1 Loop Until Selection.Find.Execute = False End Sub Sub remplacement_cpt_b() Dim i As Integer i = 1 Selection.GoTo (wdGoToFirst) Do Selection.Find.ClearFormatting With Selection.GoTo(wdGoToLine).Find .Text = "<cpt_b>" .Replacement.Text = i .Forward = True .Wrap = wdFindContinue .Execute Replace:=wdReplaceOne End With i = i + 1 Loop Until Selection.Find.Execute = False End Sub
Je me retrouve avec ce résultat là une fois exécution de la macro appelant les autres :<cpt_a>
<cpt_a>
<cpt_a>
<cpt_a> <cpt_b>
<cpt_a> <cpt_b>
<cpt_a> <cpt_b>
<cpt_a> <cpt_b>
<cpt_a> <cpt_b>
J'ai dû louper une configuration quelque part, mais même après un long moment passé devant je ne trouve toujours pas. Je me tourne donc vers vous s'il n'y en a pas un deux qui ont une idée d'où viens le problème du premier qui ne passe pas.8
1
2
3 5
4 1
5 5
6 6
7 4
Merci d'avance.
edit :
Finalement j'ai trouvé le problème qui venais de mon test de sortie de boucle. J'ai changé pour un do while (test si il reste encore des balises) loop.
Merci quand même !
Partager