Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
J'ai 2 paragraphes (composés de textes écrits et de champs calculés) que je souhaite voir disparaître selon un critère sélectionné dans une liste déroulante. (cf doc DAB_exemple)
J'ai trouvé sur un autre forum quelque chose de similaire (fichier Toto) mais je ne comprends pas le code.
Re : Cacher du texte selon choix de liste déroulante
Bonjour Nessie, le forum,
Le fichier Toto1.doc contient en plus du code deux autres éléments qui permettent de répondre à la problématique :
Des signets (Bookmark en Anglais, et dans le VBA) qui permettent d’identifier les paragraphes à masquer ;
Un style personnalisé Monstyle qui semble être une copie du style Normal avec la police "masquée".
Ensuite, voici ce que fait le code :
VB:
Private Sub CheckBox1_Click()
'désactive la protection si le document est protégé
If Not ActiveDocument.ProtectionType = wdNoProtection Then
ActiveDocument.Unprotect
End If
'sélectionne le signet "para1"
Selection.GoTo What:=wdGoToBookmark, Name:="para1"
'applique le style "Normal" si la checkbox est validée
If CheckBox1.Value = True Then
ActiveDocument.Bookmarks("para1").Range.Style = wdStyleNormal
'sinon, applique le style "Monstyle"
Else
ActiveDocument.Bookmarks("para1").Range.Style = "Monstyle"
End If
'protège le document
ActiveDocument.Protect wdAllowOnlyFormFields
End Sub
Le code modifie donc le style de tout le signet, ce qui peut être embêtant si le signet en question fait référence à une zone contenant plusieurs styles.
Une autre solution serait de se passer du style Monstyle et de modifier directement la police du signet (la mettre à "masquée" ou non) avec ce code :
VB:
Private Sub CheckBox1_Click()
If Not ActiveDocument.ProtectionType = wdNoProtection Then ActiveDocument.Unprotect
ThisDocument.Bookmarks("para1").Range.Font.Hidden = Not CheckBox1.Value
ActiveDocument.Protect wdAllowOnlyFormFields
End Sub
Appliqué à ton cas, tu devras donc créer dans ton document un (ou des ?) signet pour identifier la zone à masquer en fonction des valeurs saisies dans ton formulaire.
Ensuite, il existe plusieurs types de contrôles dans Word pour faire les formulaires. Tu as choisi les moins simple à utiliser en VBA (les contrôles de formulaire hérités).
Il vaudrait mieux (si possible) utiliser les contrôles ActiveX qui permettraient de repérer le changement de valeur de ta liste déroulante (un peu comme dans l’exemple Toto1.doc).
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.