Bonsoir à tous ,
j'ai un pb de lenteur pour l'exécution de ma macro du module 5. Pourriez vous me conseiller SVP. Par avance un grand merci à vs.Ci-joint fichier https://www.cjoint.com/c/NKwrPKaMpzn .Bonne soirée à tous.
Bonsoir à tous ,
j'ai un pb de lenteur pour l'exécution de ma macro du module 5. Pourriez vous me conseiller SVP. Par avance un grand merci à vs.Ci-joint fichier https://www.cjoint.com/c/NKwrPKaMpzn .Bonne soirée à tous.
Hello,
sans les tenants et aboutissants ça va être difficile de vous aider.
Pour moi la macro est instantanée et il n'y a rien qui se passe !
Bonjour à tous,
Pareil pour moi.
Avec le peu d'information que nous avons je ne vois qu'un encombrement important de la mémoire de ton PC. Voir si il n'y a pas de programme qui tournent en background. Vérifier les programmes qui sont lancés à l'ouverture du PC.
Autre piste : tu nous as envoyé un fichier test et ton fichier actif comporte une base de milliers de lignes.
Bon courage
Chris
Bonsoir domdom, NPK, Chris,
Module5, Sub RegrouperSemaines()
ta dernière ligne Dim est celle-ci : Dim regroupement As Boolean
juste dessous, ajoute cette ligne : Application.ScreenUpdating = 0
mise à jour de l'écran désactivée (= gel de l'écran) ➯ tu verras que
l'exécution de ta macro sera beaucoup plus rapide ! :)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
éventuellement, tu peux ajouter la ligne indiquée sous cette ligne :
lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row
mais il faut IMPÉRATIVEMENT que ce soit AVANT la boucle For,
donc AVANT : For i = 2 To lastRow
ça serait totalement INUTILE et INEPTE de faire un gel de l'écran
POUR CHAQUE LIGNE à traiter dans la boucle For i .. Next i !
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
la mise à jour de l'écran sera AUTOMATIQUEMENT réactivée juste
avant la sortie de la sub ➯ c'est INUTILE de mettre une ligne VBA
pour réactiver EXPLICITEMENT la mise à jour écran.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
exception : si on affiche un message via MsgBox AVANT la sortie
de sub ET qu'on a besoin que soient à jour les infos de la feuille
de calcul (derrière la boîte de dialogue), à ce moment-là :
Application.ScreenUpdating = -1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Application.ScreenUpdating = 0 est l'équivalent de :
Application.ScreenUpdating = False
Application.ScreenUpdating = -1 est l'équivalent de :
Application.ScreenUpdating = True
rhodo