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 :

Excel : Copier des Edit->Text dans des cellules


Sujet :

C++

  1. #1
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Points : 16
    Points
    16
    Par défaut Excel : Copier des Edit->Text dans des cellules
    Bonjour à toutes/tous les programmeuses/eurs,
    J'ai trouvé comment sauvegarder des données d'un programme dans un fichier Excel mais j'ai un gros soucis que je n'arrive pas à m'expliquer :

    J'ai des Edit dans lesquels se trouvent des valeurs float copiées par la methode FloatToStr().
    Je pilote Excel par une instance OLE et lorsque je copie le Edit dans la cellule, j'ai un message d'erreur "type de variable incorrect" de mon composant OLE.
    La variable est un Variant et le Edit est un AnsiString qui est compatible selon l'aide avec les Variants.

    La seule chose que j'ai réussi a faire est de copier la valeur avec l'instruction StrToCurr et il me copie bien ma valeur avec sa virgule mais en € !!

    Si quelqu'un sait comment me sortir de ce faux pas, je lui en serais très reconaissant.

    Voici le code :

    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
     
    Variant vMSExcel, vXLWorkbook, vXLWorkbooks, vWorksheet, vSheetName, vValue10,  vRange10, vCell;
     
    //Creation de l'objet EXCEL
     
    vMSExcel = Variant::CreateObject("Excel.Application");
    vMSExcel.OlePropertySet("Visible", true);
     
    //Nouveau classeur
     
    vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
    vXLWorkbook = vXLWorkbooks.OleFunction("Add");
     
    //Acces a la feuille1
     
    vSheetName = "Feuil1";
    vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",vSheetName);
     
     
     
    vRange10 = "B2";
     
     
    vValue10 = Edit1->Text;
     
     
    //Affectation des values dans les cellules VRanges
     
    vCell = vWorksheet.OlePropertyGet("Range", vRange1);
    vCell.OlePropertySet("Value", vValue1);

  2. #2
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    D'abord, il faut te dire que nous aurions surement plus facile à t'aider si nous savions quelle bibliothèque tu utilises.

    D'après ce que tu nous dis, je pars du principe que tu travailles sous borland avec la vcl, mais je pourrais très bien me tromper

    Ceci dit, tu nous expliques que tu utilise une fonction nommée FloatToStr pour convertir tes float en chaines de caractères.

    Le principe du miroir voudrait qu'il existe une fonction nommée StrToFloat qui fasse le travail inverse, non

    A priori, le pendant "miroir" de StrToCurr serait quelque chose comme CurrToStr (ou Curr sera l'abréviation de Currency qui signifie... monnaie )
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  3. #3
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Points : 16
    Points
    16
    Par défaut Excel et c++ builder
    Bonjour,
    Tout d'abord merci d'avoir pris la peine de m'écrire.
    Désolé pour le manque de précisonsions,
    Je bosse avec c++ builder6.
    J'ai vu qu'on pouvais piloter Excel de 2 façons :
    Soit ajouter un objet de la bibli de builder.
    Soit par des commandes OLE.

    C'est la 2eme solution que j'ai adopté.

    J'ai bien sur essayé le StrToFloat sans succes car il n'est
    pas compatible pour le Variant.
    Le StrToInt fonctionne mais je pers la virgule
    Le StrToCurr me l'affiche en € (c est tout a fait normal)

    Je ne comprends pas pourquoi je ne peux pas faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Variant value;
    Value=Edit1->Text;
    Et pourquoi StrToCurr fonctionne et pas le reste.

    J'espère avoir été plus clair.

    Merci d'avance

  4. #4
    Membre à l'essai
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2013
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2013
    Messages : 29
    Points : 16
    Points
    16
    Par défaut résolu
    Bonsoir,
    Après de nombreux essais, j'ai trouvé comment faire, il suffisait d'ajouter un c_str()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vValue10 = Edit1->Text.c_str();
    Je ne maîtrise pas le langage, pas de pratique pendant 10 ans ..

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

Discussions similaires

  1. [WD-2007] Récupérer des liens OLE définis dans des zones de texte
    Par jejedi dans le forum VBA Word
    Réponses: 0
    Dernier message: 24/10/2011, 18h33
  2. [RegEx] Remplacer les <br/> par des sauts à la ligne dans des zones de texte
    Par doncandid dans le forum Langage
    Réponses: 5
    Dernier message: 17/03/2010, 17h59
  3. Réponses: 2
    Dernier message: 27/06/2007, 10h42
  4. VBA/Excel "Mise en forme de texte dans des cellules"
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2007, 16h20
  5. comment copier le texte dans des champs
    Par pierrot67 dans le forum Bases de données
    Réponses: 5
    Dernier message: 08/12/2006, 10h05

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