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

Langage Delphi Discussion :

Excel Range Find('*')


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Points : 23
    Points
    23
    Par défaut Excel Range Find('*')
    Bonjour,

    En VBA, j'ai une fonction me permettant de récupérer rapidement la dernière colonne non vide d'une feuille.

    J'ai essayé d'implémenter une fonction Delphi utilisant ces connaissances en VBA. Ca donne un truc comme ça.

    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
     
    uses
      Variants,
      Excel2000;
     
    function Max_Col(AOLE_Worksheet : OLEVariant) : integer;
    var
      rRange : OLEVariant;
    begin
      rRange := AOLE_Worksheet.Range[AOLE_Worksheet.Cells.Item[1, 1], AOLE_Worksheet.Cells.Item[65536, 255]];
      rRange := rRange.Find('*', , , , xlByColumns, xlPrevious);
     
      if not VarIsClear(rRange) then
        result := rRange.Column
      else
        result := -1;
    end;

    Ca marche... Enfin presque. Le souci, c'est qu'il ne reconnait pas le symbole '*' comme mot clé permettant de rechercher n'importe quel mot.

    Ca marche en VBA mais pas en Delphi. Si je remplace '*' par 'hello' ; ca me retourne bien la colonne de plus grand index ou se trouve le mot 'hello'.

    Quelqu'un aurait une idée ?

  2. #2
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,

    - Tu as essayé le signe % ?
    - Tu as essayé de transformer le signe * par un ord ou str (je sais plus) au lieu de taper le signe ?

    Sinon dernière solution teste le contenue de la cellule.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MyCellule := ExcelWs.Cells.Item[x,y].value;
     
    if MyCellule <> '' then
    // ...
    Bye

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Je m'autoréponds. Il faut mettre '*' dans une variable.
    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
    uses
      Variants,
      Excel2000;
     
    function Max_Col(AOLE_Worksheet : OLEVariant) : integer;
    var
      rRange : OLEVariant;
      sWhat : string;
    begin
      sWhat := '*';
      rRange := AOLE_Worksheet.Range[AOLE_Worksheet.Cells.Item[1, 1], AOLE_Worksheet.Cells.Item[65536, 255]];
      rRange := rRange.Find(sWhat, , , , xlByColumns, xlPrevious);
     
      if not VarIsClear(rRange) then
        result := rRange.Column
      else
        result := -1;
    end;

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

Discussions similaires

  1. Erreur excel Range(colHeader
    Par totoche dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 12/02/2014, 11h56
  2. [Excel/Range] Fonction Find de la classe CRange
    Par SmOkEiSBaD dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/06/2008, 10h02
  3. [C#] Microsoft.Office.Interop.Excel Range
    Par User.Anonymous dans le forum C#
    Réponses: 8
    Dernier message: 23/11/2007, 14h58
  4. newbie vba excel range
    Par maxtin dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/02/2007, 00h27
  5. [VBA][Excel] Range & Union
    Par sat478 dans le forum Access
    Réponses: 4
    Dernier message: 16/12/2005, 09h59

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