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 :

Pilotage Excel : écrire sur plusieurs cellules.


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 23
    Points
    23
    Par défaut Pilotage Excel : écrire sur plusieurs cellules.
    Bonjour,

    J'aurais besoin d'un petit coup de main concernant un souci de rapidité. Je m'explique : Mon application réalise l'enregistrement de données dans des tableaux Excel. Jusque là, rien de bien sorcier.

    Le problème vient du fait que mes tableaux de données peuvent atteindre 44000 éléments. Or je modifie la valeurs des cellules une par une avec un code du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    std::string cellule;
    for (int i=0; i<donnees.size(); i++)       //donnees vector<double>
    {
        cellule ="A"; cellule+=intToString(i);    //intToString fonction à moi
        m_vWorksheet.OlePropertyGet("Range", cellule.c_str()).OlePropertySet("Value", doubleToString(donnees[i]).c_str()));
    }
    Or tout ceci prend beaucoup de temps (plusieurs minutes).
    N'y a-t-il pas moyen de modifier toutes les cellules de la colonne d'un seul coup ?

    Merci.

  2. #2
    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 grouff
    Que veut tu faire copier une colonne dans une autre colonne, ou une plage de cellules dans une autre plage

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 23
    Points
    23
    Par défaut
    Bonsoir Blondelle,

    En fait mon fichier Excel est vierge à l'origine, et je souhaite copier des données qui viennent de mon programme (stockées dans un vector de double de la stl).

    Je précise que le programme fonctionne, mais qu'il est très lent, car il copie les valeurs provenant de mon vector case par case (on écrit donnees[0] sur la cellule "A1", puis donnees[0] sur la cellule "A2", etc).

    Je voudrais juste savoir s'il n'existe pas un procédé plus efficace. Sinon c'est pas grave, je rajouterai une TProgressBar au programme.

    Merci.

  4. #4
    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
    A ma connaissance on ne peut pas ecrire plus vite de cette facon cependant on peut desactiver la mise a jour de l'ecran et le mode recalcul ca peut apporter une amelioration

  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
    Tu pourrais peut etre ecrire ton code de cette facon en plus des desactivations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    std::string cellule;
    for (int i=0; i<donnees.size(); i++)      //donnees vector<double>
    {
    //    cellule ="A"; cellule+=intToString(i);    //intToString fonction à moi
    //    m_vWorksheet.OlePropertyGet("Range", cellule.c_str()).OlePropertySet("Value", //doubleToString(donnees[i]).c_str()));
    // pour ecrire dans une cellule soit
    // ("Range", "A1")
    // soit
    // ("Cells", ligne, colonne)
        m_vWorksheet.OlePropertyGet("Cells",i,1).OlePropertySet("Value", doubleToString(donnees[i]).c_str()));
    }

  6. #6
    Membre à l'essai
    Inscrit en
    Avril 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 21
    Points : 23
    Points
    23
    Par défaut
    Merci pour ta réponse, je vais essayer ta suggestion. Dernière question : peux-tu être plus explicite sur ce qu'est le mode recalcul ?

  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
    Quand la mise a jour de l'ecran est desactive on ne voit plus toutes les ecritures sur la feuille pour voir les modifications on reactive la mise a jour
    Pour le mode recalcul si la feuille contiend des formules chaque fois que l'on modifie une cellule la feuille est recalculee d'ou l'interet de le desactiver
    Les deux fonctions sont decrites dans le debut de la FAQ rubrique Excel
    Le lien

Discussions similaires

  1. [POI / JXL] écrire sur plusieurs lignes dans excel
    Par LinoaHeart dans le forum Documents
    Réponses: 0
    Dernier message: 30/09/2009, 11h52
  2. [VBA-E] Comment appliquer une macro sur plusieurs cellules
    Par jeanpierreco dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 25/01/2007, 10h54
  3. [VBA-Excel] DblClick sur une cellule
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/01/2007, 10h51
  4. [VBA Excel] Filtre sur plusieurs critères
    Par tazmania dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/12/2006, 11h12
  5. Validation de données Excel sur plusieurs cellules
    Par Civodul4 dans le forum Excel
    Réponses: 3
    Dernier message: 06/03/2006, 11h56

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