0
(0)

Présentation

Code généré suite d'une demande d'une utilisatrice du forum.

Objectif : Couper le texte environ tous les 125 mots, en ajoutant une fin de paragraphe à la fin de la phrase correspondante.

J’ai ainsi découvert que Word comptait les mots de manières étranges !

Avec ce texte « L’amour des en-têtes ! » on a :

  • 4 mots via l’interface ! ( L’amour / des / en-têtes / ! )
  • 5 mots en VBA ! ( L’amour / des / en / – / têtes / ! )

Le code

Sub InsereFinParagraphe()
    Dim lgCptMots As Long
    Dim rng As Range ' Flag pour mémorisation de l'état
    Dim boSuivi As Boolean

    Const nbMotsAvantFinParagraphe As Long = 125 ' Définir le nombre mini de mots entre chaque fin de paragraphe

    ' Désactiver le suivi des modifications pour améliorer les performances
    Application.ScreenUpdating = False
    boSuivi = ActiveDocument.TrackRevisions ' Mémorisation de l'état
    ActiveDocument.TrackRevisions = False

    Set rng = ActiveDocument.Words(1)
    Do While rng.End < ActiveDocument.Content.End
        rng.MoveEnd wdWord, 1 'On se décale d'un "pseudo" mot
        ' Test si c'est un vrai mot (pas - ou ? ou ! ou RC...)
        If Len(Trim(rng.Words.Last)) > 1 Or rng.Words.Last = "à" Or rng.Words.Last = "a" Or rng.Words.Last = "ô" Then
            ' Trim pour les cas comme ". " et "?"...
            lgCptMots = lgCptMots + 1
        End If
    If lgCptMots >= nbMotsAvantFinParagraphe Then
        rng.MoveEnd wdSentence, 1
        rng.InsertParagraphAfter
        lgCptMots = 0
    End If
    Loop
    ' Rétablissement de l'état du suivi des modifications et rafraîchir l'affichage
    ActiveDocument.TrackRevisions = boSuivi
    Application.ScreenUpdating = True
End Sub

Merci pour votre attention bienveillante

Article intéressant ?

Cliquez sur une étoile pour noter cet article !

Note moyenne 0 / 5. Nombre de votes : 0

Aucun vote pour l'instant ! Soyez le premier à noter ce post.

Nous sommes désolés que cet article ne vous ait pas été utile !

Améliorons cet article !

Dites nous comment nous pouvons améliorer cet article ?

Publications similaires

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *