Icône de la ressource

VBA - Ajouter facilement des titres à une ListBox ou une ComboBox (ActiveX ou UserForm) V6

Le fichier à télécharger Titres des colonnes ListBox et ComboBox avec des Labels.xlsm contient:
  1. Le Module_SetListBoxComboBoxTitles à importer dans le projet VBA.
  2. Module_Test comme exemple de mise en œuvre..
Note: Voir toutes mes ressources -> https://excel-downloads.com/resources/?creator_id=268468

Les principales caractéristiques:
  • 1 fonction:
    • SetListBoxComboBoxTitles() pour afficher les titres d'une ListBox ou d'une ComboBox.

    • Pour une ComboBox multi-colonnes, il faut utiliser cette ressource en conjonction de celle-ci.

  • Cette procédure permet de créer des titres au-dessus de la ListBox ou de la ComboBox (Active X ou UserForm) placés dans des Labels créés dynamiquement et alignés sur les colonnes. Il faudra donc prévoir l'espace nécessaire.

  • Les titres sont passés en argument de la fonction.
    Le nombre de titres passés déterminera le nombre de colonnes de la ListBox (ListBox.ColumnCount) ou de la ComboBox (ComboBox.ColumnCount).

  • Les largeurs de colonnes, la fonte, la taille de fonte et l'alignement du texte peuvent optionnellement être passés en arguments de la fonction.

  • Si les largeurs de colonnes ne sont pas passées en argument, celles de la propriété ListBox.ColumnWidths sont utilisées.

  • Quelque soit la source des largeurs de colonnes, si toutes ne sont pas mentionnées, voire aucune, la largeur des colonnes non mentionnées est calculée sur la base de l'espace restant dans ListBox.Width également distribué. Si toutes sont mentionnées, la largeur de la ListBox (ListBox.Width) est ajustée au total des largeurs de colonnes. Dans les 2 cas, cela permet d'éviter une Scroll barre horizontale et de pouvoir placer tous les titres au-dessus des colonnes.
Remarque:
  • Il existe une propriété ListBox.ColumnHeads (True / False) pour intégrer une ligne de titre dans le cadre de la ListBox mais cette ligne n'est pas figée et aura les mêmes caractéristiques que celles des items de la liste.

  • Avec Excel il y a toujours un problème / bug à contourner !
    Excel ne respecte pas la largeur définie pour la dernière colonne et utilise pour celle-ci toute la place restante à droite de la ListBox.
    Et si une Scroll Bar verticale est ajoutée par Excel, elle pourra potentiellement masquer les données, en particulier si le ListBox.TextAlign = fmTextAlignRight pour aligner des nombres par exemple.
    Un commentaire dans le code, au niveau du paramètre VerticalScrollBar, explique comment contourner ce problème si besoin.
Mise en œuvre très simple:
  • Placer le Module_SetListBoxComboBoxTitles dans la projet VBA.

  • Dans le code VBA, utiliser la fonction SetListBoxComboBoxTitles avec les paramètres décrits dans le code.
Versions:
  • V1 - Initiale.
  • V2 - Ajout des paramètres ForeColor et BackColor pour les titres.
  • V3 - Ajout de la possibilité de définir les largeurs de colonnes en % de la ListBox.Width et de définir une bordure à la zone des titres.
  • V4 - Ajout du paramètre VerticalScrollBar (True par défaut) pour réserver la place à une barre de scroll vertical.
    Correction bug en ListBox UserForm quand le Parent de ListBox n'est pas le UserForm.
  • V5 - Ajout d'un commentaire sur le paramètre VerticalScrollBar concernant la dernière colonne de la ListBox (voir aussi la 2ème remarque ci-dessus).
    Application du ListBox.SpecialEffect à la zone de titres et suppression des paramètres BorderStyle et BorderColor.
  • V6 - Ajout des titres pour ComboBox.
Titres.gif