Une erreur d'exécution 429 se produit lorsque vous automatisez des applications Office

Traductions disponibles Traductions disponibles
Numéro d'article: 828550 - Voir les produits auxquels s'applique cet article
Pour vous procurer une version Microsoft Office XP, Office 2000 et Office 97 de cet article, reportez-vous à l'article 244264.
Agrandir tout | Réduire tout

Sommaire

Résumé

Lorsque vous utilisez l'opérateur New 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 :
Erreur d'exécution 429 : Le composant ActiveX ne peut pas créer l'objet
Cette erreur se produit lorsque le modèle COM (Component Object Model) ne peut pas créer l'objet Automation requis et que l'objet Automation est par conséquent indisponible pour Visual Basic. Cette erreur ne se produit pas sur tous les ordinateurs.

Cet article décrit la procédure à suivre pour diagnostiquer et résoudre les problèmes courants qui peuvent provoquer cette erreur.

Plus d'informations

Dans Visual Basic, l'erreur 429 a plusieurs causes possibles. Elle se produit si l'une des conditions suivantes est remplie :
  • L'application présente une erreur.
  • La configuration du système présente une erreur.
  • Un composant est manquant.
  • Un composant est endommagé.
Pour rechercher l'origine de l'erreur, isolez le problème. Si l'erreur 429 s'affiche sur un ordinateur client, utilisez les informations suivantes pour l'isoler et la résoudre dans les applications Microsoft Office.

Remarque Certaines des informations suivantes peuvent également s'appliquer aux serveurs COM non-Office. Toutefois, cet article suppose que vous souhaitez automatiser les applications Office.

Vérification du code

Avant de résoudre l'erreur, essayez d'isoler une seule ligne de code qui peut provoquer le problème.

Si vous découvrez qu'une seule ligne de code peut être à l'origine du problème, appliquez les procédures suivantes :
  • Assurez-vous que le code utilise la création d'objet explicite.

    Les problèmes sont plus faciles à identifier s'ils sont limités à une seule action. Par exemple, recherchez l'utilisation de la création d'objet implicite comme :

    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 font appel à la création d'objet implicite. Microsoft Office Word 2003 ne démarre pas tant que la variable n'est pas appelée au moins une fois. Comme la variable peut être appelée dans les différentes parties du programme, le problème peut être difficile à localiser. Il peut être difficile de vérifier que le problème est causé lors de la création de l'objet Application ou Document.

    Au lieu de cela, vous pouvez faire 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 faites des appels explicites pour créer chaque objet séparément, le problème est plus facile à isoler et le code peut également être plus facile à lire.
  • Utilisez la fonction CreateObject au lieu d'utiliser l'opérateur New lorsque vous créez l'instance d'une application Office.

    La fonction CreateObject mappe le processus de création que la plupart des clients Microsoft Visual C++ utilisent. La fonction CreateObject permet également d'apporter des modifications dans le CLSID du serveur entre les versions. Vous pouvez utiliser la fonction CreateObject avec des objets à liaison précoce et à liaison tardive.
  • Vérifiez que la chaîne « ProgID » (identificateur de programme) qui est passée à 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 posséder une version plus ancienne ou plus récente de Microsoft Office que la version que vous avez spécifiée dans la chaîne « ProgID ».
  • Utilisez la commande Erl pour signaler le numéro de ligne 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 l'objet Automation qui 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 MsgBox 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 les paramètres de leurs interfaces personnalisées soient convertis dans les limites du processus. Si les paramètres de leurs interfaces personnalisées ne peuvent pas être convertis au cours de CreateObject ou de New, l'erreur 429 s'affiche. Un objet à liaison tardive utilise une interface définie par le système (IDispatch) ne nécessitant pas de serveur proxy personnalisé pour une conversion de paramètres. Utilisez un objet à liaison tardive pour vérifier si cette procédure fonctionne correctement.

    Si le problème se produit uniquement lorsque l'objet est à liaison anticipée, c'est qu'il se situe dans l'application serveur. En général, vous pouvez réinstaller l'application tel que décrit dans la section « Vérification du serveur Automation » de cet article pour résoudre le problème.

Vérification du serveur Automation

