Multicolonne dans combobox

  • Initiateur de la discussion Initiateur de la discussion piga25
  • 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 !

piga25

XLDnaute Barbatruc
Bonjour,

Après de multiples recherches et essais, je n'arrive pas a afficher dans une combobox le résultat complet d'une recherche.
Je m'explique, je souhaite afficher dans la combobox3 qui comprend 02 colonnes le résultat des cellules se trouvant en colonne D et E de ma recherche TextBox11 qui lui effectue la recherche en colonne D. Pour le moment, je n'arrive a afficher dans la ComboBox3 que de ce qui est en colonne D, par contre ce qui se trouve en colonne E n'apparait pas.
De plus à chaque fois, lorsque clique sur la ligne de résultat en combobox3, cela me renvoi toujours sur la première ligne de mon tableau.

Code:
Private Sub ComboBox3_Change()
Dim lig
lig = Feuil2.[D:E].Find(ComboBox3.Text, lookat:=xlWhole).Row
Rows(lig).Select
TextBox9 = Feuil2.Cells(lig, "H")
TextBox10 = Feuil2.Cells(lig, "C")
Me.CheckBox3 = IIf(Feuil2.Cells(lig, "D") = "", False, True)
End Sub
Private Sub TextBox11_Exit(ByVal Cancel As MSForms.ReturnBoolean)
SendKeys "%{UP}"
End Sub
Private Sub TextBox11_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim c, firstAddress
Me.ComboBox3.Clear
TextBox9 = "": TextBox10 = "": CheckBox3 = False
If Me.TextBox11 = "" Then Exit Sub
ComboBox3.ColumnCount = 2
With Feuil2.Range("D2:E" & Feuil2.[E65000].End(3).Row)
Set c = .Find(TextBox11, LookIn:=xlValues, lookat:=xlPart, _
After:=[E65536].End(3), SearchDirection:=xlNext, _
SearchFormat:=False)
If Not c Is Nothing Then
firstAddress = c.Address
Do
Me.ComboBox3.AddItem c.Value
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
End Sub

Cordialement
 

Pièces jointes

Re : Multicolonne dans combobox

Bonjour,
Il me semble que tu compliques...
Si la recherche s'effectue bien en colonne D, que le résultat doit renvoyer colonnes D et E correspondante, et que ta combo comporte bien 2 colonnes
Code:
Private Sub TextBox5_Change()
Dim c, firstAddress
ComboBox2.Clear
TextBox6 = "": TextBox7 = "": CheckBox1 = False
If TextBox5 = "" Then Exit Sub
With Feuil2.Range("D2:D" & Range("D65000").End(xlUp).Row)
    Set c = .Find(TextBox5, LookIn:=xlValues, lookat:=xlPart)
    If Not c Is Nothing Then
        firstAddress = c.Address
        Do
            ComboBox2.AddItem c.Value
            ComboBox2.List(ComboBox2.ListCount - 1, 1) = c.Offset(, 1)
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstAddress
    End If
End With

End Sub
A+
kjin
 
Re : Multicolonne dans combobox

Bonjour le fil
Bonjour Kjin

Je ne comprends pas trop ta réponse car j'ai toujours le même résultat qu'auparavant.
Je tente une nouvelle explication:
Dans le fichier joint au 1er post, j'ai un userform multi page.
La page 1 (Saisie) me permet de renseigner mon tableau (colonne B à H)
La page 2 (Recherche) me permet d'effectuer des recherches à partir d'un mot ou expression situé dans la colonne E et de m'indiquer la ligne correspondante ou il se trouve.
La page 3 (Message important) doit me permette d'effectuer une recherche dans la colonne D qui elle n'est composée de cellule vide ou de cellule contenant 1 et enfin d'afficher le texte qui est en colonne E.

Mon souci c'est que je n'arrive pas à faire comme pour ma recherche de la page 2. Je n'arrive pas a obtenir les résultats de la recherche dans ce combobox (colonne 1 = Colonne D ; colonne 2 = colonne E) et ensuite indiquer la ligne correspondante (comme pour la page 2 (recherche).

Cordialement
 
Re : Multicolonne dans combobox

