Word - titre avec retour a la ligne après numéro
Bonjour à tous,
Je suis en train de rédiger un document technique et j'aimerai automatiser (si possible) la mise en page qui pour l'instant se fait à la main. En fait j'aimerai que le titre d'une section soit rédigé après un retour à la ligne suite à la numérotation automatique. Une image vaut mille mots, voir ci-après le rendu voulu :
L'idée étant qu'en insérant un nouveau chapitre le titre se trouve sous sa numérotation, et non pas à coté comme c'est le cas par défaut. En efet dans les options disponibles je vois espace/tab/rien, mais pas de "retour à la ligne" (en bas à droite sur la 2e image). Ce doit bien etre possible non ?
Bonjour Saboh12617,
Le code ci-dessous met en blanc le libellé du style choisi en supposant que la couleur du fond soit également blanche.
Les libellés sont sauvegardés dans une matrice si le dernier caractère du libellé n'est pas de la couleur blanche. Les libellés sont ensuite collés sous chaque ligne du style choisi.
Pour les modifications possibles des titres, cela peut s'avérer fastidieux. Il serait sans doute plus judicieux de créer un signet dans les nouvelles lignes et d'y placer le libellé. En cas de modification du titre, il suffirait de vérifier la présence ou non d'un signet et d'en modifier le contenu le cas échéant.
Option Explicit
Sub ModificationDuStyle()
Dim DocEnCours As Document
Dim I As Integer, J As Integer, IndexMatrice As Integer, LaTaille As Integer
Dim DernierCaractere As Range
Dim LaPolice As String
Dim MatriceTitres() As Variant
Set DocEnCours = ActiveDocument
IndexMatrice = 0
With DocEnCours
For I = .Paragraphs.Count To 1 Step -1
With .Paragraphs(I)
If .Style = "Titre 1" Then ' A adapter
LaPolice = .Range.Font.Name
LaTaille = .Range.Font.Size
Set DernierCaractere = .Range.Characters(.Range.Characters.Count)
If DernierCaractere.Font.ColorIndex <> wdWhite Then
ReDim Preserve MatriceTitres(1, IndexMatrice)
MatriceTitres(0, IndexMatrice) = I
MatriceTitres(1, IndexMatrice) = Trim(.Range.Text)
IndexMatrice = IndexMatrice + 1
' Mise en transparence du titre
.Range.Select
For J = Selection.Characters.Count To 1 Step -1
Selection.Characters(J).Font.ColorIndex = wdWhite
Next J
End If
Set DernierCaractere = Nothing
End If
End With
Next I
' Insertion des libellés sous leur ligne de titre
If IndexMatrice > 0 Then
For IndexMatrice = LBound(MatriceTitres, 2) To UBound(MatriceTitres, 2)
.Paragraphs(MatriceTitres(0, IndexMatrice) + 1).Range.Select
Selection.HomeKey Unit:=wdLine
Selection.Paragraphs.Add
With .Paragraphs(MatriceTitres(0, IndexMatrice) + 1).Range
.Text = MatriceTitres(1, IndexMatrice)
.Font.Name = LaPolice
.Font.Size = LaTaille
End With
Next IndexMatrice
End If
End With
Set DocEnCours = Nothing
End Sub
Merci Eric pour l'astuce VBA.
Je me doutais bien que via VBA c'était possible mais je cherchais une solution "vanilla". J'imagine que c'est titre + sous-titre.J'ai vu des documents administratifs rédigés ainsi d'où mon interrogation.
Bonjour Saboh12617,
Si sous-titre, il te faut dupliquer le code et l'adapter au niveau du style choisi.