Si vous avez l'habitude d'enregistrer comme  tâches régulières les étapes de votre flux de travail, sachez que vous pouvez augmenter la vitesse d'exécution des macros, ce qui est particulièrement utile si vous les utilisez pour de nombreux objets à la fois.

Ouvrez votre éditeur de macro en appuyant sur les touches Alt+F11 et localisez votre macro enregistrée ou écrite (les macros enregistrées se trouvent généralement sous GlobalMacros > Modules > RecordedMacros).
Maintenant, ajoutez les lignes suivantes  sous Variables Declarations (elles  commencent par "Dim ... sous ...") :
ActiveDocument.BeginCommandGroup >>Your Task Name<<
Optimization = True
EventsEnabled = False
ActiveDocument.SaveSettings
ActiveDocument.PreserveSelection = False
Le nom de votre tâche (Your Task Name) peut être un nom descriptif de la tâche et il apparaîtra dans la liste déroulante des annulations (UnDo Dropdown Listsof) de votre document  actif ouvert de même nom.
EventsEnabled
désactivera toutes les actions visant un documents pendant que votre macro s'exécute, ce qui est logique dans presque tous les cas.
ActiveDocument.SaveSettings enregistrera les changements actuels que vous avez récemment apportés à la forme.
ActiveDocument.PreserveSelection peut être utilisé en option : si vous préférez que la sélection actuelle des formes ne soit désélectionnée après l'exécution de la macro, vous devrez omettre cette ligne. Mais, si cette ligne figure dans votre code, elle fera augmenter en plus la vitesse d'exécution.

Pour mettre fin à l'optimisation, vous devez rétablir toutes les déclarations dans le bon ordre; elles peuvent être mises au fond de la procédure (juste avant End Sub, Exit Sub, End Function ou Exit Function) :
ActiveDocument.PreserveSelection = True
ActiveDocument.RestoreSettings
EventsEnabled = True
Optimization = False
ActiveDocument.EndCommandGroup
ActiveWindow.Refresh
Application.Refresh
Application.CorelScript.RedrawScreen
Les trois derniers énoncés ont pour fonction de redessiner l'écran, ce qui peut parfois être nécessaire.  La déclaration la plus importante est la EndCommandGroup :  si le code n'exécute pas cette ligne, l'application peut se planter et il vaudra mieux donc de la faire entrer dans une routine séparée de gestion des erreurs.

Conseil de Maurice Beumers, Maître CorelDRAW, graphiste et illustrateur.

Anonymous