Un macro trops lent

Résolu
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. 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
    1. J'ai pas le droit d'utiliser les fonctions d'excel comme autofilter....

      merci
      0
      1. Contributeur
        Bonsoir,

        Tu pourrais utiliser le filtre automatique :
        Range("D1:D4555").AutoFilter Field:=1, Criteria1:=CDate(tempo)
        eric
        0
        1. 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
          1. Contributeur
            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