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 :

[Excel] Gestion d'un ensemble de cellules


Sujet :

C++Builder

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 107
    Par défaut [Excel] Gestion d'un ensemble de cellules
    bonjour
    je commence a travaillé avec axcel (bien sur a partir de builder c++ ) en fait jusqu'a present ca va la Faq builder c++ est géniale, mais juste je ne trouve pas deux chose :
    -comme récuprérer seulement les cellule selectionnée pas un utilisateur dans une feuille excel
    - quand je récupere plusieur celules en meme temps dans un variant
    je peut ls lire commenet par la suite

    merci pour votre aide

  2. #2
    Membre expérimenté
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Par défaut
    Question N°1:
    pour recuper les cellules sélectionnées par l'utilisateur, à condition qu'on soit sûr qu'il ait sélectionné des cellules:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Variant vSelectedObjects = vMSExcel.OlePropertyGet("Selection");
    ...
    vSelectedObjects.OlePropertySet("Value","Cellule sélectionées");
    (à ne pas confondre avec la cellule active ( donnée par la propriété ActiveCell)

  3. #3
    Membre expérimenté
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Par défaut
    Question N°2

    Si j'ai bien compris tu voudrais récupérer les cellules sélectionnées pour
    en récupérer ou changer les valeurs...
    Il faut donc récuperer l'adresse de la plage rectangulaire de cellules..
    puis faire une boucle pour effectuer le traitement...

    Je n'ai pas trouvé de fonction toute prète de transformation de coordonnées de column en nombre donc je t'en propose une...


    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
    65
    66
    67
    68
    69
    70
     
    // fonction pour transformer un nom de column (A,AB...) en coordonnée absolue
     
    int __fastcall XLSColumnNameToInt(String ColumnName)
    {
       ColumnName = ColumnName.UpperCase();
       int taille_exp = ColumnName.Length();
       if(taille_exp>2) return -1; //non supporté par excel
       if(taille_exp==1){
             char c=ColumnName[1];
             return (int)c-64;
       }
       else{ // expr à 2 chiffres
        int diz = ColumnName[1]-64;
        int unite =ColumnName[2]-64;
        return ( diz*26  +unite);
       }
    }
     
    void __fastcall  ChangerCellulesSelectionnées()
    {
     ............ //lancement xls ( FAQ)
     
           // Récupération des cellules selectionnées...
     
           Variant vCell,vRange;       
           vRange= vMSExcel.OlePropertyGet("Selection");
     
     
           // Recupération de l'adresse sous forme $A$1:$C$6
     
           Variant vRangeAdress = vRange.OlePropertyGet("Address");
           String RangeAddressStr = vRangeAdress.AsType(varString);
     
           // TransFormation de l'adresse en coordonéés  X,Y absolues
     
           int delimiter_pos = LastDelimiter(":",RangeAddressStr);
           String depart_adr =Strutils::LeftStr(RangeAddressStr,delimiter_pos-1);
           String arrive_adr = Strutils::RightStr(RangeAddressStr,RangeAddressStr.Length()-delimiter_pos);
     
           delimiter_pos=LastDelimiter("$",depart_adr);
           String column1 = StringReplace (Strutils::LeftStr(depart_adr,delimiter_pos-1),"$","",TReplaceFlags()<<rfReplaceAll );
           String row1 = Strutils::RightStr(depart_adr,depart_adr.Length()-delimiter_pos);
           delimiter_pos=LastDelimiter("$",arrive_adr);
           String column2 = StringReplace (Strutils::LeftStr(arrive_adr,delimiter_pos-1),"$","",TReplaceFlags()<<rfReplaceAll );
           String row2 = Strutils::RightStr(arrive_adr,arrive_adr.Length()-delimiter_pos);
     
           //coordonnées de départ 
           int c1 =  XLSColumnNameToInt(column1);
           int r1 = StrToInt(row1);
     
           //coordonnées d'arrivée 
           int c2 =  XLSColumnNameToInt(column2);
           int r2 = StrToInt(row2);
     
     
           // traitement cellule par cellule
           for(int i=c1;i<=c2;i++){
             for(int k=r1;k<=r2;k++){
     
                //récupération de la cellule 
                Variant vCell =  vWorksheet.OlePropertyGet("Cells",k,i);
     
                //traitement surla cellule
                String Coord = IntToStr(i)+","+IntToStr(k);
                vCell.OlePropertySet("Value",StringToOleStr(Coord));
             }
           }
    ...........
    }

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 107
    Par défaut
    merci beaucoup pour ton aide .

    ce que tu ma proposé et effectivement ce que je cherchais ,cela m'aide beaucoup et complete ce qui me manque .
    entre temps , pour des raison qui me dépassent, on m'a oblige de passer au composant Excel_2K builder c++,
    maintenant tous ce que j'ai lu ne me sert pas, car je rencontre le meme probelme de selection avec TExcelApplication

    merci pour ton aide

  5. #5
    Membre chevronné


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 855
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 855
    Par défaut
    Djob >> la propriété "Columns" ne fonctionne pas sur une cellule ?

  6. #6
    Membre expérimenté
    Avatar de Djob
    Inscrit en
    Août 2002
    Messages
    215
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 215
    Par défaut
    oui tu as raison ricky,
    suis je bête!!!

    Columns suffit à recuperer le numero de colonne...(la faineantise de checher)


    timsah : je suis désolé pour toi , utiliser le composant Excel_2K ça ne vas pas être facile pour faire ce que tu dois faire...
    là je pourrais plus rien pour toi..

    bon courage .

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 107
    Par défaut
    pas de probelem pour ole j'ai fait un programme qui fait le tous. Mais avec les composant office2K , je soufre , jarrive pas a lire les cellule selectionnées.
    merci comme meme pour votre aide

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

Discussions similaires

  1. [VBA-EXCEL] Gestion des erreurs et manipulation du contenu d'une cellule
    Par Froggy007 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/09/2008, 20h42
  2. Comment lire un ensemble de cellule sous Excel
    Par bandit boy dans le forum C++Builder
    Réponses: 15
    Dernier message: 25/04/2008, 08h17
  3. [vb excel]Gestion de chaine de caractère et de fichier
    Par shirya dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/10/2005, 09h58
  4. Export vers Excel et saut de ligne dans cellule
    Par sbeu dans le forum API, COM et SDKs
    Réponses: 4
    Dernier message: 16/08/2004, 15h53
  5. [VBA-E] [Excel] Protection d'une plage de cellules
    Par fikou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2002, 11h28

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