Aller à la fin de chaque ligne et texte en gras entre parenthèses

Dec 30 2020

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: -

  1. Vérifiez chaque ligne pour un début de (
  2. Commencez à sélectionner le texte entre parenthèses (y compris les parenthèses) jusqu'à ce que) se trouve à la fin d'une phrase
  3. Mettre en forme le texte en gras
  4. Faites ceci jusqu'à la fin du fichier
  5. 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

1 RichMichaels Dec 30 2020 at 22:12

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: [(] * [)]

Roy Dec 31 2020 at 13:51

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!

ZygD Dec 30 2020 at 16:54

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