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

Delphi Discussion :

[Excel] Trouver la première cellule vide d'une colone.


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut [Excel] Trouver la première cellule vide d'une colone.
    Bonjour,

    J'écrit dynamiquement dans un fichier excel (avec tExcelApplication) et j'aimerais ajouter du texte à celui déjà existant s'il y en a.

    J'ai fait ça:
    while VarToStr(MaFeuille.Cells.Item[index,1].Value)<>'' do
    index := index+1;

    Mais ça devient très lent s'il y a beaucoup de données déjà... Y a t-il une manière plus efficace ?
    En clair: Comment obtenir la première celule vide d'une colone ?

    Merci d'avance.

  2. #2
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    Chaque accès à Excel est assez lent, il faut se débrouiller pour en faire le moins possible.
    Dans ton cas, pas de solution, a moins d'utiliser une fonction ou macro d'excel pour que la recherche soit faite par Excel et non par ton prorg.

    Mais là je ne sais pas, pour le coté Excel...
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Bonjour TicTacToe,

    Je me disait qu'avec:
    http://delphi.developpez.com/faq/?pa...celplalignecol
    Pour récuperer la colone A1 entière et:
    http://delphi.developpez.com/faq/?pa...plaparticulier
    Pour en extraire la première colone vide, ca pourrait être plus rapide, nan ?

    Par contre, je n'ai pas réussi à l'utiliser.
    En effet, MaFeuille.UsedRange[0].SpecialCells n'attends pas le param de la plage 'colone A' pour chercher dedans.
    De plus, avec la valeur renvoyée: 'rMaPlage' je n'arrive pas à en extraire la position de la première cellule.

    Est ce que je m'égare ?
    Si non, uniquement: rMaPlage:=MaFeuille.Range['A1',EmptyParam].EntireColumn; rappatrie t-il la colone dans le programme Delphi ou chaque attaque sur rMaPlage se fait-elle dans excel ?
    Si c'est le cas, je me disait que je pourrais faire ma boucle sur cette plage, ce serait plus rapide, nan ?

    PS: je ne peut pas utiliser des macros.

  4. #4
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    J'utilise UsedRange pour définir la zone d'impression pour ma part.
    Mais je pense que c'est une bonne direction
    et peut-être faut-il chercher un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WS.UsedRange[ 0 ].( Y inferieur du range)
    pour écrire sur la ligne Y + 1.

    si le UsedRanged renvoie ( A1:F4 ), il faut tenter de récupérer le "4". Là je ne sais pas comment faire à froid mais je pense que c'est la bonne direction pour toi.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  5. #5
    Membre éprouvé Avatar de dacid
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 1 065
    Par défaut
    Ok, donc mon idée d'utiliser des plages est donc mauvaise, selon toi.

    UsedRange renvoie la dernière ligne utilisée alors... Mais si l'utilisateur a ouvert le classeur entre deux écritures et à édité une cellule au milieu.
    UsedRange renvoie quoi ?

  6. #6
    Membre éprouvé
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 52

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Par défaut
    non non, au contraire, je pense que c'est plutot une bonne solution d'utiliser UsedRange.

    UsedRange, doit renvoyer les coord de la zones utilisée, c'est donc ce qui t'interesse, puisque tu veux écrire après la zone utilisée.

    Je crois qu'il renvoie la plus petite région contigue contenant toute cellule renseignée, même s'il y a des trous à l'interieure...

    si on considère que UsedRange renvoie qqchose du style (x1,y1) / (x2,y2), je ne connais pas la syntaxe permettant d'extraire le fameux y2, pour que toi de ton coté tu puisses commencer à utiliser la feuile à partir de y2 + 1.
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

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

Discussions similaires

  1. [XL-2010] Sélectionner la première cellule vide d'une ligne
    Par RMA1969 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 18/10/2013, 14h50
  2. [XL-2007] Sélectionner la première cellule vide sur une ligne.
    Par Rémy A. dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/07/2013, 14h22
  3. Réponses: 6
    Dernier message: 08/04/2013, 17h36
  4. Réponses: 6
    Dernier message: 22/06/2010, 09h32
  5. Trouver la première cellule remplie d'une ligne
    Par nicacc dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 12/08/2008, 15h16

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