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 :

Excel via C#


Sujet :

Windows Forms

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Formation en Développement Logiciel
    Inscrit en
    Juillet 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Formation en Développement Logiciel

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Excel via C#
    Bonjour à tous ^^

    Voilà je suis habitué a ne pas venir ennuyer les personnes pour un petit souci comme ça mais ça fait 3 jours que je suis dessus sans résultat.

    J'essaye de remplir un fichier Excel via une winForm avec des textBox et comboBox.
    Vous allez me dire c'est pas bien compliqué !
    Mais je n'arrive pas à faire en sorte d'ouvrir une seule fois le fichier Excel pour enregistrer plusieurs fois à l’intérieur de celui-ci et qu'il test si la valeur de la ComboBox n'est pas déjà en colonne B.

    Ce qui est en rouge, dans le code, me renvoi une erreur HRESULT 8x00...

    Pour vous aider voici le morceaux de code que j'essaye de faire fonctionner :
    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
    25
    26
    27
    28
    29
    //initialisation fichier
                 string NomFichier = "C:\\...";
                _Application excelApp = new ApplicationClass();
                _Workbook classeur = excelApp.Workbooks.Open(NomFichier, Type.Missing, Type.Missing, Type.Missing,
                                                                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                    Type.Missing, Type.Missing, Type.Missing, Type.Missing,
                                                                    Type.Missing, Type.Missing, Type.Missing); 
                _Worksheet feuille = new Worksheet();
    
                feuille = (_Worksheet)classeur.ActiveSheet;
    
                if (File.Exists(NomFichier))
                {
    // check le nombre de ligne / Colonne
    
                    int nbreCol = feuille.Columns.Count;
                    int nbreLig = feuille.Rows.Count;
    
                    string Pain = Convert.ToString(cbPains.SelectedItem);
                    
                    for (int i = 1; i < 2; i++)
                    {
                        if (feuille.Cells[1, 1].ToString() == Pain)
                        {
                            MessageBox.Show("OK");
                        }
                    }
                }
    Merci d'avance pour votre aide

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 166
    Points
    10 166
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je ne suis pas, mais pas du tout, un expert en C#; mais, dans Excel, pour encadrer des indices ou des adresses, on utilise habituellement les parenthèses et non les cochets.

    Tu pourrais aussi essayer en indiquant explicitement la propriété value dans ta ligne. Dans VBA, on peut l'éviter, mais je suis moins certain que cela soit possible de l'éviter dans le cas d'un pilotage par automation.

    Donc, je présume que tu pourrais essayer cela comme "nouvelle" ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (feuille.Cells(1, 1).value.ToString() == Pain)
    Et puis peut-être aussi, parce l'objet Range d'Excel supporte aussi la propriété text :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (feuille.Cells(1, 1).text== Pain)
    Et oui, en "Excel" la propriété cells() d'un objet Range est aussi un objet Range.

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    Formation en Développement Logiciel
    Inscrit en
    Juillet 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Formation en Développement Logiciel

    Informations forums :
    Inscription : Juillet 2015
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Si j'utilise les parenthèse au lieu des crochet. "Cells" est souligné en erreur avec celle-ci : "Non-invocable member 'Microsoft.Office.Interop.Excel._Worksheet.Cells' cannot be used like a method."

  4. #4
    Membre expérimenté
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2005
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2005
    Messages : 562
    Points : 1 511
    Points
    1 511
    Par défaut
    Bonjour,

    A tu essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(feuille.Cells[l,c].value.ToString() == Pain)
    Bon code.

  5. #5
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Points : 493
    Points
    493
    Par défaut
    Bonjour,
    Citation Envoyé par clementmarcotte Voir le message
    .. dans Excel, pour encadrer des indices ou des adresses, on utilise habituellement les parenthèses et non les cochets.
    Sauf que Cells est une propriété, pas une méthode; donc un appel avec des parenthèses n'a aucun sens ici. (et Excel n'a rien à voir là dedans : c'est une question purement C# - la réponse est differente en VBA/VB.Net bien sur, car pour ces langages les paramètres sont utilisés à la fois pour les indices de tableaux et pour les paramètres).

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Août 2014
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 218
    Points : 493
    Points
    493
    Par défaut
    Citation Envoyé par katarinaS Voir le message
    Ce qui est en rouge, dans le code, me renvoi une erreur HRESULT 8x00...
    C'est la suite du HRESULT qu'il faudrait connaitre ici.

Discussions similaires

  1. Automation excel via Access -
    Par Celia1303 dans le forum Access
    Réponses: 4
    Dernier message: 18/11/2005, 12h45
  2. [VB.NET] problème d'utilisation de substotal (excel via VB)
    Par Pynuch dans le forum Windows Forms
    Réponses: 4
    Dernier message: 17/11/2005, 13h53
  3. [débutant] manipulation de doc Excel via C++
    Par htcrusoe dans le forum C++
    Réponses: 4
    Dernier message: 17/03/2005, 19h57
  4. Connection avec MS Query (Excel) via ODBC MySQL
    Par javigle dans le forum Installation
    Réponses: 7
    Dernier message: 23/11/2003, 21h03
  5. [Kylix] Excel via kylix
    Par Billy joel dans le forum EDI
    Réponses: 1
    Dernier message: 23/05/2002, 11h57

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