Recherche sur le blog

mardi 6 janvier 2015

[Office] Bulletin MS14-082 et problème d'ActiveX

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" http://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.

Sources

BornCity.
ExcelMatters.

1 commentaire:

jmalessan a dit…

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.