BOGUE : Défaillance d'Excel 2002 lors du chargement d'une macro complémentaire d'automation

Traductions disponibles Traductions disponibles
Numéro d'article: 284876 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque Excel 2002 charge une macro complémentaire d'automation en mode modification de cellule, Excel se bloque. Ce problème se produit uniquement avec les macros complémentaires d'automation chargées à la demande dans Excel.

Cause

Ce problème peut se produire lors du chargement d'une macro complémentaire si celle-ci affiche un formulaire ou une boîte de dialogue ou si elle effectue une demande d'automation à Excel en vue de modifier l'état d'Excel. La liste suivante contient des exemples de demandes d'automation pouvant provoquer le blocage d'Excel lorsqu'il est appelé durant le chargement d'une macro complémentaire d'automation alors qu'il est en mode modification de cellule :
  • Modification de la sélection active par programme. Par exemple :
    Application.ActiveSheet.Range("A1").Select
    					
  • Appel d'une propriété ou d'une méthode d'un élément dans la collection Windows. Par exemple :
    Application.ActiveWindow.Zoom = 200
    					
  • Modification d'un paramètre d'Excel, tel que le mode de calcul. Par exemple :
    Application.CalculationMode = xlManual
    					
Tous ces exemples de code tentent de modifier l'environnement d'Excel, un classeur ou une feuille de calcul ; ces types d'actions ne sont pas autorisés lorsque vous êtes en mode modification.

Résolution

N'essayez pas d'effectuer les actions ci-dessus lors du chargement de votre macro complémentaire. Parmi les méthodes de la macro complémentaire appelées durant le chargement, citons la méthode Initialize et, si votre macro complémentaire d'automation implémente l'interface IDTExtensibility2, les méthodes OnConnection et OnStartupComplete.

Statut

Microsoft a confirmé l'existence de ce bogue dans les produits Microsoft répertoriés dans la section "Liste des produits concernés par cet article".

Plus d'informations

Procédure pour reproduire le problème

  1. Démarrez un nouveau projet DLL ActiveX dans Visual Basic.
  2. Dans le menu Projet, cliquez sur Propriétés Projet1. Modifiez le Nom du projet en TestComp, puis cliquez sur OK.
  3. Ajoutez le code suivant au module de code pour Classe1 :
    Private Sub Class_Initialize()
        MsgBox "Class_Initialize"
    End Sub
    					
  4. Générez TestComp.dll.
  5. Dans Excel 2002, démarrez un nouveau classeur.
  6. Dans le menu Outils, cliquez sur Compléments, puis sur Automatisation. Dans la liste, cliquez sur TestComp.Classe1, puis sur OK. Dans la boîte de dialogue Compléments, cliquez sur OK.
  7. Tapez =a dans une cellule quelconque. Une boîte de message contenant "Class_Initialize" s'affiche.
  8. Cliquez sur OK pour faire disparaître la boîte de message. Après quelques secondes, Excel se bloque.

Références

Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
291392 INFO : Macros complémentaires COM et macros complémentaires d'automation pour Excel

Propriétés

Numéro d'article: 284876 - Dernière mise à jour: mercredi 22 octobre 2003 - Version: 1.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Excel 2002
Mots-clés : 
kbbug kbautomation kbpending KB284876
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