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 :

[C#2005]Excel2003 copier plusieurs classeurs dans un seul


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    DBA - Développeur BI
    Inscrit en
    Avril 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : DBA - Développeur BI
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2003
    Messages : 442
    Par défaut [C#2005]Excel2003 copier plusieurs classeurs dans un seul
    Bonjour à tous

    J'ai une appli qui me génère des exports sous excel, mais il me le génère sous plusieurs feuilles excel et ce que je voudrai c'est mettre toutes ces feuilles dans un seul classeur. Alors sur le net j'ai trouvé un code qui fait sa et j'essai de le traduire en c# mais je n'y arrive pas. En fait ce qui me manque c'est la méthode copy car le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    xlBookDeCopie.Sheets(sNomFeuilleACopier).Copy(After:=xlBookDeDestination. _
     
    Sheets(xlBookDeDestination.Sheets.Count))
    qui est vb.net ne fonctinne pas en c#. Normalement dans la construction on doit spécifier (object before,object after) mais je n'arrive pas à l'implémenter en c#. J'ai essayé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlBookDeCopie.Sheets.Copy((oMissing, xlBookDeDestination.Sheets(xlBookDeDestination.Sheets.Count));
    mais j'ai l'erreur suivante:
    Microsoft.Office.Interop.Excel._Workbook.Sheets est une propriété mais utilisé comme un méthode
    Alors si quelqu'un sait le faire je suis preneur.

  2. #2
    Membre expérimenté
    Avatar de Dung-Tri
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 109
    Par défaut
    Sheets est une propriétés qui renvoi une collection et donc pas une méthode d'ou l'erreur. En C# tu accès a un élement d'une collection avec des crochets.

    Je pense que ca marchera mieux comme ca.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    xlBookDeCopie.Sheets.Copy((oMissing, xlBookDeDestination.Sheets[xlBookDeDestination.Sheets.Count]);


    Cdt.

  3. #3
    Membre éclairé
    Homme Profil pro
    DBA - Développeur BI
    Inscrit en
    Avril 2003
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : DBA - Développeur BI
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2003
    Messages : 442
    Par défaut
    Merci pour ta réponse c'est en effet ce qui me manquait mais entre-temps j'ai fait plusieurs test et j'en suis arrivé à sa voici le code complet pour copier une feuille excel dans un autre classeur:
    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
     
    //Appel d'excel
                Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
     
    //on crée un classeur
                Microsoft.Office.Interop.Excel._Workbook xlClasseur = xlApp.Workbooks.Add(XlWBATemplate.xlWBATWorksheet);
     
    //on donne le chemin d'accès des feuilles excel que l'on veut copier
    string monfichier = @"C:\BasesMdb\TempXls\report1.xls";
     
    //on ouvre ces classeurs (dans mon cas ils ne contiennent qu'une feuille)
    Microsoft.Office.Interop.Excel._Workbook xlClasseurTemp;
                xlClasseurTemp = xlApp.Workbooks.Open(monfichier, oMissing, oMissing, oMissing, oMissing,
                oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);
     
    //-- On déplace la 1ère sheet du fichier excel dans le nouveau fichier
                    ((Microsoft.Office.Interop.Excel.Worksheet)(xlApp.ActiveWorkbook.Sheets[1])).Copy(
                        Type.Missing, xlApp.Workbooks[1].Sheets[xlApp.Workbooks[1].Sheets.Count]);
    xlApp.Workbooks[1].Activate();
     
    //on efface les classeurs copié
    xlClasseurTemp.Close(false, oMissing,oMissing);
                    System.IO.File.Delete(monfichier);
    bon pour mon appli j'ai fait une boucle pour parcourir les fichiers mais sinon c'est sa. En espérant que sa pourra servir à d'autres

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

Discussions similaires

  1. [XL-2010] Copier plusieurs classeurs dans un seul fichier
    Par frutz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/03/2015, 17h12
  2. [Toutes versions] Macro regroupant plusieurs classeurs dans une seule feuille
    Par lisandjo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/04/2012, 07h52
  3. Copier plusieurs classeurs dans un seul.
    Par LeSmoox dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/03/2012, 20h15
  4. [XL-2003] Copier plusieurs feuilles dans une seule
    Par RussellD dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/09/2010, 15h20
  5. Copier plusieurs classeurs dans 1 seul
    Par iAlph dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/05/2008, 19h16

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