Perte de performance apres execution d'une macro

  • Initiateur de la discussion Initiateur de la discussion Poto
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Poto

XLDnaute Occasionnel
Salut a tous,

je cherche a comprendre un probleme auquel je fais face depuis quelques jours...

en fait, j'ai une macro qui va cacher des lignes sur conditions d'une feuille appelé PLANNING. Le probleme c est qu'une fois que cette macro a été executer, si j 'essaye de scroller la feuille planning vers le haut ou le bas ou que j essaye de me deplacer de quelques manieres que ce soit, je remarque de grosses pertes de performance, ie: la feuille pêne à monter ou à descendre. elle saccade et met pres d'une seconde a passer d une ligne a une autre....
la feuille planning fais plus de 4000 lignes, vous comprendrez alors dans quelle galere je suis....

voici la macro en question

Sub NbreStaffPlanning()


Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Dim Var As Long
Var = ThisWorkbook.Names("NbreStaff").RefersToRange

ThisWorkbook.Sheets("PLANNING").Visible = xlSheetVisible
Sheets("PLANNING").Select
Sheets("PLANNING").Unprotect Password:="toto"

Cells.EntireRow.Hidden = False

For I = 5 To Range("a" & Application.Rows.Count).End(xlUp).Row
If IsNumeric(Cells(I, 1).Value) And Cells(I, 1).Value > Var Then
Cells(I, 1).EntireRow.Hidden = True
End If
Next I

Sheets("PLANNING").Protect Password:="toto"

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub


si vous avez la moindre idée afin d'optimiser l'execution de cette macro et de maintenir les performances generales, je suis tout ouïe

merci d avance à tous 😉
 
Re : Perte de performance apres execution d'une macro

Bonjour,
comment appelles tu la macro ci dessus (es ce à l'aide d'un évènement _change() d'une feuille?)
car si c'est le cas je me demande si lorsque tu masque une ligne tu ne rappelle pas la macro a partir du debut (mais tous dépend par quoi elle est déclenché)
A+
 
Re : Perte de performance apres execution d'une macro

Comme ceci

Si tu as plus qu'un message qui apparait, tu as trouvé ton problème.



Code:
Sub NbreStaffPlanning()


Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Dim Var As Long
Var = ThisWorkbook.Names("NbreStaff").RefersToRange 

ThisWorkbook.Sheets("PLANNING").Visible = xlSheetVisible
Sheets("PLANNING").Select
Sheets("PLANNING").Unprotect Password:="toto"

Cells.EntireRow.Hidden = False

For I = 5 To Range("a" & Application.Rows.Count).End(xlUp).Row
If IsNumeric(Cells(I, 1).Value) And Cells(I, 1).Value > Var Then
Cells(I, 1).EntireRow.Hidden = True
End If
Next I

Sheets("PLANNING").Protect Password:="toto"

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

msgbox "*"
End Sub
 
Re : Perte de performance apres execution d'une macro

Bonjour a vous 2,

alors la macro est executée via un bouton dans un USF
et non il ne semble pas que la macro s'execute plusieur fois....
je suis paumé et desespéré... mon appli fonctionne, toute les fonctions dont j ai besoin sont implémentées mais j'ai ce probleme de performance qui m'ennuie...
aucune idée ???
un truc en plus, non seulement j ai une perte de perf durant l utilisation de l'appli, mais l'ouverture de l appli prend aussi bcp de temps (presque 1mn) alors meme qu'aucune macro n'est lancé a ce moment la....

est ce que c est le fais de cacher des lignes par un macros qui pourrait ralentir le tout ????

merci d avance pour votre aide 😉
 
Dernière édition:
Re : Perte de performance apres execution d'une macro

Re,
je pense que le fait d'utiliser la boucle for i prend tous ce temps si effectivement tu as beaucoup de ligne,il faudrait essayer de trouver une autres méthodes de boucle
a suivre...
 
Re : Perte de performance apres execution d'une macro

Bonjour a tous
essai ce genre de boucle:
Code:
Sub test()
Dim i As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Cells.EntireRow.Hidden = False
Var = 15
i = Columns(1).End(xlDown).Row
Range("a5:a" & i).Select
For Each Cell In Selection
If  IsNumeric(Cell.Value) And Cell.Value > Var Then Cell.EntireRow.Hidden = True
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
il faut juste adapté à ton fichier
A+
 
Re : Perte de performance apres execution d'une macro

Essayons sans

EntireRow
Application.Rows.Count
End(xlUp).Row



Code:
Sub NbreStaffPlanning()


Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

Dim Var As Long
Var = ThisWorkbook.Names("NbreStaff").RefersToRange 

ThisWorkbook.Sheets("PLANNING").Visible = xlSheetVisible
Sheets("PLANNING").Select
Sheets("PLANNING").Unprotect Password:="toto"

'Cells.EntireRow.Hidden = False      A quoi ca sert ?

I = 5
do while cells(i,1) <> ""

     ' quand ce n'est pas numérique, inutile de tester Cells(I,1).value > Var
     if IsNumeric(Cells(I, 1).Value) then Rows(I).Hidden = Cells(I, 1).Value > Var 
     

I = I + 1
Loop

Sheets("PLANNING").Protect Password:="toto"

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub
 
Re : Perte de performance apres execution d'une macro

Bonsoir à tous


Sans boucle, mais avec l'autofilter

Code:
Sub a()
Dim V_ar As Long
V_ar = [NbreStaff]
Range([A5], [A65536].End(xlUp)).AutoFilter 1, "<=" & V_ar
End Sub
PS: il faut qu'il existe dans le classeur une cellule nommée NbreStaff

Je viens de tester sur 5000 lignes, c'est immédiat.

Aucun ralentissement constaté.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

A
  • Question Question
Réponses
8
Affichages
938
D
  • Résolu(e)
Réponses
3
Affichages
705
débutantplus
D
Réponses
3
Affichages
1 K
Retour