Suite à la mise à jour corrective MS14-082 pour les suites Office, de nombreux utilisateurs ont vite constaté un problème avec leurs contrôles ActiveX, notamment dans un classeur Excel. Il s’agit des mises à jour de sécurité suivantes, destinées à colmater une faille qui permettait l’exécution de code distant :
- Security Update for Microsoft Office 2007 (KB2596927).
- Security Update for Microsoft Office 2010 (KB2553154).
- Security Update for Microsoft Office 2013 (KB2726958).
Les symptômes rencontrés peuvent varier d’une machine à une autre. On note les problèmes suivants :
- Contrôles ActiveX inactifs / impossibilité de modifier leurs propriétés.
- Erreur indiquant « Impossible d’insérer un objet » (Cannot insert object).
- Erreur indiquant « Le programme utilisé pour créer cet objet est xxxx. Ce programme n’est pas installé sur votre ordinateur ou ne répond pas (…)« .
- Erreur 438, « L’objet ne gère pas cette propriété ou méthode » en tentant de pointer vers un contrôle ActiveX depuis le code (d’un classeur).
- Problème affectant le nom d’un contrôle donné lors de sa création.
Plusieurs solutions s’offrent à vous, certaines peuvent ne pas fonctionner selon la version Office utilisée sur votre machine.
Désinstaller la mise à jour
La première solution qui nous vient à l’esprit est de désinstaller la mise à jour de votre système (voir ci-dessous pour repérer le correctif correspondant). Sur Windows 7 et Windows 8, rendez-vous dans le Panneau de configuration, Windows Update, Mises à jour installées, sélectionnez la mise à jour puis cliquez sur Désinstaller. Cependant cela ne sera peut-être pas forcément nécessaire : la solution suivante consiste à nettoyer les fichiers temporaires, et nous allons voir pourquoi !
Nettoyer les fichiers temporaires
En consultant les différents blogs, dont celui de Microsoft, la solution proposée est toujours la même. Celle-ci consiste à nettoyer les fichiers temporaires qui servent de cache. Trois méthodes sont disponibles : manuelle, scriptée ou automatisée. A vous de choisir celle que vous préférez, en fonction de votre niveau de compétences.
1 – Méthode manuelle
Après la mise à jour, les libraires de types de contrôles, mises en cache, sont « désynchronisées ». Elles sont stockées sous le format « Extender files » (*.exd). Il faut alors supprimer ces fichiers à plusieurs endroits de votre disque.
- %appdata%\microsoft\forms
- %temp%\excel8.0
- %temp%\word8.0
- %temp%\PPT11.0
- %temp%\vbe
Vous pouvez également chercher après le fichier « MSForms.exd » dans %TEMP% et %APPDATA%. Attention, n’oubliez pas de fermer les applications Microsoft Office (Excel, PowerPoint, etc) avant d’effectuer cette opération. Un redémarrage peut être nécessaire par la suite.
2 – Utilisation d’un script
Étant donné que le problème peut affecter plusieurs machines il peut être intéressant de concevoir un script batch qui contiendra les lignes suivantes :
del %temp%\vbe*.exd
del %temp%\excel8.0*.exd
del %appdata%\microsoft\forms*.exd
del %appdata%\microsoft\local*.exd
del %temp%\word8.0*.exd
del %temp%\PPT11.0*.exd
Enregistrez le fichier en lui donnant l’extension « .bat ». Lancez-le pour chaque profil car les fichiers « .exd » sont spécifiques à l’utilisateur. Pour automatiser ce script lors de l’identification dans un domaine, vous pouvez suivre le tutoriel suivant : Setting up a Logon Script through Active Directory Users & Computers (en).
3 – Méthode automatisée
Microsoft a mis en ligne un script qui permet d’effectuer ces opérations. Il peut être obtenu à l’adresse suivante : « Cannot insert object Error in an ActiveX custom Office solution after you install the MS14-082 security update » https://support.microsoft.com/kb/3025036/EN-US.
Notes
%TEMP% correspond habituellement à : C:\Users\NOM\AppData\Local\Temp.
%APPDATA% correspond habituellement à : C:\Users\NOM\AppData\Roaming.
Bonjour Vincent, et merci pour l'astuce. J'ai été confronté à ce problème hier sur un poste avec office 2010. La désinstallation de la mise a jour concernée a réglé le problème pour moi.