Bonjour,
Je me demandais s'il était possible de trouver directement le numéro de la dernière ligne écrite dans un fichier Excel?
:roll:
Merci d'avance pour votre aide.
Isa
Version imprimable
Bonjour,
Je me demandais s'il était possible de trouver directement le numéro de la dernière ligne écrite dans un fichier Excel?
:roll:
Merci d'avance pour votre aide.
Isa
oui :)
je l'ai utilisé pour définir la zone imprimable de mes données générées.
Dans ce cas précis, Le UsedRange.Address renvoie sous forme "A1:B2"Code:WS.PageSetUp.PrintArea := WS.UsedRange[ lcid ].Address[ emptyParam, emptyParam, xlA1, emptyParam, emptyParam ];
Donc éventuellement se servir de la case 'BottomRight pour avoir le numéro de la derniere ligne.
Ou bien, j'ai pas cherché, regarder du coté de UserRange.xxxx
Merci je vais essayer ...
Heuu, je comprend pas comment ca marche.
:oops:
Le UsedRange me fait une erreur :Citation:
Méthode 'UsedRange' non supportée par l'objet Automation.
Pour être précis, mois j'ai exactement ceci:
est-ce que WS est du même type ?Code:
1
2
3
4
5
6
7
8
9 var WS : TExcelWorksheet; // composant de Delphi à l'utilisation, ceci WS.UsedRange[ lcid ].Address[ emptyParam, emptyParam, xlA1, emptyParam, emptyParam ]; me renvoie par exemple 'A1:F52'
Moi j'ai "OleApplication : variant" que je défini comme suit :Code:OleApplication := CreateOleObject('Excel.Application');
et le UsedRanged tu l'utilises comment, peut-tu poster ton code ?
Ben j'ai juste écrit :
Mais bon ca ne doit pas être comme ca que cela fonctionne.Code:OleApplication.UsedRange[1].Address[ emptyParam, emptyParam, xlA1, emptyParam, emptyParam ]; ;
Donc c'est normal, tu utilises UsedRange sur le Type Application.
Il faut l'utiliser sur le WorkSheet (sur ta feuille).
du style (je n'ai pas la syntaxe exacte sous la main car je n'utilise pas mes var. Excel comme variant)
La syntaxe c'est surement pas ca, mais du style...Code:OleApplication.WorkBook[ x].ActiveWorkSheet.UsedRange ....
Bon je pense que j'en suis pas très loin mais j'ai toujours une erreur : 'Nombre de paramètres non valide'
mon code est :Code:OleApplication.ActiveWorkBook.ActiveSheet.UsedRange[1].Address(xlA1);
Essaye de suivre la syntaxe:
avec 1 pour lcid s'il vaut 1 pour toi.Code:UsedRange[ lcid ].Address[ emptyParam, emptyParam, xlA1, emptyParam, emptyParam ];
Au fait c'est quoi lcid???
Sinon ben ca ne change rien... J'ai toujours le même message.
je ne sais pas exactement pour lcid, un identificateur. j'ai pas creusé la question, pour ma part je le récupère lorsque je me connecte à Excel et j'utilise toujours ce 'lcid' récupéré.
pour la syntaxe, tu fais donc bien:
??Code:
1
2
3
4
5
6
7 var SResultat: string; begin ... SResultat := OleApplication.ActiveWorkBook.ActiveSheet.UsedRange[1].Address[ emptyParam, emptyParam, xlA1, emptyParam, emptyParam ]; ...
Et tu as un msg d'erreur lors de l'execution ?
(Attention, il faut des crochets pour Address et non des parenthèses...)
Sinon, là je ne sais pas pourquoi ca ne fonctionne pas chez toi...
J'ai bien tout noté comme tu l'as indiqué.
Je ne vois vraiment pas d'ou peut venir le problème...
tu peux aussi faire
iDuBout est un integer.Code:iDuBout:=XlApp.Worksheetfunction.counta(XlApp.range['H1'].EntireColumn);
je compte le nombre de lignes sur la colonne H
J'ai au préalable crée un objet automation.
Merci beaucoup, ca marche et c'est plus facile.
Un grand merci a vous deux pour votre aide!!
Vu que ca marche chez moi, la seule différence c'est que tu utilises des variants.
Essaye de décomposer l'instruction en castant les types
et vue que c'est des erreurs à l'exec, peut être mets des ShowMessage() intermédiaire, pour voir si c'est bien la ligne en question qui planteCode:
1
2
3
4
5
6
7
8
9 var MonClasseur: _workbook; MaFeuille: _WorkSheet; begin MonClasseur := OleApllication.ActiveWorkBook; MaFeuille := ActiveWorkBook.ActiveWorkSheet; MaFeuille.UsedRange............ end
Bon courage !
EDIT:
Trop tard ;)
C'était bien la ligne qui plantais j'avais supprimé tout le code que j'avais autour....
Je testerais pour voir comme tu me dis.
Merci beaucoup.