Afficher un message
Vieux 31/12/2006, 02h34   #10 (permalink)
myDearFriend!
XLDnaute Barbatruc
 
Avatar de myDearFriend!
 
Date d'inscription: février 2005
Messages: 2 295
Par défaut Re : Listes déroulantes intégrées en cascade

Bonsoir Spitnolan08, bqtr, Bebere,

Tu trouveras ci-joint, une nouvelle adaptation du fichier pour tenter de répondre au mieux à ta demande.

Citation:
Envoyé par Spitnolan08
il y a quelque chose que je ne comprends pas : Lorsque je sélectionne dans le menu de niveau 4 des items présentant des parenthèses (Ex : sélection en niv 3 de « FRAIS ET TAXES » puis sélection de « Taxes d'urbanisme (TLE / TDENS / TDCAUE / EV) », « Taxes d'assainissement (TRE) » ) ni le libellé du choix 4 ni le code correspondant ne s’affichent alors que ça marche dans tous les autres cas.
Ce n'est pas les parenthèses qui causent problème mais la présence d'apostrophe. C'est dû notamment à ma fonction Replace() dont tu parles un peu plus loin. J'ai dû utiliser ce subterfuge car la présence de l'apostrophe rendait inopérant le passage d'arguments dans la ligne :
Code:
.OnAction = "'Niv3 """ & .Caption & """'"
Je suppose qu'on pourrait essayer de contourner ce problème à grand coup de Chr() et compagnie mais je n'ai pas pris le temps de tester...

Citation:
Envoyé par Spitnolan08
Un défi supplémentaire : est il possible d’ajouter dans la bande bleue située en partie gauche des menus popup le code de l’élément ?
Non et Oui !
Non, car dans cette bande bleue on ne peut y mettre que des icônes. Non encore car aucune icône n'est possible sur le premier niveau de menu (celui qui se termine par une petite flèche) car c'est un ControlPopUp, il est lui même conteneur d'un autre niveau. A ma connaissance le ControlPopUp ne peut afficher d'icône.
Oui, sur le dernier niveau seulement (ControlButton), si on utilise des icônes représentants des chiffres pour sympoliser tes codes. On le ferait comme ça :
Code:
                    With .Controls.Add(msoControlButton)
                        .Caption = ....
                        .OnAction = ....
                        .FaceId = 71
                    End With
Pour info, les chiffres de 0 à 9 sont représentés par les codes 70 à 79.

Citation:
Envoyé par Spitnolan08
Dans SpecialCells, à quoi correspond l’argument Value = 3 ? Quelles sont les autres valeurs possibles de cet argument ?
L'aide VBA sur le mot clé SpecialCells devrait t'en apprendre d'avantage. La valeur 3 correspond au cumul des deux valeurs xlTextValues (qui vaut 2) et xlNumbers (qui vaut 1). Pour connaître les valeurs correspondant à ces constantes, dans l'éditeur VBE, tu fais F2 pour afficher l'explorateur d'Objets, puis une recherche sur SpecialCellsValue. En sélectionnant les différentes constantes, tu obtiens leur valeur au bas de la fenêtre.

Citation:
Envoyé par Spitnolan08
Comment le menu popup se place t’il au bon endroit ?
Avec la méthode ShowPopup, tu peux spécifier des coordonnées X,Y mais si tu ne mets rien, les coordonnées du curseur de souris sont automatiquement prises en compte.

Dans le fichier joint, j'ai contourné ces problèmes rencontrés en concaténant les Eléments et Codes associés dans l'affichage du menu déroulant (séparés par 3 espaces consécutifs) et en scindant (fonction Split) la chaine obtenue dans les macros Niv3() et Niv4() pour scinder à nouveau les valeurs et les associées aux bons contrôles.
Une petit remarque au passage, l'utilisation de contrôles Label me paraît plus indiqué (que les TextBox) si l'objectif est simplement d'afficher des données sans permettre de modification.

Cordialement,
Fichiers attachés
Type de fichier : zip My_ComboBoxEnCascade.zip (33,5 Ko, 121 affichages)
__________________
Didier_mDF

www.mdf-xlpages.com
myDearFriend! est déconnecté   Réponse avec citation