Soit un document avec une case à cocher et une zone zone de texte. Comment faire pour que le contenu de la zone de texte soit automatiquement dépendant de la case à cocher, selon si celle-ci est cochée ou pas ?

Une macro est nécessaire, car on ne peut pas, dans un champ, récupérer la valeur de la case à cocher.

Exemple : Insérez dans un document une case à cocher et une zone de texte de la barre d'outils Formulaire (ou des formulaires hérités pour les versions à partir de 2007).

Double-cliquez sur chacun des deux champs afin de relever le nom du signet. Vous pouvez modiifer ces noms si nécessaire. Dans mon exemple, j'ai mis Case1 pour le signet de la case à cocher et Texte1 pour le signet de la zone de texte.

Vous allez maintenant créer la macro suivante. Vous pouvez la mettre dans un module du document en question, ou dans ThisDocument.

Sub caseacocher()
'macro écrite par m@rina
Dim macase As CheckBox
Dim montexte As FormField

Set macase = ActiveDocument.FormFields("Case1").CheckBox
Set montexte = ActiveDocument.FormFields("Texte1")
If macase.Value = True Then
montexte.Result = "oui la case est cochée"
Else: montexte.Result = "Non la case n'est pas cochée"
End If
End Sub

 

Puis, de retour dans le document, double-cliquez sur la case à cocher, et choisissez la macro caseacocher dans la rubrique Exécuter la macro à la sortie.

Double-cliquez ensuite sur le champ Zone de texte, et décochez l'option Remplissage activé. En effet, cette zone de texte doit être automatique et son contenu dépend de la valeur de la case à cocher.

Il vous reste à protéger le formulaire et à tester. Lorsque vous "sortirez" de la case à cocher, la zone de texte sera mise à jour.