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++Builder Discussion :

probleme avec excel


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 20
    Points
    20
    Par défaut probleme avec excel
    Bonjour,
    Je souhaite ouvrire le logiciel Excel afin d'écrire dans une cellule.
    Le probleme est que lorsque je lance le programme(appuye sur le button2),excel s'ouvre et se referme automatiquement.(Bref apparition en bas de la fenêtre).Ensuite si j'appuye sur les autres boutons une erreur arrive:
    "_ASSERTE: IsBound() @ c:\bcb\emuvcl\utilcls.h/4249 Press [Y]es to termine [N]o to continue [C]ancel to debug".

    Voici mon programme:


    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    #include <vcl.h>
    #pragma hdrstop
     
    #include "Unit1.h"
    #include <utilcls.h>
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma link "PERFGRAP"
    #pragma link "Excel_2K_SRVR"
    #pragma resource "*.dfm"
    TForm1 *Form1;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
     
    //-------------------------------------------------------------------------
     
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    Variant vMSExcel;
    ExcelApplication1->Connect();
     
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
     
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    Variant vMSExcel;
    vMSExcel.OleFunction("Quit");
    vMSExcel = Unassigned;
     
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    Variant vFileName,vXLWorkbook;
     
    vFileName = "c:\\test.xls";
    vXLWorkbook.OleProcedure("Saveas", vFileName);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button6Click(TObject *Sender)
    {
    Variant vValue, vRange, vCell,vWorksheet;
     
    vRange = "D3";
    vCell = vWorksheet.OlePropertyGet("Range", vRange);
    vValue = "valeur de la cellule";
    vCell.OlePropertySet("test", vValue);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button5Click(TObject *Sender)
    {
    Variant vWorksheet, vSheetName,vXLWorkbook;
     
    vSheetName = "Feuil2";
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",vSheetName);
    }
    Je ne voit pas ou peut venir l'erreur !!!?
    Merci

  2. #2
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Je ne sais pas si cela peut venir de cela mais Ton variant vMSExcel dans ton Bouton2, tu le déclare dans la fonction de ton bouton donc dès que la fonction se termine, il n'a plus d'existance.

    As-tu essayé de le déclarer en global dans ta form.

  3. #3
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut jojolastar27
    C'est pire que ce que kurul1 avait detecte, deja tu utilise un composant avec OleExcel, tu declare toutes tes variable en prive, tu ne fini aucun de tes morceaux de code.
    OleExcel demande beaucoup de rigueur, il faut avoir un plan bien structure avant de commancer a programmer, et surtout proceder de bout de code en bout de code, sinon c'est pratiquement insoluble, voici donc ce que je pense que tu desire
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "Unit1.h"
    #include <utilcls.h>
    /*
    ceci est inutile
    #pragma link "PERFGRAP"
    #pragma link "Excel_2K_SRVR"
    */
    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;
    Variant vMSExcel, vXLWorkbooks, vXLWorkbook, vWorksheet;
    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
            : TForm(Owner)
    {
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Add");
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 1);
            // on selectionne la Feuil1
            // vWorksheet.OleProcedure("Select");
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button3Click(TObject *Sender)
    {
    vMSExcel.OleFunction("Quit");
    vMSExcel = Unassigned;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button4Click(TObject *Sender)
    {
    Variant vFileName;
    vFileName = "c:\\test.xls";
    vXLWorkbook.OleProcedure("Saveas", vFileName);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button5Click(TObject *Sender)
    {
    Variant vValue, vRange, vCell;
    vRange = "D3";
    vCell = vWorksheet.OlePropertyGet("Range", "D3");
    vValue = "valeur de la cellule";
    vCell.OlePropertySet("Value", vValue);
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Button6Click(TObject *Sender)
    {
    Variant vSheetName;
    vSheetName = "essai2";
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", 2);
    vWorksheet.OleProcedure("Select");
    vXLWorkbook.OlePropertyGet("Worksheets", 2).OlePropertySet("Name", vSheetName);
    }
    //---------------------------------------------------------------------------

  4. #4
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Moi je sais que j'ai galèré au début quand j'ai commencer.
    Maintenant ca va mieux car je me suis créer une classe toute faite qui gère tout cas et du coup je n'ai plus qu'a la réutiliser.
    J'ai d'ailleurs toujours un problème au niveau de l'indicage des colonne du fait que ce soit des lettres et j'ai quelques raté, mais dans l'ensemble, ca marche plutôt bien.

  5. #5
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    Salut kurul1
    Si tu utilise les coordonnees du style "A1", tu aura quelque chose comme ceci "OlePropertyGet("Range", "A1"), si c'est du style ligne1, colonne1, tu utilise ceci "OlePropertyGet("Cells",1,1)", ce qui revient au meme

  6. #6
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    j'utilise le style A1 mais j'ai des difficultés pour certaines colonnes a reconstruire l'adresse exacte.

    Et si j'utilise en L1C1, je n'ai plus les lettres d'affiché comme par défaut dans Excel

  7. #7
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    On peut convertir le systeme de coordonnees
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Variant a = vWorksheet.OlePropertyGet("Cells", 5, 5); //.OlePropertyGet("Address");
    String variable_formula;
    //variable_formula = a.OlePropertyGet("Address"); // $A$1
    //variable_formula = a.OlePropertyGet("Address", false); // $A1
    variable_formula = a.OlePropertyGet("Address", false, false); // A1
    //variable_formula = a.OlePropertyGet("Address", false, false, -4150); // xlR1C1 = -4150 = R1C1 ou L1C1, xlA1 = 1 = $A$1
    //variable_formula = a.OlePropertyGet("Address", false, false, 1, false, (vWorksheet.OlePropertyGet("Cells", 8, 8))); // R[-2]C[-2]
    ici on transforme les coordonnees "5, 5" en "E5"

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    Merci les mec pour vos réponses !!

    Bravo blondelle ,sa marche comme je le souhaitait!! merci de ta rapidité



    j'ai oublier une petite question !!
    Comment je peut faire descendre une ligne dans une boucle for:

    j'ai tester sa ,mais a marche pas !!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Variant vValue, vRange, vCell;
     
    for(int i=0;i<3;i++)
    {
    vCell = vWorksheet.OlePropertyGet("Cells",i,1);
    vValue = "valeur de la cellule";
    vCell.OlePropertySet("Value", vValue);
    }

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 37
    Points : 20
    Points
    20
    Par défaut
    non c'est bon!! Erreur bête ...
    for(int i=1:i<3;i++)

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

Discussions similaires

  1. Probleme avec Excel 2010
    Par Tuanou dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 16/06/2011, 15h54
  2. Problem avec Excel save
    Par DreamCatcher84 dans le forum C#
    Réponses: 1
    Dernier message: 02/01/2011, 03h56
  3. [SP-2007] probleme avec excel services
    Par me_yassine dans le forum SharePoint
    Réponses: 4
    Dernier message: 22/12/2009, 11h29
  4. [Excel] Probleme avec Excel.Application
    Par Jack_serious dans le forum Général Dotnet
    Réponses: 9
    Dernier message: 12/01/2008, 17h31
  5. problème avec Excel
    Par LE NEINDRE dans le forum Modules
    Réponses: 3
    Dernier message: 08/02/2006, 23h08

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