dsigmoun
Messages postés135Date d'inscriptionjeudi 31 juillet 2008StatutMembreDernière intervention25 février 2023
-
19 janv. 2009 à 12:34
dsigmoun
Messages postés135Date d'inscriptionjeudi 31 juillet 2008StatutMembreDernière intervention25 février 2023
-
23 janv. 2009 à 10:17
Bonjour à tous,
J'ai des données qui sont dans une listview composées de 2 colonnes. Je souhaiterai faire une recherche dans la deuxième colonne de la listview (qui contient les mots clés) et afficher les résultats dans une lisbox.
dsigmoun
Messages postés135Date d'inscriptionjeudi 31 juillet 2008StatutMembreDernière intervention25 février 20232 19 janv. 2009 à 18:09
J'ai mis ce bout de code mais j'ai toujours la même ligne qui s'affiche !
For Each ListViewItem In ListView1.Items
Dim foundItem As ListViewItem = _
ListView1.FindItemWithText(TextBox1.Text, True, 0, True)
If foundItem IsNot Nothing Then
ListBox2.Items.Add(foundItem.Text)
End If
Next
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 19 janv. 2009 à 20:59
Re
As-tu au moins regardé dans l'aide ?
Il est dit que FindItemWithText recherche le premier terme.
Pour chercher le suivant, il suffit de lui dire où recommencer.
Tout est expliqué dans l'aide, tu sais lire pourtant !
dsigmoun
Messages postés135Date d'inscriptionjeudi 31 juillet 2008StatutMembreDernière intervention25 février 20232 20 janv. 2009 à 16:28
Merci jack pour ton aide,
Je suis novice et je dois mal m'y prendre.
Ta solution me permet effectivement de faire des recherches mais si le mot recherché est le deuxième mot de la cellule, il ne le trouve pas.
Voici que je fais exactement :
1- Je charge un fichier excel
que je mets dans une listview
qui est masquée
La première colonne est composé du nom des fichiers pdf
La deuxième colonne est composé de mots clés (plusieurs par cellule)
' Création des colonnes pour les items et ses subitems.
ListView1.Columns.Add("nom du fichier", 130, HorizontalAlignment.Left)
ListView1.Columns.Add("mots clés", 115, HorizontalAlignment.Left)
' Création de la listview avec les propriétés que vous voulez :
ListView1.View = View.Details
ListView1.LabelEdit = True
ListView1.AllowColumnReorder = True
'listview1.CheckBoxes = True
ListView1.FullRowSelect = True
ListView1.GridLines = True
'listview1.Sorting = SortOrder.Ascending
Dim MyConnection As System.Data.OleDb.OleDbConnection
If Form1.Label1.Text = "2" Then
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter("select * from [baseco$]", MyConnection)
Dim DS As System.Data.DataSet = New System.Data.DataSet
MyCommand.Fill(DS)
Dim TableExcel As DataTable
TableExcel = DS.Tables(0)
For i = 0 To TableExcel.Rows.Count - 1
ListView1.Items.Add(TableExcel.Rows(i).Item(0).ToString)
ListView1.Items(i).SubItems.Add(TableExcel.Rows(i).Item(1).ToString)
Next Création des colonnes pour les items et ses subitems.
ListView1.Columns.Add("nom du fichier", 130, HorizontalAlignment.Left)
ListView1.Columns.Add("mots clés", 115, HorizontalAlignment.Left)
' Création de la listview avec les propriétés que vous voulez :
ListView1.View = View.Details
ListView1.LabelEdit = True
ListView1.AllowColumnReorder = True
'listview1.CheckBoxes = True
ListView1.FullRowSelect = True
ListView1.GridLines = True
'listview1.Sorting = SortOrder.Ascending
Dim MyConnection As System.Data.OleDb.OleDbConnection
If Form1.Label1.Text = "2" Then
Dim MyCommand As System.Data.OleDb.OleDbDataAdapter = New System.Data.OleDb.OleDbDataAdapter("select * from [baseco$]", MyConnection)
Dim DS As System.Data.DataSet = New System.Data.DataSet
MyCommand.Fill(DS)
Dim TableExcel As DataTable
TableExcel = DS.Tables(0)
For i = 0 To TableExcel.Rows.Count - 1
ListView1.Items.Add(TableExcel.Rows(i).Item(0).ToString)
ListView1.Items(i).SubItems.Add(TableExcel.Rows(i).Item(1).ToString)
Next
MyConnection.Close()
End If
2- Je mets les éléments de la première colonne de la listview dans une listbox visible et cliquable
For x = 0 To ListView1.Items.Count - 1
ListBox2.Items.Add(ListView1.Items(x).Text.ToString) '
ListBox3.Items.Add(ListView1.Items(x).Text.ToString)
Next
3- Pour faire les recherches à partir d'un textbox1
'moteur de recherche
ListBox2.Items.Clear()
If TextBox1.Text <> "" Then
Dim item1 As ListViewItem = ListView1.FindItemWithText(TextBox1.Text)
Do While Not item1 Is Nothing
ListBox2.Items.Add(item1.Text)
If item1.Index < ListView1.Items.Count - 1 Then
item1 = ListView1.FindItemWithText(TextBox1.Text, True, item1.Index + 1)
End If
Loop
Else
For x = 0 To ListView1.Items.Count - 1
ListBox2.Items.Add(ListView1.Items(x).Text.ToString)
Next
End If
Voici le détail de ce que je fais. S'il est possible de le faire plus simplement (facilement vu mes compétences ), je suis preneur.
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 21 janv. 2009 à 20:49
Si tu mets True dans le FindItemWithText, il cherchera aussi dans les SubItems : C'est vraiment ce que tu veux ?
+ Il faut gérer l'Exception car, à un moment donné, Index + 1 dépassera la fin de la liste
dsigmoun
Messages postés135Date d'inscriptionjeudi 31 juillet 2008StatutMembreDernière intervention25 février 20232 23 janv. 2009 à 10:17
Merci pour ton aide jack,
J'ai abandonné le listview pour mettre les infos dans un listbox où la recherche fonctionne mieux :
Dim item As String
For x = 0 To lsttotal.Items.Count - 1
item = Lstmotcle.Items(x)
If item.Contains(TextBox1.Text.ToLower) Then
lstclicversion.Items.Add(lsttotalversion.Items(x))
Lstclic.Items.Add(lsttotal.Items(x))
End If
Next