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 :

[OleExcel]Entrer des valeurs dans des cellules


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut [OleExcel]Entrer des valeurs dans des cellules
    bonjour à tous!!!

    Je tente de maitriser le pilotage de d'excel par BCB v4. Je veux integrer des valeurs lues dans un fichier txt dans une feuille Excel.
    Mon problème vient de cette erreur :
    [C++ Erreur] sysvari.h(2473): E2015 Ambiguïté entre 'TVariantT<tagVARIANT>::operator =(const TVariantT<tagVARIANT> &)' et 'TVariantT<tagVARIANT>::operator =(bool)'.
    Cela pointe sur le fichier sysvari.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    template <class P1>
      Variant Variant::OlePropertyGet(const String& name, P1 p1)
      {
        TAutoArgs<1> args;
        args[1] = p1;
        return OlePropertyGet(name, static_cast<TAutoArgsBase*>(&args));
      }
    Et mon code est :
    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
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
            AnsiString IniPath = ExtractFileDir(ParamStr(0));
            String FileName = IniPath + "\\TestExcel.xls"  ;
            TStringList *point=new TStringList;  //Creation de la StringList
            String sTabExcel[10] = {"A1","A2","A3","A4","A15","A6","A7","A8","A9","A10"};
            int i,j; //index
     
            //Ouverture d'excel
            vMSExcel = Variant::CreateObject("Excel.Application");
            vMSExcel.OlePropertySet("Visible", true);
     
            //Création d'un classeur
            //vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
            //vXLWorkbook = vXLWorkbooks.OleFunction("Add");
     
     
            //Ouverture  du classeur
            vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
            vXLWorkbook=vXLWorkbooks.OleFunction("Open", FileName.c_str());
     
            //mettre dans la feuille donne
            vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", "Donne");                  
            //lecture du fichier txt
            sFileName = IniPath + "\\point.crb";
            point->LoadFromFile(sFileName);
            //Tant que la lecture n'est pas de 10 valeurs
             while((i-1)!= 10 )
             {
                            vRange = sTabExcel[i-1];
                            vCell = vWorksheet.OlePropertyGet("Range", vRange); //aller à la cellule
                            vValue = i;
                            vCell.OlePropertySet("Value", vValue); // initialisé à la nouvelle valeur de la cellule
                            i++;
                    }
     
            }
     
            delete point;   //effacer le contenu de la StringList
     
    }
    Auriez vous une petite idée pour m'aider

  2. #2
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut
    J'ai modifié mon code mais j'ai toujours la même erreur. J'ai beau faire comme dans la faq cela ne marche pas.

    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
     
            FILE *fichier;
            AnsiString IniPath = ExtractFileDir(ParamStr(0));
            String sFileName = IniPath + "\\point.crb";
            String sTabExcel[10] = {"A1","A2","A3","A4","A15","A6","A7","A8","A9","A10"};
            char buf[200];
            int i; //index
            i=0;
            //mettre dans la feuille donne
            vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets", "Donne");
            //lecture du fichier txt
     
            if ((fichier = fopen(sFileName.c_str(),"r"))==NULL)
                    //le fichier n'a pas pu etre ouvert
                    Application->MessageBox("Le fichier n'a pa pus être ouvert","Erreur",MB_ICONEXCLAMATION);
            else
            {//On se place en début de fichier
                    fseek(fichier,0,SEEK_SET);
                    while(feof(fichier)==1 )
                    {
                            vRange = sTabExcel[i];
                            vCell = vWorksheet.OlePropertyGet("Range", vRange); //aller à la cellule
                            vValue = atoi(fgets(buf,200,fichier));
                            vCell.OlePropertySet("Value", vValue); // initialisé à la nouvelle valeur de la cellule
                            i++;
                      }
     
             }
              fclose(fichier);

  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
    Par défaut
    Salut Masmeta:
    Dabord un lien sur le pilotage OleExcel
    une facon d'ouvrir Excel et de charger un fichier.
    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
     
    Variant vMSExcel, vXLWorkbooks, vXLWorkbook, vWorksheet;
    Variant vRange, vWorksheets;
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
    Variant vFileName, vNotUsed, vSeparator, FileFormat, ReadOnlyRecommended;
    Variant CreateBackup, Password, WriteResPassword;
    Variant Mot_passe;
    // ouverture d'un fichier au format csv
    vFileName = "C:\\Documents and Settings\\blondelle\\Mes documents\\Classeur1.xls";
    vNotUsed = Unassigned;
    vSeparator = 1;
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName, vNotUsed,
    vNotUsed, vSeparator);
    Je serais disponible aux environ de 18h00, 18h30 en attendant amuse toi bien avec ce que je t'ai donne.

  4. #4
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut
    Citation Envoyé par blondelle
    Salut Masmeta:
    Dabord un lien sur le pilotage OleExcel
    Salut blondelle.

    J'ai regarde de long en large cette page et les diférents forums traitant du sujet excel aujourd'hui. je ne sais pas trop d'ou vient mon probleme. J'ai fais le test avec la ligne pour "sauvegardé sous" donne par la faq et j'ai le meme type d'erreur.

    Donc la je reste un peu paumé.

  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
    Par défaut
    Salut Masmeta:
    Regarde mon poste precedent le Filename est declare en Variant Ole travail essentiellement en Variant c'est peut etre une possibilite d'erreur sinon tu met un point d'arret dans ton code et tu execute en pas a pas pour voir ou se situe l'erreur en fonction du code de la ligne incriminee on aura une idee du probleme.

  6. #6
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut
    Salut Blondelle.

    De retour au travail, j'ai tenté ta solution mais sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName, vNotUsed,
    vNotUsed, vSeparator);
    J'ai toujours l'erreur de compilation :
    [C++ Erreur] sysvari.h(1869): E2015 Ambiguïté entre 'TVariantT<tagVARIANT>::operator =(const TVariantT<tagVARIANT> &)' et 'TVariantT<tagVARIANT>::operator =(bool)'.
    Par contre quand je clique sur l'endroit de l'erreur je me retrouve sans le sysvari.h avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      template <class P1, class P2>
      Variant Variant::OleFunction(const String& name, P1 p1, P2 p2)
      {
        TAutoArgs<2> args;
        args[1] = p1;  args[2] = p2;
        return OleFunction(name, static_cast<TAutoArgsBase*>(&args));
      }
    J'ai l'impression que le passage de plusieurs paramètres posent problème. Sa ne serait pas un pb de configuration de BCB?

Discussions similaires

  1. [VBA-E] Comparer des valeurs dans des cellules
    Par michel2662 dans le forum Macros et VBA Excel
    Réponses: 22
    Dernier message: 22/06/2017, 15h00
  2. Excel - Mettre des valeurs dans les cellules
    Par shuya dans le forum Débuter
    Réponses: 1
    Dernier message: 10/02/2009, 09h45
  3. [WD11] Insérer des valeurs dans des cellules de Table
    Par arnaud_verlaine dans le forum WinDev
    Réponses: 8
    Dernier message: 29/09/2008, 12h55
  4. DataGridView et format des valeurs dans les cellules
    Par saultapt dans le forum Windows Forms
    Réponses: 5
    Dernier message: 17/06/2008, 16h55
  5. Inserer des valeurs dans une cellule
    Par azerty53 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/09/2006, 16h27

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