Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 ComboBox afficher 2 colonnes

exe76

XLDnaute Nouveau
Bonjour,
je suis novice en VBA et j'aimerai dans une ComboBox afficher 2 élément Nom et Prénom qui se situent en colonne A et B de mes feuilles de calculs.

VB:
Private Sub ComboBox1_Change()
  If Me.ComboBox1.Value = "" Then Exit Sub
  Dim i As Long
  For i = 2 To Sheets(Me.ComboBox1.Value).Range("A" & Rows.Count).End(xlUp).Row
    Me.ComboBox2.AddItem Sheets(Me.ComboBox1.Value).Range("A" & i).Value
    Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 1) = i
  Next
End Sub

Ma ComboBox1 me permet de sélectionner ma feuille de calcul
La ComboBox2 sélectionne nom et prénom de cette même feuille.

J'ai bien un Column count a 2 j'arrive a obtenir le Nom (colonne A) mais pas le prénom en colonne B a la place j'arrive juste a avoir le numéro de la ligne du prénom.

en espérant que vous pourrez m'aider
merci d'avance
 
Solution
bonjour
remplaces
VB:
Me.TextBox1.Value = Sheets(Me.ComboBox1.Value).Range("A" & Me.ComboBox2.Column(1)).Value

par

Me.TextBox1.Value = Sheets(Me.ComboBox1.Value).Range("A" & Me.ComboBox2..listindex+2).Value

pour le premier ; les autres lignes : pareil

nota: dans la propriété listindex est rangé le numéro de l'item sélectionné ( le premier ayant listindex à 0) d'où le +2 car ta liste commences en ligne 2 dans ta feuille

JM27

XLDnaute Barbatruc
bonjour
A tester

VB:
Private Sub ComboBox1_Change()
  If Me.ComboBox1.Value = "" Then Exit Sub
  Dim i As Long
  For i = 2 To Sheets(Me.ComboBox1.Value).Range("A" & Rows.Count).End(xlUp).Row
    Me.ComboBox2.AddItem
    Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 0) = Sheets(Me.ComboBox1.Value).Range("A" & i)
    Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 1) =  Sheets(Me.ComboBox1.Value).Range("B" & i)
  Next
End Sub
 

exe76

XLDnaute Nouveau
super ca fonctionne parfaitement !

pourrais tu m'expliquer pourquoi rajouter Me.ComboBox2.AddItem ?et les 1, 0 et 1, 1 ? a quoi cela correspond que j'arrive a comprendre ?
je te remercie beaucoup en tout cas
 

JM27

XLDnaute Barbatruc
bonjour
Add item : on a joute un item ( une ligne dans la combo box)
donc a la première boucle la list count est de 1 dans la combo box
Me.ComboBox2.List(Me.ComboBox2.ListCount - 1, 0) : la liste de la combo box commence à l'index 0 d'ou le list count est -1

concernant le 0 et le 1 , c'est le numéro de colonne de la combo box ( la aussi le nb de colonne commence à zéro ) donc la colonne 1 de la combo est le zéro et la colonne 2 est le 1.
voila
peut être pas très clair mon explication ?
 

exe76

XLDnaute Nouveau
merci pour tes explications ! oui j'ai compris maintenant par contre quand je sélectionne le nom dans la ComboBox j'ai un erreur dans l'affichage dans mes textbox maintenant
erreur d'execution 1004 erreur définie par l'application ou par l'objet !
une idée ?
VB:
Private Sub ComboBox2_Change()
  If Me.ComboBox2.Value = "" Then Exit Sub
  Me.TextBox1.Value = Sheets(Me.ComboBox1.Value).Range("A" & Me.ComboBox2.Column(1)).Value
  Me.TextBox2.Value = Sheets(Me.ComboBox1.Value).Range("B" & Me.ComboBox2.Column(1)).Value
  Me.TextBox3.Value = Sheets(Me.ComboBox1.Value).Range("C" & Me.ComboBox2.Column(1)).Value
  Me.TextBox5.Value = Sheets(Me.ComboBox1.Value).Range("D" & Me.ComboBox2.Column(1)).Value
  Me.TextBox6.Value = Sheets(Me.ComboBox1.Value).Range("E" & Me.ComboBox2.Column(1)).Value
End Sub
 

JM27

XLDnaute Barbatruc
bonjour
remplaces
VB:
Me.TextBox1.Value = Sheets(Me.ComboBox1.Value).Range("A" & Me.ComboBox2.Column(1)).Value

par

Me.TextBox1.Value = Sheets(Me.ComboBox1.Value).Range("A" & Me.ComboBox2..listindex+2).Value

pour le premier ; les autres lignes : pareil

nota: dans la propriété listindex est rangé le numéro de l'item sélectionné ( le premier ayant listindex à 0) d'où le +2 car ta liste commences en ligne 2 dans ta feuille
 

Discussions similaires

Réponses
17
Affichages
811
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…