Se connecter avec Microsoft
S'identifier ou créer un compte.
Bonjour,
Sélectionnez un autre compte.
Vous avez plusieurs comptes
Choisissez le compte avec lequel vous voulez vous connecter.

Symptômes

Lors de l’exécution de code qui utilise Automation pour contrôler Microsoft Excel, l’une des erreurs suivantes peut se produire :

Dans Microsoft Excel 97 et dans les versions ultérieures d’Excel, vous recevez l’un des messages d’erreur suivants :

Message d’erreur 1

Erreur d’exécution « 1004 » :
Échec de la méthode « <nom de la méthode> » de l’objet « _Global »

Message d’erreur 2

Erreur définie par l’application ou par l’objet

Dans Microsoft Excel 95, vous recevez l’un des messages d’erreur suivants :

Message d’erreur 1

Erreur d’exécution « -2147023174 »
Erreur OLE Automation

Message d’erreur 2

Erreur d’exécution « 462 » :
L’ordinateur serveur distant n’existe pas ou n’est pas disponible.

Cause

Visual Basic a établi une référence à Excel en raison d’une ligne de code qui appelle un objet, une méthode ou une propriété Excel sans qualifier l’élément avec une variable objet Excel. Visual Basic ne publie pas cette référence tant que vous n’avez pas terminé le programme. Cette référence errante interfère avec le code d’automatisation lorsque le code est exécuté plusieurs fois.

Résolution

Pour résoudre ce problème, modifiez le code afin que chaque appel à un objet, une méthode ou une propriété Excel soit qualifié avec la variable objet appropriée.

État

Ce comportement est inhérent au produit.

Informations supplémentaires

Pour automatiser Microsoft Excel, vous établissez une variable objet qui fait généralement référence à l’objet Application Excel ou à l’objet Classeur Excel. D’autres variables d’objet peuvent ensuite être définies pour faire référence à une feuille de calcul, à une plage ou à d’autres objets dans le modèle objet Microsoft Excel. Lorsque vous écrivez du code pour utiliser un objet, une méthode ou une propriété Excel, vous devez toujours faire précéder l’appel de la variable objet appropriée. Si ce n’est pas le cas, Visual Basic établit sa propre référence à Excel. Cette référence peut entraîner des problèmes lorsque vous essayez d’exécuter le code Automation plusieurs fois. Notez que même si la ligne de code commence par la variable objet, un appel peut être effectué à un objet, une méthode ou une propriété Excel au milieu de la ligne de code qui n’est pas précédée d’une variable objet.

Les étapes suivantes montrent comment reproduire ce problème et comment le corriger.

Étapes pour reproduire le comportement

  1. Démarrez un nouveau projet EXE Standard en Visual Basic. Form1 est créé par défaut.

  2. Dans le menu Projet, cliquez sur Références, puis case activée la bibliothèque d’objets pour la version d’Excel que vous envisagez d’automatiser.

  3. Placez un contrôle CommandButton sur Form1.

  4. Copiez l’exemple de code suivant dans la fenêtre Code de Form1.

          Option Explicit
    
          Private Sub Command1_Click()
             Dim xlApp As Excel.Application
             Dim xlBook As Excel.Workbook
             Dim xlSheet As Excel.Worksheet
             Set xlApp = CreateObject("Excel.Application")
             Set xlBook = xlApp.Workbooks.Add
             Set xlSheet = xlBook.Worksheets("Sheet1")
             xlSheet.Range(Cells(1, 1), Cells(10, 2)).Value = "Hello"
             xlBook.Saved = True
             Set xlSheet = Nothing
             Set xlBook = Nothing
             xlApp.Quit
             Set xlApp = Nothing
          End Sub
    
  5. Dans le menu Exécuter , cliquez sur Démarrer ou appuyez sur F5 pour démarrer le programme.

  6. Cliquez sur le contrôle CommandButton . Aucune erreur ne se produit. Toutefois, une référence à Excel a été créée et n’a pas été publiée.

  7. Cliquez à nouveau sur le contrôle CommandButton . Notez que vous recevez l’un des messages d’erreur abordés dans la section « Symptômes ».

    Remarque Le message d’erreur se produit, car le code fait référence à la méthode de la cellule sans avoir précédé l’appel avec le
    variable objet xlSheet.

  8. Arrêtez le projet et modifiez la ligne de code suivante :

    xlSheet.Range(Cells(1,1),Cells(10,2)).Value = "Hello"
    

    Modifiez la ligne de code pour qu’elle ressemble à la ligne de code suivante.

    xlSheet.Range(xlSheet.Cells(1,1),xlSheet.Cells(10,2)).Value = "Hello"
    
  9. Réexécutez le programme. Notez que vous pouvez exécuter le code plusieurs fois sans recevoir de message d’erreur.

Références

189618 Vous pouvez recevoir le message d’erreur « Erreur d’exécution « -2147023174 » (800706ba) » ou « Erreur d’exécution « 462 » lorsque vous exécutez du code Visual Basic qui utilise Automation pour contrôler Word
 

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.

Ces informations vous ont-elles été utiles ?

Dans quelle mesure êtes-vous satisfait(e) de la qualité de la langue ?
Qu’est-ce qui a affecté votre expérience ?
En cliquant sur Envoyer, vos commentaires seront utilisés pour améliorer les produits et services de Microsoft. Votre administrateur informatique sera en mesure de collecter ces données. Déclaration de confidentialité.

Nous vous remercions de vos commentaires.

×