L’erreur d’exécution 429 s’affiche lorsque vous automatisez des applications Office

S’applique à
Office 2016 Office 2013

Résumé

Lorsque vous utilisez l’opérateur Nouveau ou la fonction CreateObject dans Microsoft Visual Basic pour créer une instance d’une application Microsoft Office, le message d’erreur suivant peut s’afficher :

Remarque

Erreur d’exécution « 429 » : impossible de créer l’objet du composant ActiveX

Cette erreur se produit lorsque le modèle d’objet composant (COM) ne peut pas créer l’objet Automation demandé et que l’objet Automation n’est donc pas disponible pour Visual Basic. Cette erreur ne se produit pas sur tous les ordinateurs.

Cet article explique comment diagnostiquer et résoudre les problèmes courants pouvant provoquer cette erreur.

Informations supplémentaires

Dans Visual Basic, il existe plusieurs causes à l’erreur 429. L’erreur se produit si l’une des conditions suivantes est remplie :

  • Il y a une erreur dans la demande.
  • Il y a une erreur dans la configuration du système.
  • Il manque un composant.
  • Un composant est endommagé.

Pour trouver la cause de l’erreur, isolez-la. Si le message d’erreur « 429 » s’affiche sur un ordinateur client, utilisez les informations suivantes pour isoler et résoudre l’erreur dans les applications Microsoft Office.

Remarque Certaines des informations suivantes peuvent également s’appliquer aux serveurs COM non-Office. Cet article suppose toutefois que vous voulez automatiser les applications Office.

Examiner le code

Avant de résoudre l’erreur, essayez d’isoler une seule ligne de code qui peut être à l’origine du problème.

Si vous constatez qu’une seule ligne de code peut être à l’origine du problème, procédez comme suit :

  • Assurez-vous que le code utilise la création d’objets explicite.

    Les problèmes sont plus faciles à identifier s’ils sont réduits à une seule action. Par exemple, recherchez la création d’objet implicite utilisée comme l’une des suivantes.

    Exemple de code 1

    Application.Documents.Add 'DON'T USE THIS!!
    

    Exemple de code 2

    Dim oWordApp As New Word.Application 'DON'T USE THIS!!
    '... some other code
    oWordApp.Documents.Add
    

    Ces deux exemples de code utilisent la création d’objets implicites. Microsoft Office Word 2003 ne démarre pas tant que la variable n’est pas appelée au moins une fois. Étant donné que la variable peut être appelée dans différentes parties du programme, le problème peut être difficile à localiser. Il peut être difficile de vérifier si le problème est causé par la création de l’objet Application ou de l’objet Document .

    Au lieu de cela, vous pouvez effectuer des appels explicites pour créer chaque objet séparément, comme suit.

    Dim oWordApp As Word.Application
    Dim oDoc As Word.Document
    Set oWordApp = CreateObject("Word.Application")
    '... some other code
    Set oDoc = oWordApp.Documents.Add
    

    Lorsque vous effectuez des appels explicites pour créer chaque objet séparément, le problème est plus facile à isoler. Cela peut également faciliter la lecture du code.

  • Utilisez la fonction CreateObject au lieu de l’opérateur Nouveau lorsque vous créez une instance d’une application Office.

    La fonction CreateObject correspond étroitement au processus de création utilisé par la plupart des clients Microsoft Visual C++. La fonction CreateObject permet également de modifier le CLSID du serveur entre les versions. Vous pouvez utiliser la fonction CreateObject avec des objets à liaison anticipée et avec des objets à liaison tardive.

  • Vérifiez que la chaîne « ProgID » qui est transmise à
    CreateObject est correcte, puis vérifiez que la chaîne « ProgID » est indépendante de la version. Par exemple, utilisez la chaîne « Excel.Application » au lieu de la chaîne « Excel.Application.8 ». Le système qui échoue peut avoir une version de Microsoft Office plus ancienne ou plus récente que celle que vous avez spécifiée dans la chaîne « ProgID ».

  • Utilisez la commande Erl pour signaler le numéro de la ligne de code qui échoue. Cela peut vous aider à déboguer des applications qui ne peuvent pas s’exécuter dans l’IDE. Le code suivant vous indique quel objet Automation ne peut pas être créé (Microsoft Word ou Microsoft Office Excel 2003) :

    Dim oWord As Word.Application
    Dim oExcel As Excel.Application
    
    On Error Goto err_handler
    
    1: Set oWord = CreateObject("Word.Application")
    2: Set oExcel = CreateObject("Excel.Application")
    
    ' ... some other code
    
    err_handler:
       MsgBox "The code failed at line " & Erl, vbCritical
    

    Utilisez la fonction BoîteMsg et le numéro de ligne pour suivre l’erreur.

  • Utilisez la liaison tardive comme suit :

    Dim oWordApp As Object
    

    Les objets à liaison précoce nécessitent que leurs interfaces personnalisées soient marshalées à travers les limites du processus. Si l’interface personnalisée ne peut pas être marshalée pendant CreateObjectou pendant New, vous recevez le message d’erreur « 429 ». Un objet à liaison tardive utilise l’interface définie par le système IDispatch qui ne nécessite pas le marshallage d’un proxy personnalisé. Utilisez un objet lié tardivement pour vérifier que cette procédure fonctionne correctement.

    Si le problème se produit uniquement lorsque l’objet est lié par anticipation, le problème se situe au niveau de l’application serveur. En règle générale, vous pouvez réinstaller l’application comme décrit dans la section « Examiner le serveur Automation » de cet article pour corriger le problème.

