Filtrer listview
Résolu
JSCH19
Messages postés
134
Statut
Membre
-
JSCH19 Messages postés 134 Statut Membre -
JSCH19 Messages postés 134 Statut Membre -
Bonjour, je cherche a optimiser un code qui filtre une listview,je veux le rendre moins long, le code et le suivant:
Merci deja pour votre aide,cordialement JSCH19!!
Dim Item As ListItem
Dim DerniereLigne As Long
Dim I As Long
Me.ListView1.ListItems.Clear
DerniereLigne = Worksheets("Clients").Cells(Rows.Count, 2).End(xlUp).row
With Me.ListView1
For I = 7 To DerniereLigne
If Me.Txt_filtres_client = "Type" Then
If LCase$(Left$(Worksheets("Clients").Cells(I, 5), Len(Me.Txt_valeur_client))) = LCase$(Me.Txt_valeur_client) Then
.ListItems.Add , , Text:=Worksheets("Clients").Cells(I, 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 4)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 5)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 6)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 9)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 10)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 12)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 11)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 21)
Else
End If
ElseIf Me.Txt_filtres_client = "Code" Then
If LCase$(Left$(Worksheets("Clients").Cells(I, 6), Len(Me.Txt_valeur_client))) = LCase$(Me.Txt_valeur_client) Then
.ListItems.Add , , Text:=Worksheets("Clients").Cells(I, 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 4)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 5)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 6)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 9)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 10)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 12)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 11)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 21)
Else
End If
ElseIf Me.Txt_filtres_client = "Nom et prénom" Then
If LCase$(Left$(Worksheets("Clients").Cells(I, 9), Len(Me.Txt_valeur_client))) = LCase$(Me.Txt_valeur_client) Then
.ListItems.Add , , Text:=Worksheets("Clients").Cells(I, 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 4)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 5)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 6)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 9)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 10)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 12)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 11)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 21)
Else
End If
ElseIf Me.Txt_filtres_client = "Adresse" Then
If LCase$(Left$(Worksheets("Clients").Cells(I, 10), Len(Me.Txt_valeur_client))) = LCase$(Me.Txt_valeur_client) Then
.ListItems.Add , , Text:=Worksheets("Clients").Cells(I, 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 4)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 5)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 6)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 9)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 10)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 12)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 11)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 21)
Else
End If
ElseIf Me.Txt_filtres_client = "Ville" Then
If LCase$(Left$(Worksheets("Clients").Cells(I, 12), Len(Me.Txt_valeur_client))) = LCase$(Me.Txt_valeur_client) Then
.ListItems.Add , , Text:=Worksheets("Clients").Cells(I, 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 4)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 5)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 6)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 9)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 10)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 12)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 11)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 21)
Else
End If
ElseIf Me.Txt_filtres_client = "Code Postal" Then
If LCase$(Left$(Worksheets("Clients").Cells(I, 11), Len(Me.Txt_valeur_client))) = LCase$(Me.Txt_valeur_client) Then
.ListItems.Add , , Text:=Worksheets("Clients").Cells(I, 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 4)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 5)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 6)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 9)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 10)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 12)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 11)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 21)
Else
End If
End If
Next I
End With
Merci deja pour votre aide,cordialement JSCH19!!
A voir également:
- Filtrer listview
- Excel filtrer les doublons - Guide
- Filtrer par ordre croissant excel - Guide
- Listview vba ✓ - Forum Excel
- Vba excel - zoom USF ne s'applique pas au ListView ✓ - Forum VB / VBA
- Listview vb.net ✓ - Forum Framework .NET
4 réponses
Re,
Y a un probleme entre les entetes de colonne et les entetes de la listview
Pas le bon nombre de colonnes feuille
Y a un probleme entre les entetes de colonne et les entetes de la listview
Pas le bon nombre de colonnes feuille
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(I, 21)
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
bonjour,
les actions à faire sont toujours les mêmes?
tu peux alors les regrouper dans une sub, ou bien faire un seul if avec des
à choisir en fonction de ce qui te semble le plus clair.
les actions à faire sont toujours les mêmes?
tu peux alors les regrouper dans une sub, ou bien faire un seul if avec des
andet des
or.
à choisir en fonction de ce qui te semble le plus clair.
Bonjour a vous deux,
A essayer
A essayer
Sub test()
Dim Item As ListItem
Dim DerniereLigne As Long
Dim lig As Long
Me.ListView1.ListItems.Clear
With Me.ListView1
If Me.Txt_filtres_client = "Type" Then
Col = 5
ElseIf Me.Txt_filtres_client = "Code" Then
Col = 6
ElseIf Me.Txt_filtres_client = "Nom et prénom" Then
Col = 9
ElseIf Me.Txt_filtres_client = "Adresse" Then
Col = 10
ElseIf Me.Txt_filtres_client = "Ville" Then
Col = 12
ElseIf Me.Txt_filtres_client = "Code Postal" Then
Col = 11
Else
End If
Nb = Application.CountIf(Worksheets("Clients").Columns(Col), Me.Txt_valeur_client & "*")
If Nb > 0 Then
lig = 1
For n = 1 To Nb
lig = Worksheets("Clients").Columns(Col).Find(Txt_valeur_client, Cells(lig, Col), , xlPart).Row
.ListItems.Add , , Text:=Worksheets("Clients").Cells(I, 2)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(lig, 4)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(lig, 5)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(lig, 6)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(lig, 9)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(lig, 10)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(lig, 12)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(lig, 11)
.ListItems(.ListItems.Count).ListSubItems.Add , , Worksheets("Clients").Cells(lig, 21)
Next n
End If
End With
End Sub
Bonjour,merci d'avoir pris votre temps pour effectuer ce travail titanesque ,merci encore!!!
j''ai testé le code,il marche a merveille mais les inconvenients c'est que si tu rentres la premiere lettre d'un mot pour filtrer la colonne alors les en-tetes des colonnes apparaient encore sur une ligne en dessous des en-tetes,puis je vois que tu as oublié de nommer des variables qui sont les suivants:
"col","n","nb" mais je les ai definit pour lancer le code,autre probleme qu'il y a, lorsque Me.Txt_valeur_client=empty donc le tableau se vide mais dans le code precedent le tableau restait remplis pour permettre a l'utilisateur de mieux orienter sa recherche ou filtre.
Cordialement JSCH19
j''ai testé le code,il marche a merveille mais les inconvenients c'est que si tu rentres la premiere lettre d'un mot pour filtrer la colonne alors les en-tetes des colonnes apparaient encore sur une ligne en dessous des en-tetes,puis je vois que tu as oublié de nommer des variables qui sont les suivants:
"col","n","nb" mais je les ai definit pour lancer le code,autre probleme qu'il y a, lorsque Me.Txt_valeur_client=empty donc le tableau se vide mais dans le code precedent le tableau restait remplis pour permettre a l'utilisateur de mieux orienter sa recherche ou filtre.
Cordialement JSCH19
Bonjour,
Je regarde la chose. Vu que je n'ai pas creer de fichier pour ce code, donc pas tester.
Un exemple de votre fichier aurait ete le bienvenu
le tableau restait remplis
Ben oui, mais facile a resoudre, c'est dans le code, une ligne a deplacer
Les entetes de colonne sont a quelle ligne?
Donc une ligne de code a inserer apres la ligne For........, pour tester que lig est superieur a cette ligne
Je regarde la chose. Vu que je n'ai pas creer de fichier pour ce code, donc pas tester.
Un exemple de votre fichier aurait ete le bienvenu
le tableau restait remplis
Ben oui, mais facile a resoudre, c'est dans le code, une ligne a deplacer
Les entetes de colonne sont a quelle ligne?
Donc une ligne de code a inserer apres la ligne For........, pour tester que lig est superieur a cette ligne
Voici le lien de mon fichier :
https://docs.google.com/spreadsheets/d/1Hx0ADPATuxp6Jq8lLih8ijOPkD1bPJtp/edit?usp=sharing&ouid=116706742648043221487&rtpof=true&sd=true
veuillez telecharger le fichier pour avoir pleinement acces a celui-ci.
https://docs.google.com/spreadsheets/d/1Hx0ADPATuxp6Jq8lLih8ijOPkD1bPJtp/edit?usp=sharing&ouid=116706742648043221487&rtpof=true&sd=true
veuillez telecharger le fichier pour avoir pleinement acces a celui-ci.

fichier modifie: https://www.cjoint.com/c/KIjoqqPAumf
vous vous etes pas penché sur ce cas.pourquoi
Pouvez relire votre post<5>