XL 2010 ComboBox plusieurs colonnes

  • Initiateur de la discussion Initiateur de la discussion JM27
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

JM27

XLDnaute Barbatruc
Bonsoir
j'ai une combobox ayant plusieurs colonnes.
mais seulement une seule est affichée dans la zone du déroulant
Je souhaiterais avoir les deux valeurs d'affichées.
Il y a surement une propriété de la combo à changer , mais laquelle
merci de votre aide
 

Pièces jointes

Salut @mapomme
Hélas ce n'est pas cela
Je voudrais avoir les deux valeurs d'affichées dans la zone de saisie
On voit bien les deux valeurs dans le déroulant , mais une seule est affichée
avec un columnCount de 2 et un columnWidth de 100;100

nota : je ne veux pas contourner le pb avec une concaténation des deux valeurs
 

Pièces jointes

  • exemple1.gif
    exemple1.gif
    140.2 KB · Affichages: 21
Re,

Une piste dans le fichier joint qui utilise un contrôle Label1 superposé à cbComboBox combiné avec l’évènement cbComboBox_Change.

VB:
Private Sub cbComboBox_Change()
   If cbComboBox.ListIndex >= 0 Then Label1 = cbComboBox.List(cbComboBox.ListIndex, 1) Else Label1 = ""
End Sub
 

Pièces jointes

Dernière édition:
Bonsoir
Je pensais que l'on pouvais faire simple avec une seule combo.

VB:
 With cbComboBox
         .ColumnCount = 2
         .BoundColumn = 2
    End With
Ne fonctionne pas
Avec plusieurs combo en cascade ou label associés à une combo , je sais faire .

Je vais donc me diriger vers une concaténation et splitter ensuite
merci de votre participation
 
Bonsoir
Merci de t'intéresser à mon PB
Non une seule combo box avec nom et prénom
regardes le Gif du #3 svp ( un peu comme une listbox avec deux colonnes, mais avec une combo.)
la combo box ( avec ses deux colonnes ) correspondant à une ligne dans le fichier correspondant
L'exemple de MaPomme du #4 correspond à peu près mais je voudrais le réaliser qu'avec une combo.
Voir le résultat que je souhaite ( mais un peu capillo-tracté)
 

Pièces jointes

Dernière édition:
Bonjour le Fil
ou alors mettre en première colonne 0 le Nom et Le Prénom Concaténés et dans les autres le Détail Nom en Colonne 1 et Prénom en Colonne 2
le code de ton Fichier modifié
VB:
Private Sub UserForm_Initialize()
Dim DerCell As String, NbLigneUtilisée
Dim Cell As Range
  Me.cbComboBox.ColumnCount = 3 'trois colonnes'
  Me.cbComboBox.ColumnWidths = "1;0;0" 'la premère visible'
   DerCell = Range("A1").End(xlDown).Row
   With Sheets("Feuil1")
      For Each Cell In .Range("A2:A" & .Range("A1").End(xlDown).Row)
        Me.cbComboBox.AddItem (Cell & "             " & Cell.Offset(0, 1))
        Me.cbComboBox.List(Me.cbComboBox.ListCount - 1, 1) = Cell
        Me.cbComboBox.List(Me.cbComboBox.ListCount - 1, 2) = Cell.Offset(0, 1)
      Next   
   End With
End Sub
Pas sûr d'avoir compris Lol
Bonne Journée
Jean marie
Edit : dans le Fichier de @mapomme il y a une erreur dans les Index pris en compte
VB:
Private Sub CommandButton1_Click()
   With cbComboBox
      If .ListIndex > -1 Then
      'il faut index de Colonnes 0 et 1 et Non 1 et 2
         MsgBox .List(.ListIndex, 0)            'La numérotation des colonnes commence à 0
         MsgBox .List(.ListIndex, 1)
      End If
   End With
End Sub

Private Sub UserForm_Initialize()
Dim DerCell As String, NbLigneUtilisée
Dim Cell As Range
   Label1 = ""
   Label1.BackColor = cbComboBox.BackColor
   DerCell = Range("A1").End(xlDown).Row
   With Sheets("Feuil1")
      For Each Cell In .Range("A2:A" & .Range("A1").End(xlDown).Row)
         Me.cbComboBox.AddItem
         Me.cbComboBox.List(NbLigneUtilisée, 0) = Cell
         Me.cbComboBox.List(NbLigneUtilisée, 1) = Cell.Offset(0, 1)
         NbLigneUtilisée = NbLigneUtilisée + 1
      Next
   End With
End Sub
 
Dernière édition:
Bonjour à tous,
Pas mieux que @ChTi160,
mais tel que c'est codé, on ne voit plus l’utilité des subitems 1 et 2
ci-dessous version utilisant ces 2 subitems à l'affichage ( mais même combat que Chti ) 🥴
VB:
Private Sub UserForm_Initialize()
Dim Cell As Range
Dim DerCell: DerCell = Sheets("Feuil1").Range("A1").End(xlDown).Row
    With Me.cbComboBox
        .BoundColumn = 1
        .ColumnCount = 3
        .ColumnWidths = 0
        .TextColumn = 1
        For Each Cell In Sheets("Feuil1").Range("A2:A" & DerCell)
            .AddItem  Cell & vbTab & Cell.Offset(0, 1)
            .List(.ListCount - 1, 1) = Cell
            .List(.ListCount - 1, 2) = Cell.Offset(0, 1)
        Next
    End With
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
40
Affichages
3 K
Réponses
1
Affichages
41
  • Question Question
Microsoft 365 Power Query
Réponses
8
Affichages
112
Retour