• Vous avez aimé ?
    Partagez ;-)

Vous pensiez peut-être qu’il était impossible de personnaliser chaque ligne d’une ComboBox en les colorant, en modifiant la mise en forme du texte, etc. Eh bien, ce n’est pas tout à fait vrai ;-)

 

Par défaut, le contrôle ComboBox ressemble à ça :

 

combobox

 

Et il est vrai qu’il est techniquement impossible de personnaliser les lignes de ce contrôle …

 

Mais si vous avez besoin d’un contrôle (ou d’une fonctionnalité d’un contrôle) et que celui-ci n’existe pas, tout n’est pas perdu !

 

Si c’est vraiment important pour vous, sachez qu’avec un peu de temps et de l’imagination, vous pouvez créer de toute pièce le contrôle dont vous avez besoin (et ça ne se limite pas aux ComboBox) !

Y aller petit à petit

Créer un contrôle peut effrayer, mais en réalité ce que j’appelle « créer un contrôle » serait plutôt « combiner astucieusement des contrôles basiques » …

 

Voici, en résumé, comment il faut voir les choses pour créer un contrôle unique :

 

1. Une liste déroulante, c’est tout d’abord un carré/rectangle qui se place juste au-dessous de la liste :

 

combobox étape 1

 

Vous pouvez par exemple utiliser un contrôle Image (et conserver une ComboBox vide) …

 

2. Ensuite, dans une liste déroulante, vous avez un certain nombre de lignes :

 

combobox étape 2

 

Vous pouvez utiliser des Labels pour les lignes (avec fonds colorés pour l’exemple) …

 

3. Il manque encore une barre de défilement et vous obtenez (en apparence) votre ComboBox personnalisée :

 

combobox étape 3

 

Ajout d’un contrôle ScrollBar …

 

4. Il ne reste plus qu’à ajouter les événements utiles à son fonctionnement. Pensez au comportement d’une ComboBox et reproduisez ces effets (avec des événements simples pour la plupart) :

  • Utilisez des événements Click pour afficher/masquer la liste
  • Modifiez le contenu des Labels en fonction de la ScrollBar
  • Validez le choix au Click

Et voila, votre liste déroulante personnalisée est prête !

Effet de survol (hover)

Si vous voulez aller encore un peu plus loin, vous pouvez ajouter l’effet de survol sur les Labels au passage de la souris (oui, ça aussi c’est possible ;-) ).

 

Voici l’astuce que j’ai imaginée pour réaliser l’effet de survol :

  1. J’ai placé le contrôle Image au-dessus des Labels
  2. J’ai utilisé l’événement MouseMove du contrôle Image pour connaître la position verticale (Y) de la souris
  3. Grâce à cette information, il m’a été possible de savoir sur quel Label est positionnée la souris et donc de changer les couleurs pour donner l’apparence du survol
  4. Quant au Click sur les Labels (pour valider le choix dans la liste), il est simplement remplacé par le Click sur l’Image

combobox étape 4

Excellente compatibilité

Lorsque vous créez un contrôle personnalisé de cette manière-là (c’est à dire, en utilisant les contrôles basiques d’Excel), vous n’aurez normalement aucun problème en changeant de poste ou de version d’Excel.

 

Si je teste par exemple cette liste déroulante avec Excel 2002, elle fonctionne très bien :

 

combobox colorée excel 2002

Cadeau

Bonne nouvelle, j’ai décidé de mettre à disposition le fichier Excel de cette liste déroulante et son code VBA ! Vous pouvez le télécharger en cliquant ici : combobox_multicolore.xls

Possibilités illimitées ou presque

Les possibilités ne sont pas limitées à la création d’une liste déroulante ! Vous pouvez créer à peu près tout ce que vous voulez comme contrôle pour Excel …

 

Pour prendre un exemple concret, je voulais pour mon logiciel de planning une ListBox avec des boutons de tri au-dessus de chaque colonne et dans laquelle je pourrais utiliser des couleurs.

 

Evidemment, un tel contrôle n’existe pas à la base, mais en combinant des contrôles basiques, il est possible de réaliser presque tout ce qui est imaginable :

 

planning listbox

 

Voila, j’espère que cet article vous donnera de l’inspiration ;-)

 

N’hésitez pas à laisser un petit commentaire …