Gérer la hauteur de la liste déroulante d'une combobox

Bonjour à toutes et à tous,

Malgré mes recherches sur le Net, je n'arrive pas à trouver la solution au problème auquel je suis confronté.

En effet, dans le cadre de l'appli VBA Excel que je cherche à développer et pour le confort de l'utilisateur, je dois ouvrir un formulaire en bas d'écran, collé à la barre des tâches, de façon à laisser le haut de l'écran libre pour les tâches à effectuer par l'utilisateur et en laissant le formulaire visible en bas de l'écran. Le souci c'est que ce formulaire contient des combobox et lorsque, en cliquant dessus, la liste déroulante s'ouvre, la partie basse de la liste déroulante disparait sous la barre des tâches rendant l'accès aux valeurs situées en bas de liste impossible. Étant donné que le menu déroulant s'ouvre en affichant un ascenseur, l'utilisateur n'a pas besoin d'une liste déroulante aussi grande, c'est pour cette raison que je cherchais un moyen de limiter la hauteur de la liste déroulante (soit par l'affichage de 3 ou 4 valeurs pas plus soit en imposant une valeur maximale à la hauteur de la liste déroulante par exemple 100 pixels).

J'ai cherché mais je n'ai pas trouvé. Peut-être est-ce dû à un mauvais choix de mot de recherche de ma part ? Ou peut-être n'est-ce tout simplement pas possible ?

Dans le cas pour lequel ce ne serait pas possible, je me disais qu'il serait peut-être envisageable de faire "remonter" un peu le formulaire au moment du clic sur la combobox pour permettre l'affichage complet de la liste déroulante, puis de lui faire reprendre sa place initiale dès la sélection effectuée ; mais je ne sais pas si cela est faisable.

Si quelqu'un a une réponse ou une idée, je l'en remercie par avance.

Bien cordialement

Bonjour,

En cherchant, je suis tombé sur ceci. Je n'ai pas l'occasion de tester. Je t'en laisse le soin. Je ne suis pas certain que ce soit ça, mais ça peut y ressembler.

Bonjour,

Merci de cette réponse. En cherchant à vérifier si cela marchait ou non, j'ai rapidement créé un formulaire contenant une combobox placé en bas de l'userform lui-même placé en bas de l'écran (pour me mettre dans la situation correspondant à l’application que je cherche à développer) et en testant simplement cela avant d'insérer le code proposé sur le lien indiqué, j'ai eu la surprise de constater que la liste déroulante se déroule vers le haut alors que sur, l'application que j'ai commencé à développer, la liste déroulante se déroule systématiquement vers le bas. J'ai déplacé la combobox sur l'userform fait pour essai et j'ai constaté que le déroulement se faisait automatiquement vers le haut ou vers le bas selon l'emplacement de la combobox. Cela me suffirait amplement mais je ne comprends pas pourquoi cela ne se fait pas sur l'userform de l'application que j'ai commencé à développer. Je n'ai rien trouvé dans les propriétés des combobox qui justifierait une telle différence de comportement.

Re,

Je pense que c'est la propriété integralheigh qui fait ça. Ça oblige la liste à s'afficher en entier dans l'usf si j'ai bien compris (je n'ai regardé que vite fait). Du coup, ça s'adapte au mieux.

Doc ici.

Est-ce que dans ton application d'origine, tu as modifié un paramètre de base sans le vouloir ? Dur à dire comme ça à mon niveau.

Re,

J'ai essayé la propriété IntegralHeight mais elle génère une erreur de compilation car, comme cela est indiqué dans le lien que tu as eu la gentillesse de m'envoyer, cette propriété ne s'applique qu'au ListBox et au TextBox ; l'article n'évoque pas les ComboBox.

Par ailleurs, suivant ton indication, j'ai comparé, une à une, toutes les propriétés des ComboBox de mon projet avec celles de la ComboBox placée sur l'UserForm que j'ai créé ce matin pour essayer ton code et je n'ai trouvé aucune différence notable qui puisse expliquer une telle différence de comportement. C'est mystérieux... Et cela me laisse un peu démuni.

Ah oui désolé, je me suis laissé emporter par ton long récit et je suis resté sur liste déroulante, qui revient souvent. Donc pour moi c'était une listbox. J'ai zappé ton titre et le fait que c'était en fait une combobox.

Oups, désolé.

Bonjour à tous,

Pour répondre à la question initiale:

la propriété ListRows des Combobox définit le nombre de lignes de la liste. Par défaut elle a pour valeur : 8.

On peut la modifier par code ou manuellement...

A+

Ce n'est pas grave, merci de ton aide. Cela m'a permis de découvrir la propriété IntegralHeight ; comme quoi "à toute chose malheur est bon"...

Merci pour le renseignement concernant la propriété ListRows ; je vais essayer de mettre cela en pratique.

En revanche, j'aurai quand même bien aimé savoir et comprendre pourquoi la liste déroulante s'ouvre en fonction de la position de la position de la ComboBox dans l'userform tout simple que j'ai fait pour essayer ; ce qui me parait logique et pourquoi cela ne marche pas dans l'userform de mon projet qui est certes beaucoup plus compliqué mais qui devrait, en toute logique obéir aux mêmes règles. Si quelqu'un a une idée...

En tout cas, merci à tous de vos contributions.

Rechercher des sujets similaires à "gerer hauteur liste deroulante combobox"