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

C# Discussion :

C#- Excel - set_Value Exception


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 9
    Par défaut C#- Excel - set_Value Exception
    Bonjour à tous, je rencontre de gros probleme en voulant manipuler excel via C#.


    Je m'explique, je crée de nouvelle fonctions utlisateur dans Excel, ces fontions sont définit en C#.

    Le code que j'utilise:



    [ClassInterface(ClassInterfaceType.AutoDual), ComVisible(true)]
    public class MyFunctions
    {

    private Excel.Application _excel;

    public MyFunctions()
    {
    // Get a reference to the current Excel !
    _excel = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application") as Excel.Application;
    }


    public string toto()
    {
    try
    {
    _excel.ScreenUpdating = false;
    _excel.Cells[2, 5] = "Rah !!!";
    }
    catch (Exception e)
    {
    MessageBox.Show(e.ToString());
    }
    finally
    {
    _excel.ScreenUpdating = true;
    }
    return "";
    }

    ...
    ...
    }


    Une fois compiler je l'enregistre dans le service Automation via Excel. Une fois enregistré je peux donc appeler ma fonction toto-> (=toto())

    Cependant, arrivé au niveau de " _excel.Cells[2, 5] = "Rah !!!"; " il sort une exception HResult ....

    Quelqu'un a une idée ?

    Joel

  2. #2
    Membre Expert
    Avatar de Aramis
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Juin 2002
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 493
    Par défaut
    Bonjour,

    votre objet _excel fait reference a l'application Excel elle-meme. Or la propriete Cells n'est presente que dans l'objet _WorkSheet. Il vous faut donc activer la page dans laquelle vous voulez ecrire avant d'envoyer des donner dans une cellule bien precise, comme montrer dans l'article suivant : [ lien ] .

    Cordialement,

    Ar@mi$

    PS:

  3. #3
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 9
    Par défaut
    L'exemple que tu proposes n'est pas la même chose. Dans l'article il propose de créer une application puis d'appeler des méthodes en fonction d'evenement (mais pas de fonction utilisateur via excel) de modifier le contenu de la Sheet.

    J'ai deja fait des fonctions qui active la bonne sheet etc ... mais rien a faire j'ai toujours une exception en définissant la valeur d'une cellule.

    Quelqu'un a t-il deja réalisé des fonctions utilisateur ( =toto()) dans excel qui affiche par exemple le contenu d'une matrice ?

    Merci

  4. #4
    Membre Expert
    Avatar de Aramis
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Juin 2002
    Messages
    1 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Consultant en sécurité

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 493
    Par défaut
    Re,

    je viens de verifier la KB 302084 et je ne vois d'evenements nulle part. Enfin, toujours est il que la n'est pas le probleme. A mon avis, le probleme reside dans le fait que vous essayer de faire appel a la propriete Cells a partir d'un objet application; vous aurez surement plus de chance d'arriver a vos fins si vous obtenez d'abord le bon objet et faites ensuite appel a la propriete. La raison pour laquelle j'ai reference l'exemple de la KB 32084 c'est que celui-ci montre toutes les etapes necessaire pour acceder en ecriture aux cellules d'une WorkSheet.

    Malheureusement, je ne peux pas contribuer plus que ca au sujet car il semblerai que vous utilisez Excel/C# differement. Ca fait un moment que je travaille avec ces outils et je ne suis jamais tombe sur une application/bout de code qui ne creait/n'ouvrai pas Excel, meme ponctuellement pour faire des operations (lecture/ecrire) dans un document Excel.

    Bon courrage en tous cas,

    A.

  5. #5
    Membre habitué
    Inscrit en
    Janvier 2006
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 9
    Par défaut
    J'ai effectuer se teste la :

    public String foo()
    {
    MessageBox.Show("foo(): entering.");
    // xlApp is already saved in a private attribute from within the OnConnection method.

    MessageBox.Show("Application object: " + xlApp);

    MessageBox.Show("Excel Version = " + xlApp.Version);

    Excel.Workbook wb = xlApp.Workbooks.Add(System.Type.Missing);

    MessageBox.Show("Workbooks.Count = " + xlApp.Workbooks.Count.ToString());

    Excel.Worksheet ws = (Excel.Worksheet)wb.Worksheets[1];
    MessageBox.Show("Worksheet.Name = " + ws.Name);

    Excel.Range rng = (Excel.Range)ws.Cells;

    int cc = 10; //ws.UsedRange.Columns.Count;

    for (int c = 1; c <= cc; c++)

    {
    rng.set_Item(10, c, "test");
    }

    MessageBox.Show("Range.Value's have been set.");
    MessageBox.Show("foo(): exiting.");


    return ("success");
    }



    Cette fonction emet une exception lorsque la méthode set_Item est appelé. Il m'est donc impossible en passant par des fonctions utilisateurs (Automation) de modifier le contenu d'autre cellule. Et ce que quelqu'un à deja effectué un truc de ce type ? -> modifier plusieurs cellule via l'utilisation d'une fonction utilisateur ?

Discussions similaires

  1. [Débutant] Page Layout Excel + Erreur exception
    Par perlerinette dans le forum C#
    Réponses: 0
    Dernier message: 04/05/2012, 21h11
  2. [COM] Uncaught exception 'com_exception'
    Par cecile84 dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 18/10/2007, 16h52
  3. levée d'exception sur ouverture fichier excel
    Par LeXo dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 11/10/2006, 14h30
  4. Réponses: 1
    Dernier message: 29/04/2006, 18h24

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