[vba]Optimisation du code pour la rapidité (résolu)

Optimisation du code pour la rapidité (résolu) [vba] - VB/VBA/VBS - Programmation

Marsh Posté le 11-08-2004 à 12:52:38    

Bonjour,
 
j'ai créé un programme dont la fonction principale est de remplir et de créer des dizaines zones sur une page... Seulement, le programme mets près de 5 secondes sur un ordinateur récent à faire sa routine, et plus de 35 secondes sur l'ordinateur sur lequel il devra tourner.
 
Est-il possible d'optimiser le code ?
 
Voici le code pour une zone qui est répété des dizaines de fois...
 

Code :
  1. ActiveDocument.Shapes.AddTextbox(msoTextOrientationHorizontal, CentimetersToPoints(0.6), CentimetersToPoints(0.8), CentimetersToPoints(5), CentimetersToPoints(0.4)).Select
  2. Selection.ShapeRange.TextFrame.TextRange.Select
  3. Selection.ShapeRange.Fill.Visible = msoFalse
  4. Selection.ShapeRange.TextFrame.MarginLeft = 0#
  5. Selection.ShapeRange.TextFrame.MarginRight = 0#
  6. Selection.ShapeRange.TextFrame.MarginTop = 0#
  7. Selection.ShapeRange.TextFrame.MarginBottom = 0#
  8.     Selection.ShapeRange.Line.Weight = 0.75
  9.     Selection.ShapeRange.Line.DashStyle = msoLineSolid
  10.     Selection.ShapeRange.Line.Style = msoLineSingle
  11.     Selection.ShapeRange.Line.Transparency = 0#
  12.     Selection.ShapeRange.Line.Visible = msoFalse
  13. Selection.Collapse
  14. Selection.TypeText Text:=NomTextbox.Text


 
Optimisation pour une meilleure vitesse d'exécution possible ?
 
Merci  :bounce:


Message édité par AssiuM le 11-08-2004 à 13:19:28
Reply

Marsh Posté le 11-08-2004 à 12:52:38   

Reply

Marsh Posté le 11-08-2004 à 13:05:04    


Avant de commencer à créer tes zones :
 
Application.ScreenUpdating = False
 
et a la fin :  
Application.ScreenUpdating = True
 
==> Ca évitera de redessiner toutes les zones 1 par 1 au cours de la génération...

Reply

Marsh Posté le 11-08-2004 à 13:13:51    

-Farenheit- a écrit :

Avant de commencer à créer tes zones :
 
Application.ScreenUpdating = False
 
et a la fin :  
Application.ScreenUpdating = True
 
==> Ca évitera de redessiner toutes les zones 1 par 1 au cours de la génération...


 
merci !!!! impressionnant ça prend maintenant plus que 6 secondes au lieu de 35  :ouch:  :ouch:  
 
chapeau bas  :hello:

Reply

Sujets relatifs:

Leave a Replay

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