XL 2021 Filtre Multi Critères Listview VBA

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 !

delsart59

XLDnaute Nouveau
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.

1713356854827.png


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:
Le principe est d'installer les modules de service nécessaires (dont un seul standard, les autres de classe), de déclarer un Private WithEvents CLs As ComboBoxLiées en tête, dans la Sub UserForm_Initialize de l'initialiser puis de lui confier les ComboBox à gérer par une série de CLs.Add CBx…, "Intitulé". Terminer tout ça par un premier CLs.Actualiser
 
Le principe est d'installer les modules de service nécessaires (dont un seul standard, les autres de classe), de déclarer un Private WithEvents CLs As ComboBoxLiées en tête, dans la Sub UserForm_Initialize de l'initialiser puis de lui confier les ComboBox à gérer par une série de CLs.Add CBx…, "Intitulé". Terminer tout ça par un premier CLs.Actualiser
Tu m'as perdu je t'avoue. j'ai bien un userform_initialize pour le reste je ne vois ce que tu veux dire mais en pratique je n'ai aucune idée de comment faire.
 
Je vous équiperais des modules de services nécessaires un classeur restant à joindre où vous aurez appliqué le reste de ce que j'ai dit (sans comprendre puisque vous ne m'avez pas demandé d'éclaircissement sur ce que vous n'avez pas compris).
Et le "comment faire" on s'en fout puisque ce sont des modules de service qui le font, la seule à savoir étant la façon de leur demander de le faire.
 
- 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
5
Affichages
505
Réponses
3
Affichages
525
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
85
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
258
Retour