Le fichier à télécharger contient:
Les principales caractéristiques:
- Le Module_MultiColumnComboBox à importer dans le projet VBA.
- Le UserForm1 et sa ComboBox1 qui donne un exemple d'utilisation.
Les principales caractéristiques:
- La sélection d'un item / ligne d'une ComboBox multi-colonnes est nativement amputée par Excel.
Seule la colonne .TextColumn (ou la 1ère par défaut) est affichée.
- Le Module_MultiColumnComboBox contient une fonction qui permet de remédier à ce problème en:
- Créant dynamiquement des Labels de la taille des colonnes sur la zone texte de la ComboBox,
- Valorisant ces Labels lors d'un changement de sélection.
- Les Labels n'ont aucun impact sur les valeurs de colonnes de l'item / ligne sélectionné normalement accessibles avec Me.ComboBox.Column(0 - n) dans le UserForm.
- S'applique aux ComboBoxes Active X ou en UserForm.
- Cette ressource peut être utilisé en conjonction avec celle-ci:
VBA - Ajouter facilement des titres à une ListBox ou une ComboBox (ActiveX ou UserForm)
Le fichier à télécharger Titres des colonnes ListBox avec des Labels.xlsm contient: Le Module_SetListBoxComboBoxTitles à importer dans le projet VBA. Module_Test comme exemple de mise en œuvre.. Note: Voir toutes mes ressources ->...excel-downloads.com
- Placer le Module_MultiColumnComboBox dans la projet VBA.
- Dans le code du UserForm, sur l'évènement ComboBox_Click(), appeler la fonction
MultiColumnComboBox_Click() avec le paramètre ad hoc (voir commentaires).
-
VB:
'--------------- 'ComboBox1 Click '--------------- Private Sub ComboBox1_Click() 'Function to display all ComboBox columns Call MultiColumnComboBox_Click(Me.ComboBox1) End Sub
- Il est préférable de définir en points (unité par défaut) dans la propriété ComboBox.ColumnWidths, la largeur de toutes les colonnes de la ComboBox. Les colonnes dont la largeur n'est pas définie se partageront la largeur restante de la ComboBox.
- Au cas où cette ressource est utilisée en conjonction avec celle qui permet d'ajouter des titres à la ComboBox, il faut préalablement exécuter la mise en place des titres. Cela permet d'éviter d'avoir à fournir la largeur des colonnes qui aura déjà été définie pour les titres.
- V1 - Initiale.
- V2 - Ajout d'attributs de texte de la ComboBox vers les Labels et préservation des bordures de la ComboBox.
- V3 - Simplification avec l'utilisation d'une seule fonction.
- V4 - Réglage affiné des positions des Labels et de la taille de police.
- V5 - Contournement d'un nouveau BUG Excel.
'NEW EXCEL BUG ! Just affecting any value (True or False) to these Label.Font.Properties sets them to True !!!
Label.Font.Bold = ComboBox.Font.Bold
Label.Font.Italic = ComboBox.Font.Italic
Label.Font.Strikethrough = ComboBox.Font.Strikethrough
Label.Font.Underline = ComboBox.Font.Underline - V6 - Correction d'un Bug !
- V7 - Ajout de la capacité à saisir une valeur en ComboBox grâce au nouveau Module de Classe Class_MultiColumnLabel. Cela est surtout utile si la ressource VBA - Saisie filtrée (alias saisie intelligente) en ComboBox est utilisée conjointement avec cette ressource.
- V8 - Retour à un code simple sans saisie en ComboBox et support de la ComboBox Active X.
La version avec Class_MultiColumnLabel permettant la saisie en ComboBox est dans le 1er post de la discussion.