Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
Icône de la ressource

VBA - ComboBox Multi-Colonnes - Afficher toutes les colonnes de l'item sélectionné V8

Le fichier à télécharger contient:
  1. Le Module_MultiColumnComboBox à importer dans le projet VBA.
  2. Le UserForm1 et sa ComboBox1 qui donne un exemple d'utilisation.
Note: Voir toutes mes ressources -> https://excel-downloads.com/resources/?creator_id=268468

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:
Mise en œuvre très simple:
  • 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
Attention:
  • 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.
Versions:
  • 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.

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…