TextBox en fonction de l'item sélectionné dans ListBox
Bonjour à tous,
Je viens vers vous car je suis complètement bloqué.. Voilà le défi :
La finalité du projet est un Userform indiquant des informations sur des affaires.
J'ai une ListBox alimentée par des colonnes d'une base de données située dans un autre classeur, jusque là tout va bien. Je souhaite avoir (sur le même userform) des textbox qui vont chercher dans cette base de données et qui se remplissent en fonction de l'item sélectionné dans ListBox.
Autrement dit, ma ListBox récupère les infos colonne A, B, C par exemple, et je voudrais que textBox récupère l'info de la même ligne sélectionné sur ListBox, mais colonne D de ma base.
J'espère être clair... Voilà mon code, et un immense merci à celui ou celle qui osera ce défi
Private Sub ComboBox2_Change()
Dim Ligne As Long
Dim Tmp As String
Application.ScreenUpdating = True
Dim Wb As Workbook
Dim Ouvert As Boolean
Tmp = SansAccent(Tmp)
Application.ScreenUpdating = False
Application.Cursor = xlDefault
Workbooks.Open Filename:=ThisWorkbook.Path & "\BDDConcertoVf.xlsm"
With Worksheets("BDD")
Worksheets("BDD").Unprotect
.Range("A:A").Interior.ColorIndex = 2
Tmp = Me.ComboBox2
Me.ListBox1.Clear
Me.ListBox3.Clear
' Me.ListBoxDate.Clear
' Me.ListBoxPays.Clear
' Me.ListBoxVille.Clear
If Tmp <> "" Then
For Ligne = 1 To .Cells(Rows.Count, 1).End(xlUp).Row
If .Cells(Ligne, 1) Like "*" & Tmp & "*" And .Cells(Ligne, 6) <> "0" And .Cells(Ligne, 6) <> "" Then
Me.ListBox1.Visible = True
Me.ListBox1.AddItem .Cells(Ligne, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = .Cells(Ligne, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = .Cells(Ligne, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = .Cells(Ligne, 3)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = .Cells(Ligne, 5)
End If
Next
End If
End With
Worksheets("BDD").Protect
Workbooks("BDDConcertoVf.xlsm").Close SaveChanges:=False
End SubBonjour,
une solution pourrait consister à insérer dans la listbox, l'info de la colonne D sans augmenter le nombre de colonnes de la listbox
.../...
Me.ListBox1.Visible = True
Me.ListBox1.AddItem .Cells(Ligne, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = .Cells(Ligne, 2)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 1) = .Cells(Ligne, 1)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 2) = .Cells(Ligne, 3)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 3) = .Cells(Ligne, 5)
Me.ListBox1.List(Me.ListBox1.ListCount - 1, 4) = .Cells(Ligne, 4) ' <= info supplémentaire Col D qui n'apparaitra pas
.../...puis pour l'affichage dans les textbox:
Private Sub ListBox1_Click()
With Me.ListBox1
TextBox1 = .List(.ListIndex, 0)
TextBox2 = .List(.ListIndex, 1)
TextBox3 = .List(.ListIndex, 2)
TextBox4 = .List(.ListIndex, 3)
TextBox5 = .List(.ListIndex, 4) '<= affichage colonne D
End With
' on pourrait utiliser une boucle sur les textbox ...
End SubA+
C'est une superbe idée, j'essaye ça tout de suite et je reviens vers toi
MERCI
Je vais réussir à faire ce que je veux, un grand merci pour ton temps !