Examen du serveur d’automatisation

La raison la plus courante pour laquelle une erreur se produit lorsque vous utilisez CreateObject ou Nouveau est un problème qui affecte l’application serveur. En règle générale, c’est la configuration de l’application ou l’installation de l’application qui cause le problème. Pour résoudre ce problème, procédez comme suit :

  • Vérifiez que l’application Office que vous voulez automatiser est installée sur l’ordinateur local. Assurez-vous que vous pouvez exécuter l’application. Pour cela, cliquez sur Démarrer, cliquez sur
    Exécutez, puis essayez d’exécuter l’application. Si vous ne pouvez pas exécuter l’application manuellement, elle ne fonctionnera pas via l’automatisation.

  • Réenregistrez l’application comme suit :

    1. Cliquez sur Démarrer, puis cliquez sur Exécuter.

    2. Dans la boîte de dialogue Exécuter , tapez le chemin du serveur, puis ajoutez /RegServer à la fin de la ligne.

    3. Cliquez sur OK.

      L’application s’exécute en mode silencieux. L’application est réinscrite en tant que serveur COM.

    Si le problème se produit en raison de l’absence d’une clé de Registre, ces étapes corrigent généralement le problème.

  • Examinez la clé LocalServer32 sous le CLSID pour l’application que vous souhaitez automatiser. Assurez-vous que la clé LocalServer32 pointe vers l’emplacement approprié pour l’application. Assurez-vous que le nom du chemin est au format court (DOS 8.3). Vous n’avez pas besoin d’enregistrer un serveur à l’aide d’un nom de chemin d’accès court. Toutefois, les noms de chemin d’accès longs qui incluent des espaces incorporés peuvent causer des problèmes sur certains systèmes.

    Pour examiner la clé de chemin d’accès stockée pour le serveur, démarrez l’Éditeur du Registre Windows comme suit :

    1. Cliquez sur Démarrer, puis cliquez sur Exécuter.

    2. Tapez regedit, puis cliquez sur OK.

    3. Accédez à la touche HKEY_CLASSES_ROOT\CLSID.

      Les CLSID des serveurs d’automatisation enregistrés sur le système se trouvent sous cette clé.

    4. Utilisez les valeurs suivantes de la clé CLSID pour rechercher la clé représentant l’application Office que vous souhaitez automatiser. Examinez la clé LocalServer32 de la clé CLSID pour le chemin d’accès.

      Office Server Clé CLSID
      Access.Application {73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
      Excel.Application {00024500-0000-0000-c000-000000000046}
      Outlook.Application {0006F03A-0000-0000-C000-000000000046}
      PowerPoint.Application {91493441-5A91-11CF-8700-00AA0060263B}
      Word. Candidature {000209FF-0000-0000-C000-000000000046}
    5. Vérifiez le chemin d’accès pour vous assurer qu’il correspond à l’emplacement réel du fichier.

    Remarque Les noms de chemin d’accès courts peuvent sembler corrects lorsqu’ils ne sont pas corrects. Par exemple, Office et Microsoft Internet Explorer (s’ils sont installés à leur emplacement par défaut) ont un chemin court similaire à C :\PROGRA~1\MICROS~X\ (où
    X est un nombre). Ce nom peut ne pas sembler au départ être un nom de chemin d’accès court.

    Pour déterminer si le chemin d’accès est correct, procédez comme suit :

    1. Cliquez sur Démarrer, puis cliquez sur Exécuter.

    2. Copiez la valeur du Registre, puis collez-la dans la boîte de dialogue Exécuter .

      Remarque Supprimez le commutateur /automation avant d’exécuter l’application.

    3. Cliquez sur OK.

    4. Vérifiez que l’application s’exécute correctement.

      Si l’application s’exécute après avoir cliqué sur OK, le serveur est enregistré correctement. Si l’application ne s’exécute pas après avoir cliqué sur OK, remplacez la valeur de la clé LocalServer32 par le chemin d’accès correct. Utilisez un nom de chemin court si possible.

  • Testez l’endommagement possible du modèle Normal.dot ou du fichier de ressources Excel.xlb. Des problèmes peuvent survenir lorsque vous automatisez Microsoft Word ou Microsoft Excel si le modèle Normal.dot de Word ou le fichier de ressources Excel.xlb dans Excel est endommagé. Pour tester ces fichiers, recherchez toutes les instances de Normal.dot ou Excel.xlb sur les disques durs locaux.

    Remarque Vous pouvez trouver plusieurs copies de ces fichiers. Il existe une copie de chacun de ces fichiers pour chaque profil utilisateur installé sur le système.

    Renommez temporairement les fichiers Normal.dot ou Excel.xlb, puis relancez votre test d’automatisation. Word et Excel créent ces fichiers s’ils ne les trouvent pas. Vérifiez que le code fonctionne. Si le code fonctionne lors de la création d’un nouveau fichier Normal.dot, supprimez les fichiers que vous avez renommés. Ces fichiers sont endommagés. Si le code ne fonctionne pas, vous devez rétablir les noms d’origine de ces fichiers afin d’enregistrer les paramètres personnalisés enregistrés dans ces fichiers.

  • Exécutez l’application sous le compte Administrateur. Les serveurs Office nécessitent un accès en lecture/écriture au Registre et au lecteur de disque. Il se peut que les serveurs Office ne se chargent pas correctement si vos paramètres de sécurité actuels refusent l’accès en lecture/écriture.

Examen du système

La configuration système peut également poser des problèmes pour la création de serveurs COM out-of-process. Pour résoudre ce problème, utilisez les méthodes suivantes sur le système sur lequel l’erreur se produit :

  • Déterminez si le problème se produit avec un serveur hors processus. Si vous avez une application qui utilise un serveur COM particulier (tel que Word), testez un autre serveur hors processus pour vous assurer que le problème ne se produit pas dans la couche COM elle-même. Si vous ne pouvez pas créer de serveur COM out-of-process sur l’ordinateur, réinstallez les fichiers système OLE comme décrit dans la section « Réinstallation de Microsoft Office » de cet article ou réinstallez le système d’exploitation pour résoudre le problème.

  • Examinez les numéros de version des fichiers système OLE qui gèrent l’automatisation. Ces fichiers sont généralement installés sous forme d’ensemble. Ces fichiers doivent correspondre aux numéros de build. Un utilitaire d’installation mal configuré peut installer par erreur les fichiers séparément. Cela entraîne une incompatibilité des fichiers. Pour éviter les problèmes d’automatisation, examinez les fichiers pour vous assurer que les builds de fichiers correspondent.

    Les fichiers d’automatisation se trouvent dans le répertoire Windows\System32. Examinez les fichiers suivants.

    Nom de fichier Version Modifié le
    Asycfilt.dll 10.0.16299.15 29 septembre 2017
    Ole32.dll 10.0.16299.371 29 mars 2018
    Oleaut32.dll 10.0.16299.431 3 mai 2018
    Olepro32.dll 10.0.16299.15 29 septembre 2017
    Stdole2.tlb 3.0.5014 29 septembre 2017

    Pour examiner la version du fichier, cliquez avec le bouton droit sur le fichier dans l’Explorateur Windows, puis cliquez sur Propriétés. Notez les quatre derniers chiffres de la version de fichier (le numéro de build) et la date à laquelle le fichier a été modifié pour la dernière fois. Assurez-vous que ces valeurs sont identiques pour tous les fichiers d’automatisation.

    Remarque Les fichiers suivants sont pour Windows 10 version 1709, build 16299.431. Ces nombres et dates ne sont que des exemples. Vos valeurs peuvent être différentes.

  • Utilisez l’utilitaire de configuration système (Msconfig.exe) pour examiner les services et le démarrage du système à la recherche d’applications tierces susceptibles de restreindre l’exécution du code dans l’application Office

    Remarque Désactivez temporairement l’antivirus sur un système de test qui n’est pas connecté au réseau.

    Vous pouvez également suivre ces étapes dans Outlook pour désactiver les compléments tiers :

    Si cette méthode résout le problème, contactez le fournisseur dʼantivirus tiers pour plus dʼinformations sur une mise à jour de lʼantivirus.

    1. Dans le menu Fichier , cliquez sur Options, puis sur Compléments.

    2. Cliquez sur Gérer les compléments COM, puis sur OK.

      Remarque La boîte de dialogue Compléments COM s’ouvre.

    3. Désactivez la zone case activée pour tout complément tiers, puis cliquez sur OK.

    4. Redémarrez Outlook.

Réinstallez Office

Si aucune des procédures précédentes ne résout le problème, supprimez puis réinstallez Office.

Pour plus d’informations, consultez l’article Office suivant :

Télécharger et installer ou réinstaller Office 365 ou Office 2016 sur un PC ou Mac

Références

Pour plus d’informations sur la bureautique et les exemples de code, consultez le site web Microsoft à l’adresse suivante :

Prise en main du développement Office