Puis-je faire en sorte que MS Word insère des symboles pour les sauts de ligne automatiques?


4

Je souhaite inclure un schéma XML dans un document technique créé avec MS Word. Les lignes étant beaucoup plus longues que la largeur disponible sur la page, Word les coupe automatiquement. Je tiens à préciser clairement au lecteur où cela s'est produit, afin qu'ils sachent que la ligne suivante est la continuation de la précédente. Existe-t-il un moyen de forcer Word à insérer automatiquement un symbole, par exemple, à la fin de chaque ligne automatiquement interrompue?

Je pourrais bien sûr le faire manuellement, mais ce serait beaucoup de travail que je devrais répéter à chaque changement de schéma, ce qui risquerait de provoquer des erreurs. Je connais le mode "Afficher les caractères non imprimables", mais je souhaite que ces symboles soient uniquement visibles dans cette section et également imprimés. En outre, "Afficher les caractères non imprimables" affiche les sauts de ligne explicites au lieu de ceux automatiques.

Est-ce possible avec MS Word, ou si non, quelqu'un peut-il recommander une autre technique automatisée pour y parvenir?


En appuyant sur ctrl + shft + 8, vous obtiendrez des symboles de mise en forme qui n'indiqueront pas exactement ce que vous recherchez, mais vous indiqueront quand une ligne est interrompue.
Raystafarian

Oui, c'est le mode "Afficher les caractères non imprimables" que j'ai mentionné. Cela ne fonctionne pas pour mon but, malheureusement.
Pepijn Schmitz

1
Faut-il que ce soit un personnage spécial? Qu'en est-il de l'utilisation d'Indentation-> Suspension ... Cela indenterait automatiquement le contenu encapsulé (à partir de la 2e ligne).
Madball73

Je préférerais vraiment un caractère spécial, car il serait sans ambiguïté. Le fichier comporte un retrait, vous ne pouvez donc pas toujours savoir si une ligne est censée être mise en retrait ou si elle continue.
Pepijn Schmitz

Surtout avec une exigence que vous affichez dans tous les modes, je ne suis pas sûr que ce soit possible, car l'emplacement du retour à la ligne n'est pas statique (c'est-à-dire qu'il ne s'agit pas d'un saut de ligne, automatique ou autre). Une autre option consiste à en faire une liste à puces ou un tableau ombré, de manière à ce que soit clairement définie la ligne discrète. Cela désignerait chaque ligne, pas seulement les lignes enveloppées.
Madball73

Réponses:


0

Eh bien, vous pouvez essayer la VBA suivante comme point de départ, mais je pense que cela nécessitera du travail. Cela suppose que vos sauts seront toujours après un espace (ce qui n'est pas déraisonnable pour un schéma IMO), donc si vous avez un texte sans espace plus long qu'une ligne, vous devrez peut-être toujours le casser à la main.

Ceci remplace les espaces finaux par le symbole de retour dans la police en cours + un espace de séparation sans largeur, aussi longtemps que vous pouvez ajuster la largeur du symbole de retour (il existe différentes façons de le faire) de sorte que Word mêmes points, cela peut suffire.

Sub markAutoLineBreaks()
' Changes line breaks automatically made by Word
' into "return" charaters, but only where the line
' ends in a " "
' This operates on the text in the current selection
' We use a character style
Const strStyleName As String = "contchar"
Dim r As Word.Range
Dim styContchar As Word.Style

' Add the style if it is not present
On Error Resume Next
Set styContchar = ActiveDocument.Styles.Add(strStyleName, Type:=WdStyleType.wdStyleTypeCharacter)
Err.Clear
On Error GoTo 0
' Set the characteristics of the style. What you need to aim for
' is to adjust the character width so that the text breaks at the
' same point (if possible)
Set styContchar = ActiveDocument.Styles(strStyleName)
With styContchar.Font
  .Size = 8
End With

' Save the selection
Set r = Selection.Range

' remove old line end marks
With Selection.Find
  .ClearFormatting
  .Style = styContchar
  .Replacement.ClearFormatting
  ' Not sure what to use here, but this will have to do
  .Replacement.Style = ActiveDocument.Styles("Default Paragraph Font")
  ' 9166 is the return character. 8204 is a No-width breaking space
  .Text = ChrW(9166) & ChrW(8204)
  .Replacement.Text = " "
  .Forward = True
  .Format = True
  .MatchCase = False
  .MatchWholeWord = False
  .MatchWildcards = False
  .MatchSoundsLike = False
  .MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll

' Moving down lines is not completely straightforward
' but this seems to work
Selection.Collapse direction:=wdCollapseStart
Do Until Selection.End > r.End
  Selection.Bookmarks("\line").Select
  If Right(Selection, 1) = " " Then
      Selection.SetRange Selection.End - 1, Selection.End
      Selection.Delete
      Selection.Text = ChrW(9166) & ChrW(8204)
      Selection.Style = styContchar
      Selection.Bookmarks("\line").Select
      Selection.Collapse direction:=wdCollapseStart
  End If
  Selection.MoveDown wdLine, 1, False
Loop

' reselect our original selection
r.Select
Set r = Nothing
End Sub

Intrigant. Je veux l'essayer, mais ça ne compile pas. Il y a deux "end ifs" dans la boucle do ... et je ne comprends pas tout de suite comment vous voulez dire cela.
Pepijn Schmitz

Vous avez raison. J'ai édité le code et viens de faire une vérification rapide.

Merci, maintenant ça marche! Ce n'est pas encore parfait. Parfois, cela n’ajoute pas le symbole à une ligne brisée et on ne sait pas pourquoi. Et parfois, cela ajoute le symbole, mais cela fait que le dernier mot ne tient plus sur la ligne, de sorte que le dernier mot et le symbole sont repoussés à la ligne suivante. Mais c’est un bon début et probablement le plus près possible de ce que je veux, alors j’accepterai votre réponse. Pouvez-vous penser à un moyen de résoudre le problème en plaçant des mots à la ligne suivante parce que le symbole de retour les rend trop longs?
Pepijn Schmitz

Je pense que seule une automatisation partielle sera possible sans une connaissance complète de l'algorithme de saut de ligne de Word et la possibilité d'ajuster la largeur du caractère "symbole de retour" en conséquence. Il serait possible de rendre le symbole de retour plus étroit - je vais regarder ça, mais pas aujourd'hui! L’autre chose que je n’ai pas examinée en détail est ce qui se passe dans l’espace insolent lorsque vous cliquez sur le bouton Afficher / Masquer et quelle différence cela fait avec ce qui est affiché.

OK, cela m'est déjà très utile. Cela se passe généralement bien; réparer les quelques erreurs représente beaucoup moins de travail que de tout faire à la main. Merci!
Pepijn Schmitz

0

Je ne l'exprimerai pas en double, car ce n'est pas une question à réponse, mais vous voudrez peut-être regarder ici:
est-il possible de définir un style pour afficher les continuations de lignes dans Microsoft Word?

ce qui vous amène à: Convertir HTML en image


Merci pour le pointeur! J'ai cherché des doublons, mais je ne les ai pas trouvés. Cela ne fonctionnera pas pour moi cependant; le code est beaucoup trop long pour qu’une image de celui-ci tienne sur une page. Il serait également difficile de l’intégrer naturellement dans le document Word, avec les mêmes polices, les mêmes tailles de police, etc., et la résolution devrait être très élevée pour que l’impression soit toujours nette. Cela ressemble également à beaucoup plus de travail que de le faire manuellement. ;)
Pepijn Schmitz
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.