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 - manipulation sur cellules d'une feuille d'Excel


Sujet :

C++Builder

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Points : 35
    Points
    35
    Par défaut probleme - manipulation sur cellules d'une feuille d'Excel
    bonjour;
    j'ai un fichier Excel,dans la premiere feuille j'ai deux colonnes A et B, la colonne A contient les noms des produits et la colonne B contient le prix des produis.
    j'ai utilisé ce code pour se connceter au fichier.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Variant vMSExcel;
     vMSExcel = Variant::CreateObject("Excel.Application");
     vMSExcel.OlePropertySet("Visible", false);
     Variant vFileName, vXLWorkbooks, vXLWorkbook;
     vFileName = StringToOleStr("c:\\produit.xls");
     vXLWorkbooks = vMSExcel.OlePropertyGet("Workbooks");
     vXLWorkbook = vXLWorkbooks.OleFunction("Open", vFileName);
     
     Variant vWorksheet, vSheetName;
     vSheetName = "Feuil1";
     vWorksheet = vXLWorkbook.OlePropertyGet("Worksheets",vSheetName);
    je n'ai pas trouvé la solution pour accedés au cellules du fichier.
    le probleme :
    Comment connaitre le nombre des produits existent dans cette feuille? afin de calculer la somme des prix des produit. si je veux ajouter un produit je doit l'ajouter à la fin.
    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
    Pour accéder à tes cellules, suit ce qui est expliqué dans la FAQ ici

    Sinon pour connaitre le nombre de lignes de ta feuille c'est aussi dans la FAQ ici

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    alors j'ajoute ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Variant vWorksheet;
    vUsedRange = vWorksheet.OlePropertyGet("UsedRange");
    Variant vLines;
    vLines = vUsedRange.OlePropertyGet("Rows");
    int i = vLines.OlePropertyGet("Count");
    Comment connaitre la position des cellules pleines (non vide)?

  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
    Salut touf35
    Pour quel raison veut tu connaitre la position des cellules pleines (non vide)?
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    j'ai utilisé cette instruction pour recuperer le contenu d'une cellule.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    vCell = vWorksheet.OlePropertyGet("Cells", i, j);
    aValue = vCell.OlePropertyGet("Value");
    comment connaitre le nombre de lignes sur chaque colonne (pas le nombre de ligne de toute la feuille) ?
    merci.

  6. #6
    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
    Avec cette fonction tu a le nombre de lignes
    Variant vWorksheet;
    vUsedRange = vWorksheet.OlePropertyGet("UsedRange");
    Variant vLines;
    vLines = vUsedRange.OlePropertyGet("Rows");
    int i = vLines.OlePropertyGet("Count");
    a condition qu'il n'y ai pas de cellules vides au depart de la colonne, si tu veut faire des calculs pourquoi ne pas utiliser les fonctions Excel
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  7. #7
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    cette fonction calcul le nombre de lignes dans une feuille, mais je voudrais, comment connaitre le nombre de lignes sur une colonne?
    il peut que le nombre de lignes sur une feuille superieur ou egal au nombre de lignes sur une colonne.

  8. #8
    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
    Pour connaitre la derniere cellule non vide d'une colonne la formule Excel est, cela fonctionne meme s'il y a des cellules vide dans la colonne
    DerniereCelluleNonVide = Range("A65536").End(xlUp).Row
    ou xlUp = -4162
    Ce qui donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    // colonne B
    DerniereCelluleNonVide = vWorksheet.OlePropertyGet("Range", "B65536").OlePropertyGet("End", -4162).OlePropertyGet("Row");
    pour la colonne A remplacer "B65536" par "A65536"
    pour la colonne C remplacer "B65536" par "C65536"
    ....
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  9. #9
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 48
    Points : 35
    Points
    35
    Par défaut
    Merci de votre information, mai mon problme :
    comment connaitre le nombre de lignes sur chaque colonne?

  10. #10
    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
    Si tu avais essaye tu aurais vu que c'est ce que fait le bout de code que je t'ai passe
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

Discussions similaires

  1. [Toutes versions] comment copier plusieurs cellules d'une feuille sur plusieurs feuilles
    Par lem56 dans le forum Excel
    Réponses: 1
    Dernier message: 28/04/2013, 13h10
  2. Réponses: 2
    Dernier message: 16/12/2011, 20h20
  3. [XL-2003] copie de cellules d'une feuille sur une autre
    Par jlppap dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/08/2009, 16h44
  4. memoriser une colonne de cellule d'une feuille sur les autres feuilles
    Par iturria64 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/12/2007, 02h33
  5. [CSS]probleme de style sur cellules dans une table
    Par luimême dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 17/01/2006, 13h13

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