Bonjour à tous,
Je viens à vous car j'arrive à la derniere étape de mon projet de fin d'étude qui consiste à créer une Database. J'ai donc créé un Userform et je vous met la capture ci dessous.
Pour chaque liste déroulante, j'arrive à filtrer les colonnes associées, (c'est déjà une bonne premiere étape). Maintenant, j'aimerais que ma listview prenne en compte plusieurs combobox et textbox pour affiner les recherches sans ajouter de bouton click. Actuellement ce n'est pas problématique car je n'ai pas beaucoup de lignes mais à l'avenir cela va se remplir.
Voici comment j'ai initialisé mes comboboxs :
''Copie des infos du formulaire dans la base de données
Function copy_from_form()
Dim lastRow As Long
lastRow = ActiveWorkbook.Sheets("Base de données").Range("A1000000").End(xlUp).Row
lastRow = lastRow + 1
With ActiveWorkbook.Sheets("Base de données")
.Range("A" & lastRow).Value = ComboBox6.Value
.Range("B" & lastRow).Value = ComboBox7.Value
.Range("C" & lastRow).Value = ComboBox1.Value
.Range("D" & lastRow).Value = ComboBox3.Value
.Range("E" & lastRow).Value = TextBox9.Value
.Range("G" & lastRow).Value = TextBox8.Value
.Range("F" & lastRow).Value = TextBox11.Value
.Range("H" & lastRow).Value = ComboBox4.Value
.Range("I" & lastRow).Value = ComboBox5.Value
.Range("J" & lastRow).Value = TextBox12.Value
.Range("K" & lastRow).Value = TextBox4.Value
End With
End Function
Voici laProcédure permettant d'afficher l'enregistrement selectionné dans les différents TextBox du formulaire
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
TxtProjet = ListView1.SelectedItem.SubItems(1)
TxtScope = ListView1.SelectedItem.SubItems(2)
TxtPhase = ListView1.SelectedItem.SubItems(3)
TxtGate = ListView1.SelectedItem.SubItems(4)
TxtCommodités = ListView1.SelectedItem.SubItems(5)
TxtProblèmerencontré = ListView1.SelectedItem.SubItems(6)
TxtDatedévènement = ListView1.SelectedItem.SubItems(7)
TxtourceProblème = ListView1.SelectedItem.SubItems(8)
TxtFamilledecause = ListView1.SelectedItem.SubItems(9)
TxtLiendAnalyse = ListView1.SelectedItem.SubItems(10)
TxtTempsperdu = ListView1.SelectedItem.SubItems(11)
' add hyperlink handling
Dim Link As String
Link = ListView1.SelectedItem.ListSubItems(10).Text
If Left(Link, 4) = "http" Then
ActiveWorkbook.FollowHyperlink (Link)
End If
End Sub
Voici ma fonction de recherche avec le combox6 (le premier)
Function FilterDataInListView()
Dim i As Long
Dim searchText As String
Dim j As Long
searchText = LCase(ComboBox6.Text)
ListView1.ListItems.Clear
For i = 1 To Sheets("Base de données").Cells(Rows.Count, 1).End(xlUp).Row
If InStr(1, LCase(Sheets("Base de données").Cells(i, 1).Value), searchText) > 0 Then
With ListView1.ListItems.Add(, , Sheets("Base de données").Cells(i, 1).Value)
For j = 1 To 11
.ListSubItems.Add , , Sheets("Base de données").Cells(i, j).Value
Next j
End With
End If
Next i
End Function
Et pour finir, voici le code permettant de faire appelle à la fonction :
Private Sub ComboBox6_Change()
Call FilterDataInListView
End Sub
S'il vous plait venez moi en aide cela fait deux jours que je cherche sur Internet.
Merci d'avance
Je viens à vous car j'arrive à la derniere étape de mon projet de fin d'étude qui consiste à créer une Database. J'ai donc créé un Userform et je vous met la capture ci dessous.
Pour chaque liste déroulante, j'arrive à filtrer les colonnes associées, (c'est déjà une bonne premiere étape). Maintenant, j'aimerais que ma listview prenne en compte plusieurs combobox et textbox pour affiner les recherches sans ajouter de bouton click. Actuellement ce n'est pas problématique car je n'ai pas beaucoup de lignes mais à l'avenir cela va se remplir.
Voici comment j'ai initialisé mes comboboxs :
''Copie des infos du formulaire dans la base de données
Function copy_from_form()
Dim lastRow As Long
lastRow = ActiveWorkbook.Sheets("Base de données").Range("A1000000").End(xlUp).Row
lastRow = lastRow + 1
With ActiveWorkbook.Sheets("Base de données")
.Range("A" & lastRow).Value = ComboBox6.Value
.Range("B" & lastRow).Value = ComboBox7.Value
.Range("C" & lastRow).Value = ComboBox1.Value
.Range("D" & lastRow).Value = ComboBox3.Value
.Range("E" & lastRow).Value = TextBox9.Value
.Range("G" & lastRow).Value = TextBox8.Value
.Range("F" & lastRow).Value = TextBox11.Value
.Range("H" & lastRow).Value = ComboBox4.Value
.Range("I" & lastRow).Value = ComboBox5.Value
.Range("J" & lastRow).Value = TextBox12.Value
.Range("K" & lastRow).Value = TextBox4.Value
End With
End Function
Voici laProcédure permettant d'afficher l'enregistrement selectionné dans les différents TextBox du formulaire
Private Sub ListView1_ItemClick(ByVal Item As MSComctlLib.ListItem)
TxtProjet = ListView1.SelectedItem.SubItems(1)
TxtScope = ListView1.SelectedItem.SubItems(2)
TxtPhase = ListView1.SelectedItem.SubItems(3)
TxtGate = ListView1.SelectedItem.SubItems(4)
TxtCommodités = ListView1.SelectedItem.SubItems(5)
TxtProblèmerencontré = ListView1.SelectedItem.SubItems(6)
TxtDatedévènement = ListView1.SelectedItem.SubItems(7)
TxtourceProblème = ListView1.SelectedItem.SubItems(8)
TxtFamilledecause = ListView1.SelectedItem.SubItems(9)
TxtLiendAnalyse = ListView1.SelectedItem.SubItems(10)
TxtTempsperdu = ListView1.SelectedItem.SubItems(11)
' add hyperlink handling
Dim Link As String
Link = ListView1.SelectedItem.ListSubItems(10).Text
If Left(Link, 4) = "http" Then
ActiveWorkbook.FollowHyperlink (Link)
End If
End Sub
Voici ma fonction de recherche avec le combox6 (le premier)
Function FilterDataInListView()
Dim i As Long
Dim searchText As String
Dim j As Long
searchText = LCase(ComboBox6.Text)
ListView1.ListItems.Clear
For i = 1 To Sheets("Base de données").Cells(Rows.Count, 1).End(xlUp).Row
If InStr(1, LCase(Sheets("Base de données").Cells(i, 1).Value), searchText) > 0 Then
With ListView1.ListItems.Add(, , Sheets("Base de données").Cells(i, 1).Value)
For j = 1 To 11
.ListSubItems.Add , , Sheets("Base de données").Cells(i, j).Value
Next j
End With
End If
Next i
End Function
Et pour finir, voici le code permettant de faire appelle à la fonction :
Private Sub ComboBox6_Change()
Call FilterDataInListView
End Sub
S'il vous plait venez moi en aide cela fait deux jours que je cherche sur Internet.
Merci d'avance
Dernière édition: