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

  • Initiateur de la discussion Initiateur de la discussion geraldvc
  • Date de début Date de début

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 !

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
 
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 😡

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:
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:
- 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
10
Affichages
443
Réponses
4
Affichages
179
Réponses
10
Affichages
282
Retour