IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

L'Exception COMException n'a pas été gérée


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par défaut L'Exception COMException n'a pas été gérée
    Bonjour,
    Je dév actuellement une petite appli où je dois piloter Excel.
    Un point me pose de gros soucis.
    Je dois imprimer des étiquettes via la conjugaison de "Ctrl + E".
    Je remplis les champs du claseur Excel avec un dataGridView.
    Tout va bien si j'imprime une seule fois (même si il y a plusieurs étiquettes).
    Dès que je veux lancer plusieurs fois l'impression, j'ai une erreur :

    "L'Exception COMException n'a pas été gérée"

    "L'appel a été rejeté par l'appelé. (Exception de HRESULT : 0x80010001 (RPC_E_CALL_REJECTED))"

    Voici la boucle avec laquelle j'envoie les impressions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    //on imprime les étiquettes jusqu'à la fin de dataGridView1
                while (index < dataGridView1.RowCount - 1)
                {
                    //on limite longueur de chaîne recette
                    Char[] chaine = new Char[10];
                    chaine = dataGridView1.Rows[index].Cells[Recette.Name].Value.ToString().ToCharArray();
     
                    //on remplit les champs
                    xlAppETIQ.Cells[2, 1] = "UMO";
                    xlAppETIQ.Cells[2, 2] = chaine[0].ToString() + chaine[1].ToString() + chaine[2].ToString() + chaine[3].ToString();
                    xlAppETIQ.Cells[2, 3] = chaine[4].ToString();
                    xlAppETIQ.Cells[2, 4] = "GR" + dataGridView1.Rows[index].Cells[Groupe.Name].Value;
                    xlAppETIQ.Cells[2, 5] = "UMO";
                    xlAppETIQ.Cells[2, 6] = jour + "/" + mois + "/" + annee;
                    xlAppETIQ.Cells[2, 7] = dataGridView1.Rows[index].Cells[NbCont.Name].Value;
                    xlAppETIQ.Cells[2, 9] = dataGridView1.Rows[index].Cells[NbBU.Name].Value;
     
                    //on imprime (Ctrl + E)
                    SendKeys.Send ("^e");
     
                    //on passe à la ligne suivante du dataGridView
                    index++;
     
                }
    Merci de m'aider.

    Edit (précisions) :
    * Si mon dataGridView ne contient qu'une seule ligne, tout se passe bien car il n'y a qu'une édition à envoyer.
    * A partir de 2 cela ne va plus.
    * A chaque fois je dois remplir les mêmes champs dans l'appli Excel. C'est pour cela que les cellules ne changent pas.

  2. #2
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par défaut
    Voici le message d'erreur si je lance l'appli directement à partir de l'exe.
    Consultez la fin de ce message pour plus de détails sur l'appel du débogage
    juste-à-temps (JIT) à la place de cette boîte de dialogue.

    ************** Texte de l'exception **************
    System.Runtime.InteropServices.COMException (0x80010001): L'appel a été rejeté par l'appelé. (Exception de HRESULT : 0x80010001 (RPC_E_CALL_REJECTED))
    à System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
    à Excel.Range.set__Default(Object RowIndex, Object ColumnIndex, Object )
    à Programme_MAC_BU.Form1.buttonEtq_Click(Object sender, EventArgs e) dans C:\Documents and Settings\Jérôme BLATNIK\Mes documents\Visual Studio 2005\Projects\Programme_MAC_BU\Programme_MAC_BU\Form1.cs:ligne 356
    à System.Windows.Forms.Control.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnClick(EventArgs e)
    à System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    à System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    à System.Windows.Forms.Control.WndProc(Message& m)
    à System.Windows.Forms.ButtonBase.WndProc(Message& m)
    à System.Windows.Forms.Button.WndProc(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    à System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    à System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


    ************** Assemblys chargés **************
    mscorlib
    Version de l'assembly*: 2.0.0.0
    Version Win32*: 2.0.50727.42 (RTM.050727-4200)
    CodeBase*: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------
    Programme_MAC_BU
    Version de l'assembly*: 1.0.0.0
    Version Win32*: 1.0.0.0
    CodeBase*: file:///C:/Documents%20and%20Settings/J%E9r%F4me%20BLATNIK/Mes%20documents/Visual%20Studio%202005/Projects/Programme_MAC_BU/Programme_MAC_BU/bin/Debug/Programme_MAC_BU.exe
    ----------------------------------------
    System.Windows.Forms
    Version de l'assembly*: 2.0.0.0
    Version Win32*: 2.0.50727.42 (RTM.050727-4200)
    CodeBase*: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
    ----------------------------------------
    System
    Version de l'assembly*: 2.0.0.0
    Version Win32*: 2.0.50727.42 (RTM.050727-4200)
    CodeBase*: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
    ----------------------------------------
    System.Drawing
    Version de l'assembly*: 2.0.0.0
    Version Win32*: 2.0.50727.42 (RTM.050727-4200)
    CodeBase*: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
    ----------------------------------------
    System.Configuration
    Version de l'assembly*: 2.0.0.0
    Version Win32*: 2.0.50727.42 (RTM.050727-4200)
    CodeBase*: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
    ----------------------------------------
    System.Xml
    Version de l'assembly*: 2.0.0.0
    Version Win32*: 2.0.50727.42 (RTM.050727-4200)
    CodeBase*: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
    ----------------------------------------
    System.Windows.Forms.resources
    Version de l'assembly*: 2.0.0.0
    Version Win32*: 2.0.50727.42 (RTM.050727-4200)
    CodeBase*: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms.resources/2.0.0.0_fr_b77a5c561934e089/System.Windows.Forms.resources.dll
    ----------------------------------------
    Interop.Excel
    Version de l'assembly*: 1.4.0.0
    Version Win32*: 1.4.0.0
    CodeBase*: file:///C:/Documents%20and%20Settings/J%E9r%F4me%20BLATNIK/Mes%20documents/Visual%20Studio%202005/Projects/Programme_MAC_BU/Programme_MAC_BU/bin/Debug/Interop.Excel.DLL
    ----------------------------------------
    mscorlib.resources
    Version de l'assembly*: 2.0.0.0
    Version Win32*: 2.0.50727.42 (RTM.050727-4200)
    CodeBase*: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
    ----------------------------------------

    ************** Débogage JIT **************
    Pour activer le débogage juste-à-temps (JIT), le fichier de configuration pour cette
    application ou cet ordinateur (machine.config) doit avoir la valeur
    jitDebugging définie dans la section system.windows.forms.
    L'application doit également être compilée avec le débogage
    activé.

    Par exemple*:

    <configuration>
    <system.windows.forms jitDebugging="true" />
    </configuration>

    Lorsque le débogage juste-à-temps est activé, les exceptions non gérées
    seront envoyées au débogueur JIT inscrit sur l'ordinateur
    plutôt que d'être gérées par cette boîte de dialogue.


    Serait-ce un problème de thread ?
    J'aimerais attendre la fin du processus de l'édition de la première série d'étiquettes pour lancer la seconde.
    Thread.Sleep(x) ne donne rien.

  3. #3
    Membre confirmé
    Inscrit en
    Mars 2007
    Messages
    224
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par défaut
    Finallement j'ai solutionné mon problème.
    Il me suffisait d'inclure la boucle while (celle qui sert à imprimer mes étiquettes) dans un try et de mettre
    Thread.Sleep() dans le catch.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. L'exception COMException n'a pas été gérée
    Par zone45 dans le forum Word
    Réponses: 1
    Dernier message: 13/07/2014, 16h07
  2. Réponses: 2
    Dernier message: 04/04/2012, 19h13
  3. Réponses: 2
    Dernier message: 08/03/2008, 09h54
  4. L'exception COMException n'a pas été gérée
    Par loverdev dans le forum VB.NET
    Réponses: 5
    Dernier message: 04/01/2008, 12h25
  5. L'exception OleDBException n'a pas été gérée
    Par neo62matrix dans le forum VB.NET
    Réponses: 2
    Dernier message: 10/05/2007, 11h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo