Partager via

Génération automatisée de sauts de lignes

Anonyme
2023-05-26T09:34:41+00:00

Bonjour,

Je travaille sur Microsoft Word et j'ai un texte brut de plusieurs pages sans saut de lignes. J'aimerais pouvoir créer des sauts de lignes environ tous les 150 (125-175) mots systématiquement après des fins de phrases (points, points d'interrogation, d'exclamation, de suspension...)

Est-ce que quelqu'un connait une méthode ?

Microsoft 365 et Office | Word | Other | MacOS

Question verrouillée. Cette question a été migrée à partir de la Communauté Support Microsoft. Vous pouvez voter pour indiquer si elle est utile, mais vous ne pouvez pas ajouter de commentaires ou de réponses ni suivre la question.

0 commentaires Aucun commentaire
{count} votes

3 réponses

  1. Hecatonchire 53,305 Points de réputation Modérateur bénévole
    2023-05-26T22:08:16+00:00

    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
    
    0 commentaires Aucun commentaire
  2. Anonyme
    2023-05-26T10:12:24+00:00

    C'est génial, merci beaucoup Aliboron :-)

    Excellente journée

    0 commentaires Aucun commentaire
  3. Anonyme
    2023-05-26T10:01:06+00:00

    Exactement comme tu le souhaites, ça semble compliqué (du moins à faire vite fait). Mais il est possible par macro d'ajouter un saut de ligne toutes les cinq phrases, par exemple, en adaptant un peu la macro donnée sur cette page de la FAQ Word de l'amie Circé :

    Sub CoupeTexte()
    Dim i
    For i = 0 To 10 ' on peut faire plus de dix fois, évidemment
    Selection.MoveRight Unit:=wdSentence, Count:=5 ' à adapter au nombre de phrases souhaité
    Selection.TypeParagraph ' doublé pour saut de ligne visible mais normalement on est censé
    Selection.TypeParagraph ' plutôt régler correctement l'espacement après paragraphe
    Next i
    End Sub

    Si j'ai un peu de temps, je regarderai s'il est possible de faire mieux... 😉

    0 commentaires Aucun commentaire