Pour afficher cacher un texte mis en forme sous Word. Il faut passer par une petite programmation en vba.
Une série de cases à cocher ( une par section à cacher) est à créer, nommer.
Puis à vous d’adapter le script suivant:


'SCRIPT VBA POUR AFFICHER CACHER UN TEXTE PAR MODIFICATION DE SIGNET OU PAR TEXTE MASQUÉ
'Préparation de Word
'Affichage du ruban développeur
'Fichier=>Options=>Personnaliser le Ruban>cocher développeur(design)
'Préparation du document
'On insère dans les documents des case-à-cocher (ActiveX)(onglet developpeur>contrôles>mode création, contrôles>outils hérités>contrôles ActiveX>case-à-cocher)
'On insère des signets (marques-pages/bookmark) aux endroits a modifier (un signet titre et un second texte).
'On créer les styles à appliquer (styles pour titres et styles pour textes)
'On appuie sur Alt+F11 pour l’éditeur VBE/VBA
'On selectionne Project(nom_du_document), puis Microsoft Word Objets =>ThisDocument
'
'Définitions
'On déclare les fonctions (SUB) en PRIVATE pour qu’elles ne soient disponibles que pour ce document, et qu'elles n'interfèrent pas les uns avec les autres.
'Dim permet la déclaration de la variable, AS son Format
'On assigne les valeurs aux variables:
'"texte" est une chaîne de caractères
'Chr(10) indique un retour à la ligne
'Chr(169) indique un CopyRight ©
'Chr(167) indique un Alinea/Paragraphe §
'Chr(174) indique un Registered/ Ressort ®
'Chr(153) indique un TradeMark ™
'& indique une concaténation de chaîne
'vbNullString efface le contenu de la variable
'
'On commence les conditions avec IF et on termine la condition avec End IF
'ELSE une condition « si faux »
'Call appelle une autre fonction SUB
'With permet d’appliquer plusieurs modifications à un objet et se termine par End With
'
'
'Script
'case-à-cocher 1
Private Sub CheckBox1_Click()
Dim StrTxt As String, StrBkMk As String
Dim Stxt As String, StBk As String
StrBkMk = "Bookmark1"
StBk = "bookmarka"
If Me.CheckBox1.Value = True Then
StrTxt = "Titre signet 1"
Stxt = Chr(10) & "Texte signet 1" & Chr(10)
Else
StrTxt = vbNullString
Stxt = vbNullString
End If
Call UpdateBookmark(StrBkMk, StrTxt)
Call UpdateBookmark2(StBk, Stxt)
Call ListBookmark("Bookmark1")
Call StyleBookmark("bookmarka")
End Sub
'case-à-cocher 2
Private Sub CheckBox2_Click()
Dim StrTxt As String, StrBkMk As String
Dim Stxt As String, StBk As String
StrBkMk = "Bookmark2"
StBk = "bookmarkb"
If Me.CheckBox2.Value = True Then
StrTxt = "Titre signet 2"
Stxt = Chr(10) & "Texte signet 2" & Chr(10)
Else
StrTxt = vbNullString
Stxt = vbNullString
End If
Call UpdateBookmark(StrBkMk, StrTxt)
Call UpdateBookmark2(StBk, Stxt)
Call ListBookmark("Bookmark2")
Call StyleBookmark("bookmarkb")
End Sub
'case-à-cocher 3
Private Sub CheckBox3_Click()
Dim StrTxt As String, StrBkMk As String
Dim Stxt As String, StBk As String
StrBkMk = "Bookmark3"
StBk = "bookmarkc"
If Me.CheckBox3.Value = True Then
StrTxt = " Titre signet 3 "
Stxt = Chr(10) & "Texte signet 3." & Chr(10)
Else
StrTxt = vbNullString
Stxt = vbNullString
End If
Call UpdateBookmark(StrBkMk, StrTxt)
Call UpdateBookmark2(StBk, Stxt)
Call ListBookmark("Bookmark3")
Call StyleBookmark("bookmarkc")
End Sub
'case-à-cocher 4
Private Sub CheckBox4_Click()
Dim StrTxt As String, StrBkMk As String
Dim Stxt As String, StBk As String
StrBkMk = "Bookmark4"
StBk = "bookmarkd"
If Me.CheckBox4.Value = True Then
StrTxt = " Titre signet 4»
Stxt = Chr(10) & "Texte signet 4." & Chr(10)
Else
StrTxt = vbNullString
Stxt = vbNullString
End If
Call UpdateBookmark(StrBkMk, StrTxt)
Call UpdateBookmark2(StBk, Stxt)
Call ListBookmark("Bookmark4")
Call StyleBookmark("bookmarkd")
End Sub
'case-à-cocher 5
'cache affiche grâce à "texte masqué" de la police de caractères (texte ou page blanche)
Private Sub CheckBox5_Click()
Bookmarks("Bookmark5").Range.Font.Hidden = Not CheckBox5.Value
'// If the logic is wrong, change to
'// = Not Checkbox5.Value
End Sub

