VBA Word : comment synchroniser 2 listes déroulantes

Yersi -  
 Yersi -

Bonjour,

Mon postulat de départ est que je dois, sur un document word, créer un formulaire avec des listes déroulantes utilisant du content control (ni Active X ni hérités).

Dans ce formulaire j'ai

- une liste déroulante "Civilité" avec les choix "Monsieur" et 'Madame"

- une liste déroulante "agee" avec les choix "agé" et "agée"

Le but étant que lorsque "Monsieur" est choisi dans la liste "Civilité", automatiquement "agé" soit choisi dans la liste "agee"

J'ai commencé à regarder du côté de VBA et en tripatouillant des bouts de code trouvés ça et là, le plus proche que j'ai pu obtenir est ceci mais ça me renvoie une "erreur d'execution 438"

Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)

Dim choix As String

choix = CC.Range.Text

If CC.Title = "Civilité" Then

Select Case choix
Case "Monsieur"
 ActiveDocument.CC.Title("Agee").DropDown.Value = 1
Case "Madame"
 ActiveDocument.CC.Title("Agee").DropDown.Value = 2
 
End Select

End If
End Sub

Je ne suis pas compétant sur ce langage et je n'ai malheureusement pas le temps de pousser les recherches plus loin, est-ce que l'un ou l'une de vous aurait une idée ?

Merci par avance


Windows / Firefox 110.0

2 réponses

  1. thev Messages postés 2011 Date d'inscription   Statut Membre Dernière intervention   724
     

    Bonsoir,

    ci-dessous code :

    Private Sub Document_ContentControlOnExit(ByVal CC As ContentControl, Cancel As Boolean)
        Dim ctrl As ContentControl
        Dim valeur As ContentControlListEntry
        Dim i As Integer
        
        If CC.Title = "Civilité" Then
            
            For Each ctrl In ActiveDocument.ContentControls
                
                If ctrl.Title = "agee" Then
                    For Each valeur In CC.DropdownListEntries
                        i = valeur.Index
                        If valeur = CC.Range.Text Then Exit For
                    Next valeur
                    ctrl.Range.Text = ctrl.DropdownListEntries(i)
                End If
            
            Next ctrl
        
        End If
    
    End Sub
    

    0
  2. Yersi
     

    Ah oui, j'en étais beaucoup plus loin que je pensais. Merci du coup, ça fonctionne niquel

    0