Exécution très lente du code

Résolu
fabiendag - 22 févr. 2013 à 15:22
 fabiendag - 26 févr. 2013 à 11:10
Bonjour à tous,
cette fois pour une autre application, je fais juste un copier coller ligne par ligne d'une feuille à l'autre. Il y a beaucoup de lignes dans la feuille d'origine.
Le problème est que mon programme mets déjà 2 secondes pour copier une cellule. Quand je fais en mode pas a pas, c'est pareil. Entre le moment où j'appuie sur F8 et le moment où le programme descend à la ligne du dessous il se passe au moins 2 secondes... sachant que j'ai plus de 6000 lignes à copier, ca prends un moment.
Voici le code :
Worksheets("clitou+diap").Activate
While Range("A" & ligne) <> "" Or Range("B" & ligne) <> ""
With Worksheets("annee en cours")
.Range("A" & ligne) = Range("A" & ligne)
.Range("B" & ligne) = Range("B" & ligne)
.Range("C" & ligne) = Range("C" & ligne)
.Range("F" & ligne) = Range("F" & ligne)
.Range("G" & ligne) = Range("G" & ligne)
.Range("H" & ligne) = Range("H" & ligne)
.Range("I" & ligne) = Range("I" & ligne)
.Range("J" & ligne) = Range("J" & ligne)
.Range("K" & ligne) = Range("K" & ligne)
.Range("L" & ligne) = Range("L" & ligne)
.Range("M" & ligne) = Range("M" & ligne)
.Range("R" & ligne) = Range("P" & ligne)
.Range("P" & ligne) = .Range("R" & ligne)
End With
ligne = ligne + 1
Wend

Fabien

5 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
22 févr. 2013 à 15:45
Salut

Étrange.
F8 : donc tu es sûr qu'il ne va pas exécuter d'autres lignes ailleurs.
De combien de mémoire disposes-tu ?
Sur quel Excel, quel Windows ?
Sur W7, as-tu jeté un œil au moniteur de performances ?
Quelle taille fait ton fichier ?
Combien de feuilles dans le classeur ?
Nombre approximatif de lignes dans la feuille active ?
Avec (peu, beaucoup) d'animations genre coloriage conditionnel ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on le partage (Socrate)
3
meci jack heureusement que tu es là... je pense que j'avais un soucis de performance à ce moment là, je peux pas en dire plus, mais là ca marche plus rapidement... donc c'est déjà ça, si j'ai d'autres soucis je te recontacte lol
sinon le fichier excel fait 7Mo avec une dizaine de feuilles dont la moitié à un peu de plus de 6000 lignes
il n'y a aucun coloriage ni quoi que ce soit dedans


Fabien
3
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
25 févr. 2013 à 18:01
Vérifie qu'il n'y a pas de lignes ou colonnes superflues dans tes différents onglets. Pousse la barre de défilement du haut vers le bas et regarde si ça dépasse tes données. Même chose vers la droite.
S'il y a des lignes vides qui s'affichent, supprime toutes les lignes sous tes données et même chose pour les colonnes. Ça va réduire la taille du fichier.

Aussi, en début de procédure, tu peux mettre Application.ScreenUpdating = False (à remettre à True à la fin)
S'il y a des formules, utilise aussi
Application.Calculation = xlCalculationManual
à remettre à xlCalculationAutomatic à la fin.

Ça devrait aider pour la vitesse

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
3
merci bien à vous deux, mon application est plus rapide maintenant.



Fabien
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Résolu

Fabien
3
Rejoignez-nous