La raison la plus courante d'erreur liée à CreateObject ou New est un problème avec l'application de serveur. En général, la configuration de l'application ou l'installation de l'application provoque le problème. Pour résoudre ce problème, appliquez les procédures suivantes :
  • Vérifiez que l'application Office que vous souhaitez automatiser est installée sur l'ordinateur local. Assurez-vous que vous exécutez l'application. Pour cela, cliquez sur Démarrer, sur Exécuter, puis essayez d'exécuter l'application. Si vous ne pouvez par exécuter manuellement l'application, elle ne fonctionnera pas dans le cadre d'Automation.
  • Réenregistrez l'application comme suit :
    1. Cliquez sur Démarrer, puis 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 silencieusement. L'application est réenregistrée en tant que serveur COM.
    Si le problème se produit car une clé de Registre est manquante, ces étapes résolvent en général le problème.
  • Vérifiez la clé LocalServer32 sous l'identificateur CLSID de l'application que vous souhaitez automatiser. Assurez-vous que la clé LocalServer32 pointe à l'emplacement correct de l'application. Assurez-vous que led'accès (DOS 8.3) court. Vous ne devez pas enregistrer un serveur à l'aide d'un nom de chemin d'accès court. Toutefois, les noms de chemin d'accès longs qui comprennent des espaces incorporés peuvent provoquer des problèmes sur certains systèmes.

    Pour vérifier la clé de chemin d'accès qui est enregistrée pour le serveur, démarrez l'Éditeur de Registre Windows comme suit :
    1. Cliquez sur Démarrer, puis sur Exécuter.
    2. Tapez regedit, puis cliquez sur OK.
    3. Cherchez la clé HKEY_CLASSES_ROOT\CLSID.

      Les CLSID des serveurs Automation enregistrés sur le système se trouvent sous cette clé.
    4. Utilisez les valeurs suivantes de la clé de CLSID pour rechercher la clé qui représente l'application Office que vous souhaitez automatiser. Vérifiez la clé LocalServer32 de la clé de CLSID du chemin d'accès.
      Réduire ce tableauAgrandir ce tableau
      Serveur OfficeClé de CLSID
      Access.Application{73A4C9C1-D68D-11D0-98BF-00A0C90DC8D9}
      Excel.Application{00024500-0000-0000-C000-000000000046}
      FrontPage.Application {04DF1015-7007-11D1-83BC-006097ABE675}
      Outlook.Application{0006F03A-0000-0000-C000-000000000046}
      PowerPoint.Application{91493441-5A91-11CF-8700-00AA0060263B}
      Word.Application{000209FF-0000-0000-C000-000000000046}
    5. Assurez-vous que le chemin d'accès correspond à l'emplacement réel du fichier.
    Remarque Les noms de chemin d'accès courts peuvent sembler corrects lorsqu'ils ne le sont pas. Par exemple, Microsoft Office et Microsoft Internet Explorer (s'ils sont installés dans leurs emplacements par défaut) possèdent un chemin d'accès court du type C:\PROGRA~1\MICROS~X\ (où X est un chiffre). Ce nom peut ne pas sembler être initialement 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 sur Exécuter.
    2. Copiez la valeur à partir 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 une fois que vous avez cliqué sur OK, c'est que le serveur est correctement enregistré. Si l'application ne s'exécute pas une fois que vous avez cliqué sur OK, remplacez la valeur de la clé LocalServer32 par le chemin d'accès correct. Utilisez un nom de chemin d'accès court si vous le pouvez.
  • Testez la présence éventuelle d'une corruption possible du modèle Normal.dot ou du fichier de ressources Excel.xlb. Des problèmes peuvent se produire lorsque vous automatisez Microsoft Word ou Microsoft Excel si le modèle Normal.dot dans Word ou le fichier de ressources Excel.xlb dans Excel est endommagé. Pour tester ces fichiers, recherchez les disques durs locaux de toutes les instances de Normal.dot ou d'Excel.xlb.

    Remarque Pour les systèmes qui exécutent Microsoft Windows 2000 ou Microsoft Windows XP, vous pouvez rechercher plusieurs exemplaires de ces fichiers. Il existe un exemplaire de chacun de ces fichiers pour chaque profil utilisateur qui est installé sur le système.

    Renommez temporairement les fichiers Normal.dot ou Excel.xlb, puis réexécutez votre test Automation. Word et Excel créent ces fichiers s'ils ne peuvent pas les trouver. Vérifiez que le code fonctionne. Si le code fonctionne lorsqu'un nouveau fichier Normal.dot est créé, supprimez les fichiers que vous avez renommés. Ces fichiers sont endommagés. Si le code ne fonctionne pas, vous devez redonner à ces fichiers leurs noms d'origine pour enregistrer tous les paramètres personnalisés qui sont enregistrés dans ces fichiers.
  • Si votre système fonctionne sous Windows 2000, exécutez l'application sous le compte d'administrateur. Les serveurs Office nécessitent l'accès en lecture/écriture au Registre et au lecteur de disque. Ils peuvent ne pas se charger correctement si vos paramètres de sécurité actuels refusent l'accès en lecture/écriture.

Vérification du système

La configuration du système peut également provoquer des problèmes lors de la création de serveurs COM out-of-process. Pour résoudre ce problème, appliquez les procédures suivantes sur le système où l'erreur se produit :
  • Déterminez si le problème se produit avec tous les serveurs out-of-process. Si vous disposez d'une application qui utilise uniquement un serveur COM particulier (par exemple, Word), vous pouvez effectuer des tests sur un serveur out-of-process différent afin de vous assurer que le problème n'est pas lié à 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 tel que 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.
  • Vérifiez les numéros de version des fichiers système OLE qui gèrent Automation. Ces fichiers sont en général installés comme un jeu. Ils doivent correspondre aux numéros de version. Un utilitaire d'installation mal configuré peut installer par erreur les fichiers séparément. Cela provoque l'échec de correspondance des fichiers. Pour éviter des problèmes avec Automation, vérifiez les fichiers pour vous assurer qu'ils correspondent bien aux versions.

    Les fichiers Automation se trouvent dans le répertoire Windows\System32 ou Winnt\System32. Vérifiez les fichiers suivants.
    Réduire ce tableauAgrandir ce tableau
    Nom de fichierVersionDate de modification
    Asycfilt.dll3.50.50144 septembre 2002
    Oleaut32.dll3.50.50164 septembre 2002
    Olepro32.dll5.0.50144 septembre 2002
    Stdole32.tlb3.0.50144 septembre 2002
    Dans l'Explorateur Windows, cliquez avec le bouton droit sur le fichier dans Windows Explorer, puis cliquez sur Propriétés pour vérifier la version de fichier. Notez les quatre derniers chiffres de la version du fichier (le numéro de build) et la date de sa dernière modification. Assurez-vous que ces valeurs sont les mêmes pour tous les fichiers Automation.

    Remarque Les dates et les numéros de version indiqués précédemment proviennent d'un ordinateur Windows Server 2003 sur lequel Office 2003 est installé. Ces numéros et dates sont uniquement utilisés à titre d'exemples. Vos valeurs peuvent être différentes.

    Si les fichiers ne correspondent pas aux numéros de build ou aux dates de modification, téléchargez un utilitaire auto-extractible qui met à jour vos fichiers Automation.

    Pour plus d'informations sur la façon d'accéder aux fichiers d'exécution, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    235420 VBRun60sp4.exe installe les fichiers d'exécution de Visual Basic 6.0 SP4
  • Utilisez l'utilitaire de configuration du système (Msconfig.exe) pour vérifier le démarrage des services et du système des applications tierces qui peuvent limiter l'exécution du code dans l'application Office. Pour plus d'informations sur Msconfig.exe, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
    310560 Comment faire pour résoudre des problèmes à l'aide de l'utilitaire de configuration système dans Windows XP
    Par exemple, les applications Automation d'Outlook peuvent échouer car vous exécutez un antivirus qui dispose des fonctionnalités de « blocage du script ».

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

    Ou appliquez les étapes suivantes dans Outlook pour désactiver des compléments tiers :
    1. Dans le menu Outils, cliquez sur Options.
    2. Sous l'onglet Autre, cliquez sur Options avancées.
    3. Dans la boîte de dialogue Options avancées, cliquez sur Gestionnaire de compléments.
    4. Désactivez la case à cocher de tous les compléments tiers.
    5. Redémarrez Outlook.
    Si cette méthode résout le problème, contactez le fournisseur d'antivirus tiers pour obtenir plus d'informations sur une mise à jour de l'antivirus.

Réinstallation de Microsoft Office

Si aucune des procédures précédentes ne résout le problème, supprimez Office, puis réinstallez-le. Microsoft vous conseille de supprimer d'abord la version existante, puis de réinstaller Office à l'aide des disques d'installation d'origine.

Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
219423 Comment faire pour supprimer entièrement Microsoft Office CD1
158658 Comment faire pour supprimer complètement Microsoft Office 97

Références

Pour plus d'informations sur le dépannage du message d'erreur 429, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
240377 Comment garantir que Jet 3.5 est installé correctement (première partie)
Pour plus d'informations sur Automation d'Office, reportez-vous au site Web de Microsoft à l'adresse suivante (en anglais) :
http://support.microsoft.com/ofd

Propriétés

Numéro d'article: 828550 - Dernière mise à jour: mardi 22 mai 2007 - Version: 5.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Office SharePoint Designer 2007
  • Microsoft Office FrontPage 2003
  • Microsoft Office Outlook 2007
  • Microsoft Office Outlook 2003
  • Microsoft Office PowerPoint 2007
  • Microsoft Office PowerPoint 2003
  • Microsoft Office Word 2007
  • Microsoft Office Word 2003
  • Microsoft Office Access 2007
  • Microsoft Office Access 2003
  • Microsoft Visual Basic Enterprise Edition for Windows 6.0
  • Microsoft Visual Basic 5.0 Édition Entreprise
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Visual Basic 5.0 Édition professionnelle
Mots-clés : 
kbexpertisebeginner kbtshoot kbprogramming kberrmsg kbautomation kbinfo KB828550
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com