SYNTHETISER DONNEES TABLEAU

0

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.

Posté le 22 novembre 2024, 18:48
par domdomdu25
Répondre
0

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 !

Posté le 22 novembre 2024, 23:41
par Nain_Porte_Koi
0

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

Posté le 23 novembre 2024, 17:59
0

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

rhodo Posté le 23 novembre 2024, 19:30
par rhodo

Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :