Un macro trops lent

Résolu/Fermé
hamouchka Messages postés 14 Date d'inscription jeudi 26 mai 2011 Statut Membre Dernière intervention 14 juin 2011 - 5 juin 2011 à 20:18
hamouchka Messages postés 14 Date d'inscription jeudi 26 mai 2011 Statut Membre Dernière intervention 14 juin 2011 - 13 juin 2011 à 17:53
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 2969 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 930
Modifié par Mytå le 5/06/2011 à 20:49
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 jeudi 26 mai 2011 Statut Membre Dernière intervention 14 juin 2011
5 juin 2011 à 21:43
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 24513 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 mars 2023 7 168
5 juin 2011 à 23:16
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 jeudi 26 mai 2011 Statut Membre Dernière intervention 14 juin 2011
13 juin 2011 à 17:27
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 jeudi 26 mai 2011 Statut Membre Dernière intervention 14 juin 2011
13 juin 2011 à 17:53
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