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

API, COM et SDKs Delphi Discussion :

[OLE Excel] Aller jusqu'à la dernière cellule rempli


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre du Club

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2002
    Messages : 38
    Points : 48
    Points
    48
    Par défaut [Résolu][OLE Excel] Aller jusqu'à la dernière cellule rempli
    J'ai une liste d'informations dans une colonne.
    Comment puis-je les récupéré sans avoir des valeurs "vides" ?

    Exemple

    J'ai 3 info :
    • lulu
      toto
      kikou


    J'aimerai par exemple, les mettre dans une TStringList.

    Le problème, c'est qu'en prenant les valeurs une a une, j'aurai toute les valeurs jusqu'à la fin de la colonne (y a 65536 lignes)

    Alors j'aurai mes 3 informations + 65533 info qui seront "vide".


    Comment parer c problème ?

    Merci.

  2. #2
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : avril 2002
    Messages : 523
    Points : 1 909
    Points
    1 909
    Par défaut
    C'est une blague ? Ou est la caméra ?
    Bon, lorsque tu lis une cellule rien ne t'empêche de vérifier qu'elle n'est pas vide. Si elle l'est, tu arrête l'exécution de ta boucle ou tu continue en "oubliant" toutes les cellules vides.

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2003
    Messages : 4 341
    Points : 5 501
    Points
    5 501
    Par défaut
    Egalement, à chercher, mais dans EXCEL, tu peux recuperer les informations suivantes :
    Derniere Colonne et Derniere ligne d'un tableau !

  4. #4
    Membre du Club

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2002
    Messages : 38
    Points : 48
    Points
    48
    Par défaut
    C'est une blague ? Ou est la caméra ?
    Bon, lorsque tu lis une cellule rien ne t'empêche de vérifier qu'elle n'est pas vide. Si elle l'est, tu arrête l'exécution de ta boucle ou tu continue en "oubliant" toutes les cellules vides.

    >> Excel ne considère pas une cellule vide comme vide (rien).

    Egalement, à chercher, mais dans EXCEL, tu peux recuperer les informations suivantes :
    Derniere Colonne et Derniere ligne d'un tableau !

    >> J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range(Selection, Selection.End(xlDown)).Select
    Mais apparemment ca marche pas... Je vais quand même ressayer.

  5. #5
    Futur Membre du Club
    Inscrit en
    février 2003
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : février 2003
    Messages : 5
    Points : 6
    Points
    6
    Par défaut
    Moi j'ai réussi et j'ai fait comme ceci :

    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
     
    //Fonction calculant le nombre de ligne remplies dans Excel
    function NbrRec : integer;
    var RowXls, rep : integer;
        CellXls : string;
    begin
    //Initialisation des données
    RowXls := 2;
    //Test pour récupérer le nombre de ligne remplies
    CellXls := vMSExcel.Cells[RowXls, 1].Value;
    while not (CellXls = '') do begin
        inc(RowXls);
        CellXls := vMSExcel.Cells[RowXls, 1].Value;
    end;
    rep := RowXls - 1;
    result := rep;
    end;
    Donc... Excel considère les cellules vides comme "vide" !
    "Le sabre est une arme, le Kendô est un art de tuer... Quelles que soient les belles paroles pour l'expliquer, telle est sa vérité !"

  6. #6
    Membre confirmé
    Avatar de Higgins
    Inscrit en
    juillet 2002
    Messages
    469
    Détails du profil
    Informations forums :
    Inscription : juillet 2002
    Messages : 469
    Points : 499
    Points
    499
    Par défaut
    pour ma part j'utilise un variant et j'obtiens le nombre de lignes (ou colonnes) utilisées comme ceci:
    Monvariant.sheets[feuille].usedrange.rows.count

    il suffit de remplacer rows par cols pour avoir les colonnes.
    Par contre si les cellules contiennent
    toto
    tata
    <vide>
    tutu

    la valeur retournée est 4 car il existe des infos jusqu'à la 4ème ligne
    7 fois à terre, 8 fois debout

  7. #7
    Membre du Club

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    juin 2002
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : juin 2002
    Messages : 38
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Higgins
    pour ma part j'utilise un variant et j'obtiens le nombre de lignes (ou colonnes) utilisées comme ceci:
    Monvariant.sheets[feuille].usedrange.rows.count

    il suffit de remplacer rows par cols pour avoir les colonnes.
    Par contre si les cellules contiennent
    toto
    tata
    <vide>
    tutu

    la valeur retournée est 4 car il existe des infos jusqu'à la 4ème ligne
    Cette manière de faire m'interesse !
    Mais apparemment ça ne marche pas !

    J'ai tapé (dans Excel):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public Sub test()
     Range("A1").Select
     Sheets("Feuil1").UsedRange.Rows.Count
    End Sub
    Il me dit error :
    Propriété ou méthode non gérée par cet objet !
    Ou est mon erreur ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    septembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : septembre 2004
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par Higgins
    pour ma part j'utilise un variant et j'obtiens le nombre de lignes (ou colonnes) utilisées comme ceci:
    Monvariant.sheets[feuille].usedrange.rows.count

    il suffit de remplacer rows par cols pour avoir les colonnes.
    Par contre si les cellules contiennent
    toto
    tata
    <vide>
    tutu

    la valeur retournée est 4 car il existe des infos jusqu'à la 4ème ligne
    Ta méthode m'interresse beaucoup!
    Malheureusement je n'arrive pas à l'utiliser, en effet j'ai toujours une erreur d'opération de variant.
    Qqu'un pour m'aider ?
    Merci

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    novembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : novembre 2006
    Messages : 42
    Points : 31
    Points
    31
    Par défaut
    Salut Higgins

    Merci pour moi en Delphi ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    i:= vworksheet.usedrange.rows.count  ;
          arange:='B5';
          vCell := vWorksheet.Range[aRange];
          vcell.value:=i;
    ou i est un integer

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    juillet 2002
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : juillet 2002
    Messages : 61
    Points : 63
    Points
    63
    Par défaut
    Bonsoir à tous,

    Voici une solution élégante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var
       LastLine: Integer;
    begin
       ActiveSheet:= WorkBook.ActiveSheet;
       LastLine  := ActiveSheet.Range['A65536'].End[xlUp].Row;
    end;
    Voila.
    C++ BUILDER & DELPHI

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

Discussions similaires

  1. Copier coller jusqu'à la derniere cellule remplie
    Par Danieldu54 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/11/2009, 21h36
  2. [XL-2007] Copier coller jusqu'à la derniere cellule remplie
    Par yalefe dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/11/2009, 20h52
  3. Réponses: 1
    Dernier message: 26/05/2007, 16h20
  4. [OLE] Excel : Ajouter un commentaire à une cellule
    Par Vertyos dans le forum Delphi
    Réponses: 5
    Dernier message: 09/11/2006, 20h26
  5. Réponses: 2
    Dernier message: 28/08/2006, 12h17

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