VBA 7.1 dans AutoCAD & Inventor 2014

Logo VBA

Dans la version 2014 d'AutoCAD et d'Inventor, Autodesk a mis à jour VBA. On est passé de la version 6.3 à la 7.1. C'est à priori une bonne nouvelle pour les utilisateurs qui ont des programmes VBA, car la version 7.1 de VBA existe en version 64 bits. Jusqu'ici les programmes VBA étaient très lents à s'exécuter sur un système d'exploitation 64 bits parce qu'Autodesk avait du les faire fonctionner dans un processus 32 bits. A chaque fois qu'il y avait des échanges entre AutoCAD et VBA on franchissait donc les frontières du processus, ce qui impliquait toute une surcharge qui ralentissait énormément les programmes (chez un de nos client, le programme mettait 7 fois plus de temps que sur une machine 32 bits).

Mais je viens de tomber sur un gros problème : quand on développe des interfaces un peu sophistiquées en VBA, on est vite limité avec les contrôles fournis. Alors généralement on utilise les contrôles VB6 (Microsoft Common Controls, mscomctl.ocx) comme MSFlexGrid par exemple.

Le soucis c'est que ces contrôles OCX n'existent pas en 64 bits et Microsoft n'a pas l'air décidé à les migrer. Il faut soit remplacer les contrôles utilisés par d'autres, soit trouver une solution de contournement via l'API Windows. Sinon il faut migrer en .NET...

Donc ce qui se présentait comme une bonne nouvelle est en fait plutôt une mauvaise. Jusqu'à AutoCAD et Inventor 2013 vos programmes VBA fonctionnaient lentement, mais ils fonctionnaient, maintenant avec 2014, ils ne fonctionneront plus...

Le problème se pose d'ailleurs aussi pour Solidworks 2013...

Etiquettes:

Add new comment