Un macro trops lent

Résolu
hamouchka Messages postés 14 Statut Membre -  
hamouchka Messages postés 14 Statut Membre -
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!

5 réponses

  1. Mytå Messages postés 4246 Date d'inscription   Statut Contributeur Dernière intervention   957
     
    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
  2. hamouchka Messages postés 14 Statut Membre
     
    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
  3. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonsoir,

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

    merci
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. hamouchka Messages postés 14 Statut Membre
     
    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