XL 2010 ComboBox plusieurs colonnes

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

  • Combo avec plusieurs colonnes.xlsm
    23.8 KB · Affichages: 5

JM27

XLDnaute Barbatruc
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

mapomme

XLDnaute Barbatruc
Supporter XLD
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

  • JM27-Combo avec plusieurs colonnes- v1.xlsm
    24.2 KB · Affichages: 10
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
J'ai toujours mon objet ComboBoxLiées qui permet de gérer plusieurs ComboBox en même temps pour des colonnes différentes si ça vous intéresse.
Exemple avec Nom et Prénom joint.
 

Pièces jointes

  • CLsCAsContacts.xlsm
    159.6 KB · Affichages: 5

JM27

XLDnaute Barbatruc
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
 

JM27

XLDnaute Barbatruc
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

  • JM27-Combo avec plusieurs colonnes- v1.xlsm
    22.1 KB · Affichages: 14
Dernière édition:

ChTi160

XLDnaute Barbatruc
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:

fanch55

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
314 486
Messages
2 110 115
Membres
110 672
dernier inscrit
CHACHALUBAN