Les contrôles de contenus sont apparus avec la version 2007. Ils s'insèrent via l'onglet Développeur.

Oui, il est possible de déclencher une macro sur la sortie d'un contrôle de contenu, grâce à une nouvelle macro événementielle.

Depuis le document qui contient le contrôle de contenu, rendez-vous dans Visual Basic Editeur (Alt+F11), et double-cliquez sur ThisDocument.

Dans la colonne de gauche, choisissez Document, et dans la colonne de droite, vous trouverez les macros événementielles et en particulier la macro ContentControlOnExit.

Voici par exemple une macro qui dit Bonjour à chaque fois que vous quittez un contrôle de contenu :

Private Sub Document_ContentControlOnExit(ByVal ContentControl As ContentControl, Cancel As Boolean)
MsgBox "Bonjour"
End Sub

Cette macro bien évidemment ne sert à rien, mais surtout elle va se déclencher à la sortie de tous les contrôles de contenu.

il faut donc indiquer à Word quel est le contrôle de contenu qui va déclencher la macro. Pour cela on va définir une variable pour qualifier le contrôle. Voici par exemple une macro qui confirme la date choisie dans un contrôle Date (variable CC) qui est le premier contrôle du document :


Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Set CC = ActiveDocument.ContentControls.Item(1)
madate = CC.Range
MsgBox "vous avez choisi le " & madate

End Sub 

Si vous avez plusieurs contrôles de contenu dans le document, le mieux est d'utiliser non pas sa place dans le document (car elle risque de changer) mais son titre, sa balise, ou encore son index.

Voir ici.

La macro suivante envoie le message "Bonjour" à la sortie du Contrôle de contenu dont le titre est "mon_titre" :

Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
If CC.Title = "mon_titre" Then MsgBox "Bonjour"
End Sub