Un macro trops lent

Résolu
hamouchka Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -  
hamouchka Messages postés 14 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un macro qui est supposé de chercher une valeur dans une colonne (D2:D4555)
mais cela prend une éternité pour être exécuter, j'ai essayé sans sucés d'ajouter "usedrange" pour éviter que excel cherche tous les cellules jusqu'à D4555 je veux qu'il chercher seulement les cellules utilisé puisque la feuille n'est pas était complétée à 100%

voici le macro :

Sub hidecrows()
Dim tempo As Date
Dim rCell As Range

Sheets("checks-sheet").Select

tempo = InputBox(Prompt:="Filter Checks", Title:="Choose a Date", Default:="Enter the date here")


For Each rCell In Range("D2:D4555")
If Not rCell.Value = tempo Then
Rows(rCell.Row).Hidden = True
End If
Next

End Sub

J'ai besoin d'aide SVP, avez vous une idée ?
Un grand merci en avance!


A voir également:

5 réponses

Mytå Messages postés 2973 Date d'inscription   Statut Contributeur Dernière intervention   953
 
Salut le forum

Hamouchka, essaye comme ceci

Sub hidecrows() 
Dim tempo As Date 
Dim firstaddress As String 
Dim c As Range 

tempo = InputBox(Prompt:="Filter Checks", Title:="Choose a Date", Default:="Enter the date here") 

With Sheets("checks-sheet").Range("D2:D4555") 
    Set c = .Find(tempo, LookIn:=xlValues) 
    If Not c Is Nothing Then 
        firstaddress = c.Address 
        Do 
             
            Set c = .FindNext(c) 
            c.EntireRow.Hidden = True 
        Loop While Not c Is Nothing And c.Address <> firstaddress 
    End If 
End With 

End Sub 

Mytå
0
hamouchka Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup!

C'est excellent sauf que l'autre macro est supposé de cacher tout se qui n'est pas égale à "tempo" ton macro fais l'inverse! comment je peux le corriger ?

encore Merci!
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonsoir,

Tu pourrais utiliser le filtre automatique :
Range("D1:D4555").AutoFilter Field:=1, Criteria1:=CDate(tempo)
eric
0
hamouchka Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai pas le droit d'utiliser les fonctions d'excel comme autofilter....

merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
hamouchka Messages postés 14 Date d'inscription   Statut Membre Dernière intervention  
 
C'est régler les amis voici ce j'ai fait :

Sheets("checks-sheet").Select
'selectionner la plage utilisée seulement
Range(Cells(2, 4), Cells(Rows.Count, 4).End(xlUp)).Select


'Boucle qui recherche la date de ce jours dans la plage séléctionnée avant
For Each rCell In Selection
If Not rCell.Value = Date Then '=Date pour comparer avec la date de jours
Rows(rCell.Row).Hidden = True
End If
Next

comme ca il prend juste la selection qui contien qlq chose et c beaucoup pluss rapide

Merci Beaucoup!!!!
0