Vous souhaitez, via une macro, effacer les choix faits dans des contenus de liste déroulante, afin de remettre par exemple le formulaire à zéro.

Normalement, le code suivant devrait faire l'affaire :

ActiveDocument.ContentControls(1).Range.Text = ""

Ce code dit simplement que la valeur du premier contrôle de contenu est égale à rien. Et pourtant un message d'erreur s'affiche : "Impossible de modifier cette sélection car elle est protégée". Le contrôle de contenu n'est pourtant pas verrouillé, l'option "Ne pas modifier le contenu" n'est pourtant pas cochée.

C'est juste impossible, on ne peut pas dire que la valeur de cette liste déroulante est égale à rien. On va donc tromper Word, et lui dire que cette liste déroulante n'en est pas une mais qu'elle est un simple contrôle de contenu de texte ! Et là Word acceptera la valeur nulle, et ensuite on changera à nouveau son type pour qu'il soit bien converti en liste déroulante !

Et voici la petite macro qui fait cette gymnastique pour le premier contrôle du document. Pour l'appliquer à d'autres contrôles en spécifiant son titre ou sa balise, voyez cet article.

Sub valeur_nulle()
With ActiveDocument.ContentControls(1)
.Type = wdContentControlText
.Range.Text = ""
.Type = wdContentControlDropdownList
End With
End Sub
 

Si vous souhaitez remettre à zéro toutes vos listes déroulantes, on fera une boucle :

Sub valeur_nulle2()
Dim CC As ContentControl
For Each CC In ActiveDocument.ContentControls
    If CC.Type = wdContentControlDropdownList Then
        With CC
        .Type = wdContentControlText
        .Range.Text = ""
        .Type = wdContentControlDropdownList
        End With
    End If
Next
End Sub