Bonjour
Bonjour Kjin

Oui j'ai bien remarqué que tu avait bien mis "TextBox5" donc j'ai remplacé mon code existant par le tien que j'ai mis pour ma page 2 de l'userform2 mais je n'ai pas le résultat escompté.
Ensuite j'ai bien changé "TextBox5" en "TextBox11" ainsi que le reste comme le code ci-dessous pour ma page 3 de l'userform2 qui est intitulé "Message important".

Code:
          Private Sub ComboBox3_Change()
 'On affiche la 2e colonne avec la propriété TextColumn = 2 de la combo
 'On récupérer le N° de ligne dans la textbox9
 If ComboBox3.ListIndex = -1 Then Exit Sub
 TextBox9 = "Ligne " & ComboBox3.List(ComboBox3.ListIndex, 2)
  End Sub
 

 Private Sub TextBox11_Change()
 Dim c, firstAddress
 ComboBox3.Clear
 TextBox9 = ""
 If TextBox11 = "" Then Exit Sub
 With Feuil2.Range("D2:D" & Range("D65000").End(xlUp).Row)
     Set c = .Find(TextBox5, LookIn:=xlValues, lookat:=xlPart)
     If Not c Is Nothing Then
         firstAddress = c.Address
         Do
             ComboBox3.AddItem c.Value
             ComboBox3.List(ComboBox3.ListCount - 1, 1) = c.Offset(, 1)
             ComboBox3.List(ComboBox3.ListCount - 1, 2) = c.Row 'Pour récupérer le N° de ligne
             Set c = .FindNext(c)
         Loop While Not c Is Nothing And c.Address <> firstAddress
     End If
 End With
  End Sub
Comme résultat j'ai dans :
textBox9 : ligne
textBox10 :
Checbox2:
ComboBox3 : En cliquant sur la flèche à droite apparait 03 lignes dont la première est vide mais contient 2 colonne, la seconde est composé d'une seule colonne ou est inscrit le chiffre 1 (chiffre correspondant à ma recherche) et la troisième ligne est identique à la seconde.

Ce que je souhaite avoir dans cette page3 "message important", c'est quand je mets "1" dans la textBox11 et qu'ensuite je clique sur la flèche de la combobox3 que cela m'indique dans cette combobox3, tous les résultats de ligne des colonnes D et E de mon tableau, et qu'après lorsque je clique sur une des réponse cela me renvoi sur la bonne ligne de mon tableau.

Il y a peut être plus simple en modifiant complétement la page 3 vu que c'est systématiquement tous les messages importants qui sont recherchés.
 
Re : Multicolonne dans combobox

Bonjour

Kjin, j'ai essayé ton fichier et il fonctionne. Comme tu avais changer la forme de l'userform et que celui-ci correspondait à mon userform1, je n'avais pas tout saisie.
De plus je pense avoir compris ton code (pas si évident que cela pour moi)
J'adapte cette solution qui paraît me convenir à mon Userform .
Cordialement
 
Re : Multicolonne dans combobox

Bonjour tout le monde,

Je pensais trouver ma recherche facilement mais la je stagne (Je n'ai pas fait de nouveau poste car le titre définit bien ma demande) :

Il y a quelque temps j'avais posté une demande (Ce lien n'existe plus)
pour récupérer la valeur d'une listbox multicolonne sur une feuille excel et ca donnait ca:

Private Sub CommandButton1_Click()
ActiveWindow.WindowState = xlMaximized
Dim k As Integer, i As Integer, x As Byte
i = i + 1
For k = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(k) Then
With Sheets("feuil1")
For x = 0 To 40
.Cells(i + 10, x + 1) = ListBox1.List(k, x)
Next
i = i + 1
End With
End If
Next
End Sub

J’ai tenté d’utilisé cette formule pour une combobox et ca coince à la 6ème ligne (If ListBox1.Selected(k) Then). Normal car « Combobox1.selected » n’est pas possible.
En fait, je voudrais tout simplement adapter la formule ci-dessus pour une combobox. Pourriez-vous m’aider s’il vous plait ?
 
Dernière édition:
- 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
2
Affichages
475
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
564
Réponses
2
Affichages
175
Retour