Sergent_Lipton
XLDnaute Nouveau
Bonjour à tous,
Pourriez-vous m'aider a alléger le temps de recherche dans ce fichier ?
J'arrive a faire ce que je veux mais c'est 1000x trop lent, 15 secondes par caractère de recherche.
Je n'ai que 1400 lignes utilisées et ce chiffre ne s'envolera pas plus.
il y a t il une solution pour accélérer la manœuvre ?
a cause de quoi mon fichier met 15ans a effectuer cette fonction ?
Fonctions utilisée :
Option Explicit
Private Sub TextBox1_Change()
Application.ScreenUpdating = False
Filtrer
Application.ScreenUpdating = True
End Sub
Private Sub TextBox2_Change()
Application.ScreenUpdating = False
Filtrer
Application.ScreenUpdating = True
End Sub
Sub Filtrer()
Dim Criteres(1 To 2), i&, j&, derlig&, t, OK As Boolean
Dim wS As Worksheet
Set wS = ThisWorkbook.Worksheets("ECS")
derlig = wS.Cells(wS.Rows.Count, "I").End(xlUp).Row
t = Range("I7:J" & derlig)
For j = 1 To 2: Criteres(j) = Me.OLEObjects.Item("TextBox" & j).Object.Value: Next j
For j = 1 To 2: Criteres(j) = IIf(Criteres(j) = "", "*", Criteres(j)): Next
For j = 1 To 2: Criteres(j) = LCase("*" & Criteres(j) & "*"): Next j
For i = 1 To UBound(t): For j = 1 To 2: t(i, j) = Cells(5 + i, 8 + j).Text: Next j, i
For i = 1 To UBound(t)
OK = True
For j = 1 To 2: OK = OK And (LCase(t(i, j)) Like Criteres(j)): Next
Rows(5 + i).Hidden = Not OK
Next i
End Sub
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = ""
End Sub
Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
TextBox2 = ""
End Sub
Merci d'avance a tous
Pourriez-vous m'aider a alléger le temps de recherche dans ce fichier ?
J'arrive a faire ce que je veux mais c'est 1000x trop lent, 15 secondes par caractère de recherche.
Je n'ai que 1400 lignes utilisées et ce chiffre ne s'envolera pas plus.
il y a t il une solution pour accélérer la manœuvre ?
a cause de quoi mon fichier met 15ans a effectuer cette fonction ?
Fonctions utilisée :
Option Explicit
Private Sub TextBox1_Change()
Application.ScreenUpdating = False
Filtrer
Application.ScreenUpdating = True
End Sub
Private Sub TextBox2_Change()
Application.ScreenUpdating = False
Filtrer
Application.ScreenUpdating = True
End Sub
Sub Filtrer()
Dim Criteres(1 To 2), i&, j&, derlig&, t, OK As Boolean
Dim wS As Worksheet
Set wS = ThisWorkbook.Worksheets("ECS")
derlig = wS.Cells(wS.Rows.Count, "I").End(xlUp).Row
t = Range("I7:J" & derlig)
For j = 1 To 2: Criteres(j) = Me.OLEObjects.Item("TextBox" & j).Object.Value: Next j
For j = 1 To 2: Criteres(j) = IIf(Criteres(j) = "", "*", Criteres(j)): Next
For j = 1 To 2: Criteres(j) = LCase("*" & Criteres(j) & "*"): Next j
For i = 1 To UBound(t): For j = 1 To 2: t(i, j) = Cells(5 + i, 8 + j).Text: Next j, i
For i = 1 To UBound(t)
OK = True
For j = 1 To 2: OK = OK And (LCase(t(i, j)) Like Criteres(j)): Next
Rows(5 + i).Hidden = Not OK
Next i
End Sub
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = ""
End Sub
Private Sub TextBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
TextBox2 = ""
End Sub
Merci d'avance a tous