Question sur Hide / Unhide Rows en VBA

Bonjour à tous,

Juste une question sur laquelle j'aimerais être éclairé :

Pourquoi "décacher" des lignes dans Excel prend BEAUCOUP plus de temps que de les cacher ??

Je teste avec un petit bouton Toggle et une macro :

Sub unhide()
ActiveSheet.DisplayPageBreaks = False
Application.ScreenUpdating = False
Application.EnableEvents = False

 With ActiveSheet.UsedRange.Rows.Offset(1)
        .Select
       .EntireRow.Hidden = Not .EntireRow.Hidden
    End With

Application.EnableEvents = True
Application.ScreenUpdating = True
ActiveSheet.DisplayPageBreaks = True
End Sub

Pour un fichier d'environ 500 lignes, les lignes se cachent de manière instantanée mais mettent au moins 8 secondes pour se décacher ...

Y a t'il un moyen d'accélérer ce processus ou est-ce une limitation normale ?

Merci de votre réponse

Bonjour

Utiliser

Application.Calculation = xlManual

en début de procédure

et

Application.Calculation = xlAutomatic

en fin

et enlever le select inutile

Bonjour Chris,

J'ai essayé ta méthode mais malheureusement pas d'acceleration notable concernant le Démasquage ...

Une autre idée ?

J'ai déjà essayé tout ca :

With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .EnableEvents = False
    .DisplayAlerts = False
    .Cursor = xlWait
    .StatusBar = StatusBarMsg
    .EnableCancelKey = xlErrorHandler
  End With
ActiveSheet.DisplayPageBreaks = False

RE

    .EnableEvents = False
    .DisplayAlerts = False
    .Cursor = xlWait
    .StatusBar = StatusBarMsg
    .EnableCancelKey = xlErrorHandler

ne sert à rien ici

OK merci pour l'info , c'est juste qu'en désespoir de cause j'ai tester un peu tout et n'importe quoi.

Pas d'autre solution alors selon toi ?

un petit up ... Personne n'a de solution ? ou d'explication ?

Bonjour,

on peut supposer qu'en dé-cachant il a un travail supplémentaire puisqu'il doit reconstruire ce qu'il doit afficher.

Si tu le fais sur une feuille vierge il met sensiblement le même temps :

Sub unhide()
    Dim t As Single
    t = Timer
    ActiveSheet.DisplayPageBreaks = False
    Application.ScreenUpdating = False
    Application.EnableEvents = False

    With ActiveSheet.Rows("1:1000000")
        .EntireRow.Hidden = Not .EntireRow.Hidden
    End With
Debug.Print Timer - t
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    ActiveSheet.DisplayPageBreaks = True
End Sub

eric

Rechercher des sujets similaires à "question hide unhide rows vba"