1.simplification d'un code et souci pour une filtration

geraldvc

XLDnaute Junior
1)Voici mon code de filtration je vaudrais le simplifier!!!!!!

Pouvez-vous me donner un coup de main?

2) je voudrais ajouter 2 combo qui filtre plusieurs col exemple la col,95,97,99,101 pour la première combo et pour la deuxième col 96,98,100,102

attention il faut 1 petit vélo pour le parcourir le code ci-dessous!!! lol

si vous le voulez je peux mettre le fichier complet en ligne pour le télécharger!!



Private Sub Alim_Combo()

Dim Cell As Range, i As Long, j As Long, k As Byte
Dim Tablo(), Temp
Dim Sptd As Object

For k = 1 To 107 'ici augmenter pour ajouter des combo chiffre 1 en mois que le nbr de combo
Set Sptd = CreateObject("Scripting.Dictionary")
With Sheets("data")
For Each c In .Range("A2", [a65536].End(xlUp)).SpecialCells(xlCellTypeVisible)
If Not Sptd.Exists(c.Offset(0, k).Value) Then
Sptd.Add c.Offset(0, k).Value, c.Offset(0, k).Value
End If
Next c

Tablo = Sptd.items
For i = LBound(Tablo) To UBound(Tablo)
For j = LBound(Tablo) To UBound(Tablo)
If Tablo(i) < Tablo(j) Then
Temp = Tablo(i)
Tablo(i) = Tablo(j)
Tablo(j) = Temp
End If
Next j
Next i

Controls("Cbx" & k + 1).List = Tablo
Set Sptd = Nothing
Erase Tablo
End With

Next k


End Sub

Private Sub Alim_Listv(j As Byte, Col As Byte) 'filtration

Dim i As Long, k As Byte, Dt As Date

With Sheets("Data")
'Me.Somme = 0
'Me.Label18 = 0

.Range("A2").AutoFilter

For i = 1 To 108 'ici augmenter pour ajouter des combo
If Controls("Cbx" & i).Value <> vbNullString Then
If i = 120 Then
Dt = Controls("Cbx" & i).Value
.Range("A2").AutoFilter field:=i, Criteria1:=DateSerial(Year(Dt), Month(Dt), Day(Dt))
Else
.Range("A2").AutoFilter field:=i, Criteria1:=Controls("Cbx" & i).Value
End If
Else
.Range("A2").AutoFilter field:=i
End If
Next i

i = 1
For Each c In .Range("A2", [a65536].End(xlUp)).SpecialCells(xlCellTypeVisible)
If c.Row = 1 Then Exit For

' ceci determine la pace dans la listview apres filtration


ListView1.ListItems.Add , "m" & i, c 'nom
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 1)
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 2) 'prenonm
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 3) '2 prenom
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 4) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 5) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 6) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 7) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 8) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 9) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 10) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 11) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 12) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 13) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 14) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 15) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 16) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 17) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 18) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 19) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 20) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 21) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 22) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 23) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 24) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 25) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 26) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 27) '

ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 28) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 29) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 30) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 31) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 32) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 33) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 34) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 35) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 36) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 37) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 38) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 39) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 40) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 41) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 42) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 43) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 44) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 45) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 46) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 47) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 48) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 49) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 50) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 51) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 52) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 53) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 54) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 55) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 56) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 57) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 58) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 59) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 60) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 61) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 62) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 63) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 64) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 65) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 66) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 67) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 68) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 69) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 70) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 71) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 72) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 73) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 74) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 75) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 76) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 77) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 78) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 79) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 80) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 81) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 82) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 83) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 84) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 85) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 86) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 87) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 88) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 89) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 90) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 91) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 92) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 93) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 94) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 95) '

ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 96) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 97) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 98) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 99) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 100) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 101) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 102) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 103) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 104) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 105) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 106) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 107) '
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, 108) '


i = i + 1
Next c

End With


For X = 1 To ListView1.ListItems.Count
If ListView1.ListItems(X) = UCase("p") Then
ListView1.ListItems(X).ForeColor = &HFF0000
For j = 1 To 108
ListView1.ListItems(X).ListSubItems(j).ForeColor = &HFF0000
Next
End If
Next
Alim_Combo


End Sub
 

Gael

XLDnaute Barbatruc
Re : 1.simplification d'un code et souci pour une filtration

Bonjour Geraldvc, bonjour à tous,

Je n'ai pas vu tes posts précédents, mais au bout de 24 messages, tu aurais au moins pu lire et respecter la charte d'XLD, qui est simple et ne fait appel qu'à des notions universelles de politesse et de bon sens :mad:

Ceci étant, tu peux déjà simplifier ton code en mettant une boucle pour construire la listview:

Code:
...
For Each c In .Range("A2", [a65536].End(xlUp)).SpecialCells(xlCellTypeVisible)
If c.Row = 1 Then Exit For
 
' ceci determine la pace dans la listview apres filtration
 
 
ListView1.ListItems.Add , "m" & i, c 'nom
For j=1 to 108
ListView1.ListItems(ListView1.ListItems.Count).ListSubItems.Add , , c.Offset(0, j)
Next j
 
i = i + 1
Next c
 
End With

Sinon mets le code complet avec plus d'explications, cela sera très utile.

@+

Gael
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : 1.simplification d'un code et souci pour une filtration

Bonjour geraldvc,

Vous jonglez joyeusement avec les indices i j k, je ne vois pas pas pourquoi vous n'avez pas continué avec une boucle For...Next pour la longue liste des ListView1.ListItems.

Edit : salut Gael, pas rafraichi, mais on n'est pas très rapide à répondre, non ?

A+
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 837
dernier inscrit
Ugo