Listes déroulantes égales
Foreva
-
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24581 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour à toutes et à tous :)
J'aimerai avoir deux listes déroulantes qui ont les mêmes champs et qui se mettent à jour en cascade, c'est à dire lorsque j'en change un, les autres se changent de la même façon. Je n'ai rien trouvé sur le net susceptible de m'aider.
Merci ! ^^,
J'aimerai avoir deux listes déroulantes qui ont les mêmes champs et qui se mettent à jour en cascade, c'est à dire lorsque j'en change un, les autres se changent de la même façon. Je n'ai rien trouvé sur le net susceptible de m'aider.
Merci ! ^^,
3 réponses
-
Bonjour
Peux tu être plus précis ?
De quel type de liste déroulante parles tu ?
Quelle est ta version de Word ?
Tu veux changer le choix fait par l'utilisateur ou bien l'ensemble des items de la liste ?
m@rina
-
Bonjour m@rina et merci pour votre réponse ! Je suis sous Word 2010. J'ai des listes déroulantes de type "Contrôle de contenu de listes déroulantes" qui ont les mêmes valeurs à l'intérieur. Par exemple la liste A contient le nom des Villes, la liste B contient également le nom des villes. Je voudrai que, lorsque j'ajoute une ville dans la liste A, cette même ville sois également ajoutée dans la liste B. J'ai essayé de passer par Excel (extraire des données d'une colonne "ville" comme ça je n'aurai plus qu'à modifier le document Excel en question), mais je n'ai pas réussi. J'essaye donc d'avoir, directement dans le document Word, des listes qui ont les mêmes valeurs et qui se modifient en cascade.
Je ne veux donc pas changer le choix fait par les utilisateurs, mais bien les items de mes listes (pour ne pas avoir à les changer sur chacune de mes listes qui sont égales, et ce à chaque modification)
Ps : j'utilise ces listes là, mais je ne suis pas contre l'usage des zones de listes déroulantes (contrôle ActiveX).
J'ai essayé de par exemple leur donner le même nom mais ça ne fonctionne pas.
Si vous trouvez une solution ce serait carrément génial ^^,
-
-
Bonjour,
Désolée, mais je n'ai pas de réponses car déjà les événements dans Word sont rares, donc il n'y en a pas pour ce genre de choses.
m@rina
-
Bonjour,
salut m@rina, pas encore en vacances ? :-)
Une tentative.
Je ne connais pas vraiment vba word donc pas trop d'exigences svp... ;-)
J'ai choisi la liste déroulante 'héritée' car elle permet une gestion facile de sa mise à jour, et permet d'appeler une macro en sortie.
Par contre ce que je me suis aperçu à la fin (je ne connais pas word non plus :-)) c'est qu'il faut verrouiller le formulaire pour que les listes soient actives.
A partir de ce moment seuls les éléments du formulaire sont modifiables.
Pas sûr que ça t'ailles (?!?)
Les activeX perdent leur valeurs à la fermeture et obligerait à modifier la liste en dur dans le code. Pas terrible non plus...Sub maj_Liste() Dim source As Object, liste() As String, ObjF As FormField Dim nom, nb As Long, i As Long 'Stop Set source = Selection.FormFields nom = Split(source(1).Name, "_") If LCase(Left(nom(0), 7)) = "listegr" And nom(1) = "1" Then 'il s'agit de la liste 1 d'un groupe de listes nb = source(1).DropDown.ListEntries.Count ' nombre d'items de la liste maitre ' recup items de la liste 1 ReDim liste(1 To nb) With source(1).DropDown For i = 1 To nb liste(i) = .ListEntries(i).Name Next i End With For Each ObjF In ActiveDocument.FormFields With ObjF.DropDown If LCase(Split(ObjF.Name, "_")(0)) = LCase(nom(0)) Then ' même groupe de liste .ListEntries.Clear ' vider la liste ' on copie les items dans la liste For i = 1 To nb .ListEntries.Add Name:=liste(i) Next i End If End With Next ObjF End If End Sub
Explications dans le fichier.
https://mon-partage.fr/f/h734PS5X/
eric
-
Hello Eriiic
Merci de prendre le relais ! Je suis déjà partie en vacances et déjà revenue (après un mois complet quand même) ! ;)
Voilà pourquoi j'ai le cerveau un peu embrouillé.
Effectivement les champs hérités permettent le lancement de macro à la sortie, mais c'est lourd, car il faut, comme tu le soulignes, protéger le document, et donc le déprotéger à chaque modification du champ.
Sinon, faut faire une macro qui modifie toutes les liste déroulantes, mais il faudra la lancer, ce ne sera pas sur événement.
m@rina -
-