Bonsoir,
J'arrive un peu tard, je n'ai pas eu le temps de poster la réponse cette après-midi mais cela pourrait peut être aider quelqu'un !
Je me suis amusé avec ChatGPT (via le site et avec Bing) pour voir les réponses à ce problème. => Pas très concluantes (3 solutions non fonctionnelles mais avec quelques bonnes idées qui pourraient quand même aider un utilisateur). Au vu de mes tentatives, le VBA Excel semble mieux passer (plus de documentation je pense).
Voici ma version. J'ai ainsi pu découvrir que Word comptait les mots de manière étrange !
L'amour des en-têtes !
=> 4 mots via l'interface ! ( L'amour / des / en-têtes / ! )
=> 5 mots en VBA ! ( L'amour / des / en / - / têtes / ! )
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