Aller à la fin de chaque ligne et texte en gras entre parenthèses
J'ai besoin d'automatiser le formatage de mots spécifiques à la fin de chaque ligne dans MS Word. Comme je ne pouvais pas enregistrer une macro pour faire le travail en raison des limitations des macros Word, je dois la publier ici. Tout ce dont j'ai besoin est de faire ce qui suit: -
- Vérifiez chaque ligne pour un début de (
- Commencez à sélectionner le texte entre parenthèses (y compris les parenthèses) jusqu'à ce que) se trouve à la fin d'une phrase
- Mettre en forme le texte en gras
- Faites ceci jusqu'à la fin du fichier
- Exception: ne formatez pas les en-têtes qui sont déjà en gras et soulignés.
Comment pourrais-je faire ça? Ou veuillez rectifier mon code car il ne fait rien du tout.
Sub m1()
'
' m1 Macro
'
'
Dim i As Integer
With Selection.Find
For i = 1 To lastRow
.Forward = True
.ClearFormatting
.MatchCase = False
.Wrap = wdFindContinue
.Execute FindText:="("
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.Font.BoldBi = wdToggle
Next
End With
End Sub
Réponses
Vous n'aurez peut-être pas besoin d'une macro si vous savez que le style du corps du texte de votre document est toujours un style désigné autre qu'un style d'en-tête. Configurez votre recherche et remplacement comme ceci:

Si le code générique est difficile à lire à partir du clip d'écran, c'est: [(] * [)]
J'ai finalement réussi à construire ce code:
Sub m1()
Selection.HomeKey Unit:=wdStory
With Selection.Find
Do While .Execute(FindText:="(", Forward:=True, MatchWildcards:=False) = True
Selection.EndKey Unit:=wdLine, Extend:=wdExtend
Selection.Font.Bold = wdToggle
Selection.Font.BoldBi = wdToggle
Selection.EndKey Unit:=wdLine
Loop
End With
End Sub
Cela a fonctionné! :) Merci pour le soutien!
MS Word ne fonctionne pas avec les lignes. Le code VBA suivant trouvera les paragraphes qui se terminent par des parenthèses et les mettent en gras avec le contenu.
Sub Bold_ending_parentheses()
Dim par As Word.Paragraph
Dim str As String
Dim closes As Byte
Dim opens As Long
For Each par In ActiveDocument.Paragraphs
str = StrReverse(par.Range.Text)
closes = InStr(Left(str, 4), ")")
If closes Then
opens = InStr(str, "(")
If opens Then
With par.Range
.Find.Text = StrReverse(Mid(str, closes, opens - closes + 1))
Do
.Find.Execute
If .Find.Found Then .Font.Bold = True
Loop While .Find.Found
End With
End If
End If
Next
End Sub
ÉDITER:
Un exemple d'utilisation de Rechercher et remplacer. En utilisant cela, tout le texte entre parenthèses est en gras (sans tenir compte de l'exigence d'être à la fin du paragraphe / de la ligne):
Sub ApplyBoldWithinParentheses()
With ActiveDocument.Content.Find
.ClearFormatting
.Text = "[(]*[)]"
.Replacement.Font.Bold = True
.Format = True
.MatchWildcards = True
.Execute Replace:=wdReplaceAll
End With
End Sub