Word - remplacer une partie de la sélection
Chasta
-
Zoul67 Messages postés 1959 Date d'inscription Statut Membre Dernière intervention -
Zoul67 Messages postés 1959 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche à créer une macro qui met en italique certains éléments dans mon texte. Il s'agit des lettres indiquant une partie d'un texte de loi. C'est-à-dire:
Art. 89, al. 3, lit. a --> le petit "a" doit être mis en italique.
En ce qui concerne l'exemple ci-dessus, j'ai déjà trouvé une solution avec .selection.find:
.Text = "lit. ([a-z][!a-z])"
.Replacement.Text = "lit.^s\1"
.Replacement.Font.Italic = True
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
Suivi du code suivant pour que seule la lettre soit en italique:
.Text = "lit.^s"
.Replacement.Text = "lit.^s"
.Replacement.Font.Italic = False
.Execute Replace:=wdReplaceAll
Mais je coince lorsque qu'il y a plusieurs lettres à mettre en italique:
Art. 89, al. 3, lit. a, b
Art. 89, al. 3, lit. a et b
Art. 89, al. 3, lit. a, b, c
Art. 89, al. 3, lit. a, b et c
…
Il faudrait que les lettres (a, b, c...) soient en italique, mais que les virgules et les "et" qui les séparent ne le soient pas. J'arrive à tout mettre en italique en utilisant le code précédent et en l'adaptant, mais je n'arrive pas ensuite à enlever l'italique des virgules et des "et". Aussi, comme on ne sait pas combien de lettres sont notées après le "lit.", y a-t-il moyen d'utiliser un code avec des jokers (wildcards) ou faut-il faire des codes différents pour 2, 3... x lettres?
Un grand merci à tous ceux qui pourront m'apporter leurs lumières.
Je cherche à créer une macro qui met en italique certains éléments dans mon texte. Il s'agit des lettres indiquant une partie d'un texte de loi. C'est-à-dire:
Art. 89, al. 3, lit. a --> le petit "a" doit être mis en italique.
En ce qui concerne l'exemple ci-dessus, j'ai déjà trouvé une solution avec .selection.find:
.Text = "lit. ([a-z][!a-z])"
.Replacement.Text = "lit.^s\1"
.Replacement.Font.Italic = True
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
Suivi du code suivant pour que seule la lettre soit en italique:
.Text = "lit.^s"
.Replacement.Text = "lit.^s"
.Replacement.Font.Italic = False
.Execute Replace:=wdReplaceAll
Mais je coince lorsque qu'il y a plusieurs lettres à mettre en italique:
Art. 89, al. 3, lit. a, b
Art. 89, al. 3, lit. a et b
Art. 89, al. 3, lit. a, b, c
Art. 89, al. 3, lit. a, b et c
…
Il faudrait que les lettres (a, b, c...) soient en italique, mais que les virgules et les "et" qui les séparent ne le soient pas. J'arrive à tout mettre en italique en utilisant le code précédent et en l'adaptant, mais je n'arrive pas ensuite à enlever l'italique des virgules et des "et". Aussi, comme on ne sait pas combien de lettres sont notées après le "lit.", y a-t-il moyen d'utiliser un code avec des jokers (wildcards) ou faut-il faire des codes différents pour 2, 3... x lettres?
Un grand merci à tous ceux qui pourront m'apporter leurs lumières.
A voir également:
- Word - remplacer une partie de la sélection
- Word 2013 - Télécharger - Traitement de texte
- Supprimer une page word - Guide
- Remplacer word - Guide
- Tableau word - Guide
- Espace insécable word - Guide
1 réponse
Bonjour,
Comment peut-on détecter que le listing des lettres est terminé ?
Les références sont-elles systématiquement entre parenthèses par exemple ?
Au lieu de faire une recherche on peut scanner tous les caractères du document comme ici : https://forum.hardware.fr/hfr/Programmation/VB-VBA-VBS/vb-word-parenthese-sujet_98030_1.htm
A+
Comment peut-on détecter que le listing des lettres est terminé ?
Les références sont-elles systématiquement entre parenthèses par exemple ?
Au lieu de faire une recherche on peut scanner tous les caractères du document comme ici : https://forum.hardware.fr/hfr/Programmation/VB-VBA-VBS/vb-word-parenthese-sujet_98030_1.htm
A+
La référence est dans le corps du texte. Selon moi, il y a donc deux cas de figure :
1- la référence conclut la phrase. On aura donc référence + un signe de ponctuation ou une espace (p. ex.: [...] est l'art. 5, al. 6, lit. c.")
2- la référence ne conclut pas la phrase. On aura donc une lettre + une espace + une suite de lettres (seule exception: "à", p. ex. : "[...] l'art. 3, al 2, lit. a, b, ..., k à [...]".
J'espère que ça t'aide.
C'est surtout toi que ça doit aider...
Mon idée serait de gérer la mise en italique après la chaîne de caractères ", lit.". Pour cesser cette gestion il faudrait détecter la fin de l'énumération.
Dans le premier cas c'est un signe de ponctuation différent de ",".
Dans le deuxième cas... ? Une chaîne de caractères de plus de deux caractères différente de "et" ?
A+