Tykko
Messages postés4Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention19 mai 2005
-
18 mai 2005 à 14:42
Tykko
Messages postés4Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention19 mai 2005
-
19 mai 2005 à 13:57
Bonjour à tous :)
Je dois réaliser une application en Delphi pour une entreprise et pour
cela j'ai besoin de charger une feuille Excel servant en quelque sorte
de "base de données".
J'ai lu avec attention (enfin essayé ) les divers messages déjà postés ici, mais je n'ai pas trouvé la solution à mon problème actuel
Je souhaite connaitre à l'avance le nombre de lignes de la première
colonne de la feuille Excel pour adapter la taille d'un StringGrid au
lancement de l'application.
Pour ça je cherche donc à sélectionner la premier colonne avec FeuilleTest.Range['A1',EmptyParam].EntireRow;
Ensuite ... bin c'est là tout le problème, je
n'arrive pas à déterminer le nombre de cellules de cette colonne qui
sont occupées par du texte sans avoir à faire un parcours entier avec
une boucle et incrémentation d'une variable. Je trouve ça assez
étonnant et il doit sans aucun doute me manquer LA propriété qui va
bien
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 19 mai 2005 à 13:01
Avec la méthode find cité plus haut, c'est Excel qui gèrait la boucle en interne. Moi je voyais le code comme suit :
OleApplication := CreateOleObject('Excel.Application'); // création du lien OLE
OleWorkBook:=OleApplication.Workbooks.open(NomDeTonfichierExcel);
Sheet := OleWorkBook.Sheets[NomDeTaFeuille];
Tykko
Messages postés4Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention19 mai 2005 19 mai 2005 à 08:43
Warfeuh ... merci de la réponse, mais je veux justement éviter (si
possible) de faire un parcours complet de la colonne jusqu'à trouver le
premier élément vide.
Pis traduire du VBA en Delphi euh ...
Vous n’avez pas trouvé la réponse que vous recherchez ?
moldov
Messages postés165Date d'inscriptionmercredi 8 octobre 2003StatutMembreDernière intervention10 novembre 2008 19 mai 2005 à 10:54
Salut Tykko,
Je pense que c'est une bonne solution de rechercher la dernière cellule vide.
Si tu veux pas utiliser cette solution car tu pense que c'est une
contrainte de temps (cela dépend de la longueur de ta colonne mais moi
sinon je te donne le code delphi pour faire cela.
OleApplication := CreateOleObject('Excel.Application'); // création du lien OLE
OleWorkBook:=OleApplication.Workbooks.open(NomDeTonfichierExcel); // pour créer un nouveau document
Sheet := OleWorkBook.Sheets[NomDeTaFeuille];
while string(Sheet.Cells[iCol,iRow].value) <> '' do
Tykko
Messages postés4Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention19 mai 2005 19 mai 2005 à 12:29
Merci à toi moldov
En fait, en attendant vos réponses, je me suis penché sur un code d'un
de mes collègues qui avait fait piloté Word depuis Delphi, et ... je
suis arrivé au même code que ce que tu viens de donner
(à la différence près que j'utilise VarToStr() au lieu de string() )
Tykko
Messages postés4Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention19 mai 2005 19 mai 2005 à 13:57
ok, merci à toi aussi, je vais regarder ta méthode et je vous dirais quelle est la plus rapide
Une petite remarque sans grand rapport avec ma question : quelle que
soit la taille de la feuille (1 ligne ou 5000 lignes), le temps de
chargement en mémoire sous delphi est identique ... marrant