besoin d'un génie de VBA. boucle lente !

zenix

Nouveau membre
Bonjour,

J'ai un problème de performance dans une boucle vba. Le but de ma boucle est simplement d'inscrire le numéro de la ligne dans la colonne A. la boucle va jusqu'à la ligne 40 000. Le code est simple et ne pose aucun problème :

Sub boucle()

n = 0

Do

n = n + 1

Cells(n, 1).Value = n

Loop Until n = 40000

End Sub

(Ces chiffres me servent simplement à procéder au tri final de mon fichier par ordre alphanumérique lorsque toutes les manipulations ont été effectuées.)


Ce même fichier est rempli de formules. Il est relativement lourd.

Lorsque j'active la boucle, les numéro s'inscrivent correctement. Mais elle est anormalement lente. 20 cellules de remplies à la seconde.

J'ai donc fait des tests :

-- J'ai fait un copiage en valeur du fichier et j'ai activé la macro. ça fonctionne rapidement

-- J'ai ajouté le copiage en format du fichier et ça fonctionne normalement. la macro atteint la cellule 40 000 en 2 sec.

-- J'ai copié une colonne en formule. la macro a commencé à ralentir. j'ai finalement copié toutes les formules dans le fichier et la macro est à nouveau redevenu anormalement lente.


Encore plus étrange :

-- Lorsque mon fichier rempli de formules est ouvert et que je réalise cette macro de numérotation de lignes sur un autre classeur vierge, la boucle est toujours très lente.

-- Lorsque je lance la même boucle sur un classeur vierge et que mon fichier (rempli de formules) est fermé, la boucle retrouve son rythme normal (1 à 2 sec au lieu de 20mn)

-- J'ai déja réalisé la même macro sur une première maquette similaire à mon fichier actuel en terme de volume et du nombre de formules, je n'ai pas rencontré ce problème.

Y a t'il parmi vous des surdoués qui pourraient identifiés la source du problème.

Je craque.

Merci !

zenix
 

zeb

Modérateur
J'avais pensé à
Code:
EnableCalculation := False
[..]
EnableCalculation := True
Mais mes tests ne sont pas concluants. Essaye quand même chez toi.

zenix> Tu as vu comme ma réponse, faute d'être LA solution qui t'aurait tant fait plaisir, est jolie ? C'est parce que j'ai utilisé la balise
Code:
. En plus ça a le don de faire ronronner le gros matou gris, alors use-en, abuse-en :D
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 134
Messages
6 718 081
Membres
1 586 396
Dernier membre
theo619
Partager cette page
Haut