EXCEL - Affichage en boucle figé

Résolu/Fermé
Josel - 13 mars 2011 à 09:47
 Josel - 14 mars 2011 à 09:56
Bonjour,
J'exécute la routine simple VAB suivante (EXCEL 2010 sur VAIO VPCZ1 SSD):
Sub Macro1()
Dim I as Long
For I = 1 to 100000
Range("B2") = I
Next I
End Sub
L'affichage en boucle se déroule bien jusqu'à une valeur Je ne constate pas cela sur EXCEL 2003 sur un autre PC. Avez vous également rencontré ce phénomène ? Peut-on y remédier ?
Merci pour vos lumières.
A voir également:

2 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 708
13 mars 2011 à 19:01
bonjour

As-tu essayé en inhibant l'affichage :

Application.ScreenUpdating = False
0
Merci gbinforme,
Mon message était tronqué ! En fait, la procédure s'exécute bien jusqu'au bout. C'est juste l'affichage qui se bloque à une valeur voisine de 25000 pendant que la boucle continue à se dérouler. L'instruction suggérée est efficace puisqu'elle annule l'affichage, mais j'aimerais précisément le conserver pour avoir un compteur.
J'ai l'impression que l'affichage se bloque parce que l'algorithme va beaucoup plus vite et qu'il ne peut suivre.
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 708
13 mars 2011 à 22:43
l'algorithme va beaucoup plus vite

C'est évident que ce calcul simple est rapide et en enlevant l'affichage, je divise le temps par 8 environ. Cela vient peut-être de ta carte vidéo qui ne suis pas ?
Si tu veux un compteur il te faut temporiser le calcul car tu as 100000 affichages en quelques secondes et c'est impossible de suivre le déroulement.
0
En effet, c'est probablement un déséquilibre entre la vitesse de traitement de la carte vidéo et celle du coeur qui est un SSD. Il suffit de by-passer l'affichage avec un test du type :
Dim B As Long
For B = 1 to 100000
If B Mod 5 <> 0 Then GoTo C
Range("B2") = B
C: Next B
.... pour que la situation revienne dans l'ordre.
A titre d'exemple, j'obtiens les valeurs suivantes :
B Mod 5 affichage jusqu'au bout , boucle complète en 12 secondes
B Mod 4 affichage bloqué à 82 520, boucle terminée en 14 secondes
B Mod 3 ..............................61 911 ................................18 secondes
B Mod 2 ..............................40 728 ................................27 secondes
B Mod 1 ............................. 20 465 ................................52 secondes

et, avec B Mod 100 000, je n'ai même plus le temps de déclencher le chronomètre tellement c'est rapide !
Merci "gbinform" pour avoir passé du temps sur la question !
0