corloste
XLDnaute Nouveau
Bonjour,
J'effectue une recherche à partir d'une saisie sur Textbox et l'affichage du résultat sur un Listbox. Pour cela j'utilise une macro qui utilise un dictionnaire.
Jusqu'à présent je n'avais besoin que d'une seule colonne sur le Listbox et le code fonctionnait très bien.
Mon fichier évoluant, j'ai besoin maintenant d'une deuxième colonne dans le Listbox qui va récupérer la valeur contenue dans la cellule située à X cellules à côté de l'Item.
Mon problème est que soit j'arrive à remplir les 2 colonnes correctement mais avec des doublons, soit je n'ai pas de doublon mais rien dans la deuxième colonne.
Exemple code avec les doublons :
Pourriez-vous m'aider à trouver une solution pour garder ce système de recherche et remplir le Listbox sur 2 colonnes et sans doublon.
Merci.
J'effectue une recherche à partir d'une saisie sur Textbox et l'affichage du résultat sur un Listbox. Pour cela j'utilise une macro qui utilise un dictionnaire.
Jusqu'à présent je n'avais besoin que d'une seule colonne sur le Listbox et le code fonctionnait très bien.
Code:
Private Sub TextBox1_Change()
Dim recherche As String, adresse As String
ListBox1.Clear
Set mondico = CreateObject("Scripting.Dictionary")
recherche = TextBox1.Value
'Recherche sur liste
With Sheets("Feuil2").Range("F4:F65000")
Set c = .Find(recherche, lookat:=xlPart)
If Not c Is Nothing Then
adresse = c.Address
Do
If UCase(recherche) = UCase(recherche) Then
mondico.Item(c.Value) = c.Value
End If
ListBox1.List = mondico.Items
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> adresse
End If
End With
Set mondico = Nothing
End Sub
Mon fichier évoluant, j'ai besoin maintenant d'une deuxième colonne dans le Listbox qui va récupérer la valeur contenue dans la cellule située à X cellules à côté de l'Item.
Mon problème est que soit j'arrive à remplir les 2 colonnes correctement mais avec des doublons, soit je n'ai pas de doublon mais rien dans la deuxième colonne.
Exemple code avec les doublons :
Code:
Private Sub TextBox1_Change()
On Error Resume Next
ListBox1.ColumnWidths = "250;50"
ListBox1.ColumnCount = 2
'Séquence recherche
Dim recherche As String, adresse As String
ListBox1.Clear
Set mondico = CreateObject("Scripting.Dictionary")
recherche = TextBox1.Value
'Recherche sur liste
With Sheets("Feuil2").Range("F4:F65000")
Set c = .Find(recherche, lookat:=xlPart)
If Not c Is Nothing Then
adresse = c.Address
Do
If UCase(recherche) = UCase(recherche) Then
mondico.Item(c.Value) = c.Value
End If
ListBox1.AddItem c(ligne + 1, 1).Offset(0, 0)
ListBox1.List(ListBox1.ListCount - 1, 1) = c.Offset(0, 17)
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> adresse
End If
End With
End Sub
Pourriez-vous m'aider à trouver une solution pour garder ce système de recherche et remplir le Listbox sur 2 colonnes et sans doublon.
Merci.