Avec une macro, bien entendu.
Voici un exemple de macro pour un document exemple qui contient :
- Un contrôle de contenu de liste déroulante, avec la balise nommée "liste1".
Cette liste déroulante contient les noms de continents.
- Un contrôle de contenu de liste déroulante, avec la balise nommée "liste2". Cette liste est vide et se remplira automatiquement avec les pays, lors du choix dans la liste 1.
La macro devra être copiée et collée dans le VBE, ThisDocument. (Voyez ici si nécessaire). Attention ! Ne changez pas le nom des macros !
Lorsque vous choisirez un continent dans la première liste, la liste des pays concernés sera disponible dans la seconde liste.
Dim Choix As String
Private Sub Document_ContentControlOnEnter(ByVal CC As ContentControl)
If CC.Tag = "liste1" Then Choix = CC.Range.Text
End Sub
Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
Dim i As Long, listes_pays As String
With CC
If .Tag = "liste1" Then
If Choix = .Range.Text Then Exit Sub
Select Case .Range.Text
Case "Europe"
listes_pays = "France,Italie,Espagne,Grèce,Portugal"
Case "Amérique"
listes_pays = "États-Unis,Canada,Argentine,Mexique,Brésil"
Case "Afrique"
listes_pays = "Cameroun,Sénégal,Gabon,Côte d'Ivoire"
Case "Asie"
listes_pays = "Japon,Chine,VietNam,Inde"
Case Else
.Type = wdContentControlText
.Range.Text = ""
.Type = wdContentControlDropdownList
End Select
With ActiveDocument.SelectContentControlsByTag("liste2")(1)
.DropdownListEntries.Clear
For i = 0 To UBound(Split(listes_pays, ","))
.DropdownListEntries.Add Split(listes_pays, ",")(i)
Next
.Type = wdContentControlText
.Range.Text = ""
.Type = wdContentControlDropdownList
End With
End If
End With
End Sub