Bonjour le forum, Phil69970
J'ai essayé cela fonctionne dans l'ensemble assez bien
1)Toutefois, quand je fais un filtre sur le 0 cela fonctionne
sur des fichiers de plus 500 000 lignes ou moins
2) Quand je fais la même opération un filtre sur le 1 cela ne fonctionne pas
3)
Dim WS As Worksheet
'On Error Resume Next
Application.ScreenUpdating = False
Dim derlig&
Dim VarColFiltre1%, VarCrit1
Dim VarColFiltre2%, VarCrit2
VarColFiltre1 = Worksheets("Feuil10").Range("I6")
VarCrit1 = Worksheets("Feuil10").Range("I19")
If Worksheets("Feuil10").Range("M6") <> "" Then
VarColFiltre2 = Worksheets("Feuil10").Range("M6")
VarCrit2 = Worksheets("Feuil10").Range("M9")
End If
For Each WS In Worksheets 'Boucle sur chaque feuille
'A adapter si tu veux exclure une feuille (ici on exclut la feuille10)
'Si tu veux faire ton code sur TOUTES LES FEUILLES alors supprime le If ... then et le end if
If WS.Name <> "Feuil10" And "Création" And "modèle" Then '
derlig = WS.Range("A" & Rows.Count).End(xlUp).Row
'Ton code qui sera executé sur toutes les feuilles sauf la feuille10
'Ws.Range("$A$2:$J$" & Derlig).AutoFilter Field:=8, Criteria1:="1"
WS.Range("$A$2:$J$" & derlig).AutoFilter Field:=VarColFiltre1, Criteria1:=VarCrit1
WS.Range("$A$2:$J$" & derlig).AutoFilter Field:=VarColFiltre2, Criteria1:=VarCrit2
Derlig1 = WS.Range("A" & Rows.Count).End(xlUp).Row
On Error Resume Next
WS.Range("$A$2:$J$" & derlig).SpecialCells(xlCellTypeVisible).EntireRow.Delete
WS.Range("$A$1:$J$1").AutoFilter
WS.Range("$A$1:$J$1").AutoFilter
Derlig1 = WS.Range("A" & Rows.Count).End(xlUp).Row
End If
Next
Worksheets("Feuil10").Range("M6") = ""
Worksheets("Feuil10").Range("M19") = ""
3) le filtre se fait aussi sur les feuille création , modèle etc les lignes sont remplies cependant
merci encore