Bonjour,
Je cherche à résoudre le problème suivant.
Dans un fichier Word, j'ai des balises du type
<}100{>
<}90{>
<}17{>
Je souhaiterais faire un rechercher-remplacer afin d'obtenir
[BM100]
[BM90]
[BM17]
J'ai cherché à décomposer le problème en sous-étapes et ça me donne ça :
1) Rechercher toute chaîne <}valeur_numérique{>.
2) Pour chaque chaîne trouvée, extraire la valeur numérique et la stocker dans une variable (pour info, cette valeur numérique peut être comprise entre 0 et 100).
3) Remplacer la chaîne trouvée par "[BM" + variable + "]".
Pour cela, j'utilise les caractères génériques et la commande "MID" mais ça coince.
Voici le code auquel je suis parvenu jusqu'à présent (quand j'aurai résolu le problème, je mettrai ce code dans une boucle pour remplacer toutes les occurrences du document mais j'ai essayé de simplifier au maximum pour l'instant).
*******
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 Sub aMacro81() 'Réinitalisation des paramètres de recherche Selection.Find.ClearFormatting Selection.Find.Replacement.ClearFormatting 'Déclaration de la variable de balise du milieu, sBM, qui prend pour valeur le texte de la sélection sBM = Selection.Text ' Déclaration de la limite de droite, qui équivaut à la longueur de la chaîne moins 2 caractères ({>) compteCar = (Len(sBM) - 2) ' Déclaration de la variable contenant la valeur numérique extraite de la balise de milieu (extraction du 3e caractère à l'avant-avant-dernier charactère). sBMVAL = Mid(sBM, 3, compteCar) ' Déclaration de la variable de remplacement, concaténée sous la forme "[MT" + sBMVAL "]" sRemplacement = "[MT" & sBMVAL & "]" With Selection.Find .Text = "\<\}*\{\>" .Replacement.Text = sRemplacement .Forward = True .Wrap = wdFindStop .Format = False .MatchCase = False .MatchWholeWord = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = True End With Selection.Find.Execute Replace:=wdReplaceAll End Sub
Voici également trois phrases d'exemple :
{0>Show/hide the reference X, Y, and Z, axis in the 3D preview window.<}100{>Affichez/masquez l'axe de référence X, Y ou Z dans la fenêtre d'aperçu 3D.<0}
{0>The reference 3D axis is useful while changing orientation of the 3D symbology.<}10{>L'axe 3D de référence est utile lors du changement d'orientation de la symbologie 3D.<0}
{0>The red, green, and blue lines represent the X, Y, and Z, axis respectively.<}99{>Les lignes rouge, verte et bleue représentent les axes X, Y et Z, respectivement.<0}
*******
Si quelqu'un avait une idée, ça m'aiderait énormément (à noter que ce n'est pas urgent).
Merci beaucoup.
Lionel
Partager