'mise-a-jour du signet de titre
Sub UpdateBookmark(StrBkMk As String, StrTxt As String)
Dim bProtected As Boolean
Dim BkMkRng As Range
Dim sPassword As String
sPassword = "" 'password pour protection du doc
'deprotection du doc
If ActiveDocument.ProtectionType <> wdNoProtection Then
bProtected = True
ActiveDocument.Unprotect Password:=sPassword
End If
With ActiveDocument
If .Bookmarks.Exists(StrBkMk) Then
Set BkMkRng = .Bookmarks(StrBkMk).Range
BkMkRng.Text = StrTxt
.Bookmarks.Add StrBkMk, BkMkRng
End If
End With
'reprotection du doc
Finished:
If bProtected = True Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=sPassword
End If
Set BkMkRng = Nothing
End Sub

'mise-a-jour du signet de texte
Sub UpdateBookmark2(StBk As String, Stxt As String)
Dim bProtected As Boolean
Dim BkMkRng2 As Range
Dim sPassword As String
sPassword = "mot de passe" 'password pour protection du doc
'deprotection du doc
If ActiveDocument.ProtectionType <> wdNoProtection Then
bProtected = True
ActiveDocument.Unprotect Password:=sPassword
End If
With ActiveDocument
If .Bookmarks.Exists(StBk) Then
Set BkMkRng2 = .Bookmarks(StBk).Range
BkMkRng2.Text = Stxt
.Bookmarks.Add StBk, BkMkRng2
End If
End With
'reprotection du doc
Finished:
If bProtected = True Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=sPassword
End If
Set BkMkRng = Nothing
End Sub

'application du style de titre
Sub ListBookmark(StrBkMk As String)
Dim BkLstRange As Range
Dim bProtected As Boolean
Dim sPassword As String
sPassword = "mot de passe" 'password pour protection du doc
'deprotection du doc
If ActiveDocument.ProtectionType <> wdNoProtection Then
bProtected = True
ActiveDocument.Unprotect Password:=sPassword
End If
If Me.CheckBox1.Value = True Then
With ActiveDocument
If .Bookmarks.Exists(StrBkMk) Then
Set BkLstRange = .Bookmarks(StrBkMk).Range
BkLstRange.Style = "Puce_1"
End If
End With
Else
With ActiveDocument
If .Bookmarks.Exists(StrBkMk) Then
Set BkLstRange = .Bookmarks(StrBkMk).Range
BkLstRange.Style = "Normal"
End If
End With
End If
'reprotection du doc
Finished:
If bProtected = True Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=sPassword
End If
End Sub

'application du style de texte
Sub StyleBookmark(StBk As String)
Dim BkLstRange2 As Range
Dim bProtected As Boolean
Dim sPassword As String
sPassword = "mot de passe" 'password pour protection du doc
'deprotection du doc
If ActiveDocument.ProtectionType <> wdNoProtection Then
bProtected = True
ActiveDocument.Unprotect Password:=sPassword
End If
With ActiveDocument
If .Bookmarks.Exists(StBk) Then
Set BkLstRange = .Bookmarks(StBk).Range
BkLstRange.Style = "article"
End If
End With
'reprotection du doc
Finished:
If bProtected = True Then
ActiveDocument.Protect _
Type:=wdAllowOnlyFormFields, NoReset:=True, Password:=sPassword
End If
End Sub