Boucle For trop lente

Résolu/Fermé
Xbar - 21 août 2009 à 09:49
 Xbar - 21 août 2009 à 12:09
Bonjour,

J'ai écris un bou de code dans un module excel 2003 pour créer automatiquement un index si la cellule n'est pas une lettre. Etant débutant en VBA, je joue avec la couleur pour incrémenter les cellules.(si la couleur et jaune claire alors ....).

Que dois-je faire pour augmenter la rapiditer ? elle met 2 min a faire 100 lignes :'(

Sheets("Données").Activate

Fi = Range("L1").value 'Calcule du nombre de ligne (1532)
num = 1
For i = 3 To Fi
If Cells(i, 1).Interior.ColorIndex = 36 Then
Cells(i, 1).value = num 'Ligne qui ralentie la boucle (Pas à pas)
num = num + 1
End If
Next i

merci !

Xbar
A voir également:

12 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
21 août 2009 à 10:19
Bonjour,
avant le départ de boucle écris cette ligne:
application.screenupdating=false

cela te fige le défilement de l'écran et fait gagner du temps.
0
Bonjour michel_m,

merci pour ta réponse.
J'ai mis le application.screenupdating = false au de debut et en true à la fin.
malheureusement ça na rien changer.
en pas à pas, j'attend que la ligne jaune réapparaisse et sur la ligne cell(i,1).value=num elle met environ 2 sec a réaparaitre.

Est-ce du au déclaration de variable que j'ai omise (Je sais pas quoi mettre)?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
21 août 2009 à 11:12
Bonjour,
Peut être est ce cette ligne qui ralentit la fonction :
If Cells(i, 1).Interior.ColorIndex = 36 Then

Comme vous désirez tester si la cellule n'est pas une lettre essayez ceci :

If Application.IsNonText(Cells(i, 1).Value) = True Then
0
Merci Pijaku,

J'ai remplacer comme indiquer, mais la boucle reste super lente.... la cause ne vient pas de là.
Je ne saisi pas, pour moi la boucle est bonne.... :s

d'autres idées ?
0

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

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
21 août 2009 à 11:29
re, bonjour pijaku

je viens de faire une maquette de ta procédure et je n'ai eu aucun problème de temps...

pour mémoire, voilà ce que j'ai fait:
https://www.cjoint.com/?ivlB5yz0tU

essaies chez toi et dis nous le résultat
0
Re michel_m

je ne saisi pas là, sur ton classeur pas de problème,
serais mon fichier qui sature?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
21 août 2009 à 11:37
Chez moi ça se fait en une fraction de secondes (sur 1600 lignes)... Pas comprendre...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
21 août 2009 à 11:42
Un classeur > 2 Mo pose souvent des problèmes.... (pour ma part je ne dépasse jamais 1 Mo en utilisant plusieurs classeurs mais...)

en attendant, sauvegarde et sors d'Excel; ensuite, relance la b^te et retentes la macro
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
21 août 2009 à 11:46
classeur > 2 Mo d'ou mon conseil d'éviter les couleurs etc...
A+
0
Ok, donc c'est surement pas dut au code mais au fichier lui meme.....
J'ai lancer la macro sur le fichier en lien sur le mien et le probleme est le meme.
Apparement mon fichier fais un recalcul automatique je sais pas pkoi ... :(
0
J'ai trouver,

il s'agissait bien du recalcul de la feuille.
j'ai mis Application.Calculation = xlManual avant la boucle et après elle a fusée.

Un grand merci pour le temps passé!
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
21 août 2009 à 12:02
Message annulé... content pour toi
0
Je retiens quand même les conseils. la taille de mon fichier et un peu enormes.... pres de 5 mo. N'ayant pas la possibilité d'avoir access... cela devient vite lourd. Je retirerais les couleur cette aprèm.

Bonne Ap!
0