macro qui tourne au ralenti

macro qui tourne au ralenti - VB/VBA/VBS - Programmation

Marsh Posté le 14-11-2007 à 11:31:19    

Bonjour,
 
Alors petit problème
PC1 = P4 1.8ghz, 256mo de ram Excel 97
PC2 = P4 HT 3hgz, 1Go de ram Excel 2003
 
Quand lance une macro sur le PC1, elle s'exécute en 1minute à peine
Quand je lance le même fichier même macro sur l'autre poste plus de 10minutes pour exécuté la macro
 
D'où vient le problème?

Reply

Marsh Posté le 14-11-2007 à 11:31:19   

Reply

Marsh Posté le 14-11-2007 à 13:27:06    

Te rends-tu compte que sans le code de la macro en question, ni même la plus petite explication sur ce qu'elle fait, ni sur le contexte d'exécution (logiciels tiers, antivirus, etc.) on ne peut guère t'aider ?

Reply

Marsh Posté le 14-11-2007 à 15:17:18    

ouai mais bon le code on sent fou c'est le même sur les deux postes
et de toute façon je ne peux pas le divulguer
en gros sa compare chaque ligne d'un tableau avec plusieurs critères pour le trié.
le contexte est déjà donné, pas de logiciel supplémentaire ou Antivirus, le problème vient de la version d'office, la version 2003 ferai-t-elle des vérifications supplémentaire en exécutant le code que la version97 ne fait pas? j'ai même testé avec une version 2000 d'office pareil c'est lent  


Message édité par lord_boromir le 14-11-2007 à 15:17:38
Reply

Marsh Posté le 14-11-2007 à 20:31:19    

On ne se fout évidemment pas du code, puisque c'est lui qu'il faut changer... pas la machine !
 
Ton code manipule quoi ? Excel uniquement ?
Il y a des paramètres impression ?
 
Tu utilises des bocles For/If pour tes comparaisons ou des application.match/.find ?
 

Reply

Marsh Posté le 14-11-2007 à 23:47:46    

c'est ce que l'utilisateur a fait utilisé des boucle avec for et if

Reply

Marsh Posté le 15-11-2007 à 10:37:50    

tu peux alors remplacer les :
 
for A=1 to 10
  if cells(a,2)="blabla" then
    ...
  end if
next a
 
par des :
 
if not iserror(application.match("blabla",range(cells(1,2),cells(10,2)),0)) then
  range(cells(1,2),cells(10,2)).find("what:="blabla",lookat:=xlwhole).row
  ...
end if
 
c'est un peu long à écrire mais ca tourne instantanément

Reply

Marsh Posté le 15-11-2007 à 10:38:51    

ceci dit, je pense qu'il y a autre chose...
 
tu utilises "application.screenupdating=false" ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed