Boucle For trop lente
Résolu
Xbar
-
Xbar -
Xbar -
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
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:
- Boucle For trop lente
- Pc trop lent - Guide
- Downloader for pc - Télécharger - Téléchargement & Transfert
- Idm for mac - Télécharger - Téléchargement & Transfert
- Copytrans heic for windows - Télécharger - Visionnage & Diaporama
- Instagram for pc - Télécharger - Divers Communication
12 réponses
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.
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.
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)?
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)?
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
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
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 ?
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 ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
en attendant, sauvegarde et sors d'Excel; ensuite, relance la b^te et retentes la macro
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 ... :(
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 ... :(
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é!
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é!