Les macros s’exécutent plus lentement dans Excel plus récent? (Microsoft Excel)
Dave a un système Windows XP qui contient encore une ancienne version d’Excel 97. Ce système a une macro qui est utilisée pour traiter les informations dans une feuille de calcul. Il est capable de traiter 500 lignes d’informations en 12 secondes environ. Sur une machine plus récente, exécutant Excel 2010 sous Windows 7, la même macro fonctionnant sur les mêmes données prend environ 3 à 4 minutes à s’exécuter. Les deux machines ont la même quantité de mémoire (4 Go) et des processeurs comparables. Dave se demande pourquoi la macro fonctionne tellement plus lentement sur la nouvelle version d’Excel.
Il est très difficile de faire autre chose que les commentaires les plus généraux sans voir le code, mais cela ne veut pas dire qu’il n’y a rien à dire. :>) La première chose que vous voudrez faire est de vérifier comment votre macro fait son travail. Par exemple, parcourt-il toutes les lignes de la feuille de calcul pour effectuer son traitement? (Même si la macro traite 500 lignes d’informations ne signifie pas qu’elle ne parcourt pas toutes les lignes de la feuille de calcul.) La raison pour laquelle cela peut être critique est que les versions antérieures d’Excel n’utilisaient que plus de 65000 lignes dans une feuille de calcul, alors que les dernières versions peuvent gérer 16 fois plus de lignes (plus de 1 000 000). Si votre macro mettait 12 secondes à s’exécuter auparavant, 16 fois plus de temps serait de 192 secondes, soit entre 3 et 4 minutes.
Il y a aussi des rapports qu’Excel 2010 communique assez régulièrement avec le pilote d’imprimante, d’une manière qui n’était pas faite dans les versions précédentes d’Excel. Vous pouvez savoir si cela ralentit votre macro en désactivant la communication au début de votre macro:
Application.PrintCommunication = False
À la fin de votre macro, n’oubliez pas de redéfinir la propriété sur True pour qu’Excel puisse à nouveau communiquer avec l’imprimante.
Il se peut aussi qu’il y ait quelque chose de différent avec la nouvelle machine, même si la différence est subtile. Par exemple, la machine la plus récente pourrait avoir différents programmes en arrière-plan en cours d’exécution que la machine plus ancienne, allant d’un programme antivirus au logiciel de reconnaissance vocale. En outre, il peut y avoir des charges de compléments Excel différents qui ne sont pas sur le système précédent. Vous ne penseriez pas que de telles choses affectent les performances macro, mais elles le pourraient vraiment. Vous ne saurez pas, bien sûr, tant que vous n’aurez pas localisé ce qui est en cours de chargement, que vous ne l’aurez pas désactivé, puis que vous n’aurez pas essayé d’exécuter à nouveau votre macro.
En outre, il se peut que la nouvelle machine ait des périphériques externes qu’elle doit interroger périodiquement, ce qui pourrait ralentir les choses. J’ai un système dans mon bureau qui a un disque dur externe, connecté via un port USB. Parfois, le système lui-même (Windows) doit s’éteindre et mettre sous tension le lecteur externe, et les choses s’arrêtent essentiellement sur l’ordinateur pendant que cela se produit. Les périphériques coupables peuvent être des pièces jointes USB, des scanners, des lecteurs réseau, etc. Cela peut être très frustrant, surtout quand cela ralentit quelque chose qui ne devrait pas prendre longtemps du tout.
Une bonne suggestion dans ce cas est de ne pas se fier uniquement à ce que vous trouvez avec un seul système Excel 2010. Si vous avez accès à plusieurs machines, peut-être même à l’extérieur du bureau, essayez la macro sur elles pour voir ce qui se passe. S’il fonctionne plus vite, vous savez qu’il y a quelque chose d’invisible en jeu sur le système lent de 2010.
Si vous trouvez que tout est vraiment « égal », vous devrez peut-être entrer dans l’éditeur VB sur le système et commencer à chronométrer les différentes parties de votre macro. C’est fastidieux, mais cela peut vous aider à préciser où exactement la macro s’enlise.
Si vous décidez d’emprunter cette dernière voie, vous trouverez que cela vaut la peine d’investir dans le livre de référence d’un bon programmeur Excel VBA. Il y en a plusieurs sur le marché, alors magasinez un peu. (Vous ne pouvez pas vous tromper avec quoi que ce soit écrit par John Walkenbach, et j’ai entendu de bonnes choses à propos de Excel 2007 VBA Programmer’s Reference.)
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (12440) s’applique à Microsoft Excel 2010.