Bonjour,
Je me demandais s'il était possible de trouver directement le numéro de la dernière ligne écrite dans un fichier Excel?
![]()
Merci d'avance pour votre aide.
Isa
Bonjour,
Je me demandais s'il était possible de trouver directement le numéro de la dernière ligne écrite dans un fichier Excel?
![]()
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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
Heuu, je comprend pas comment ca marche.
![]()
Le UsedRange me fait une erreur :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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part OleApplication.ActiveWorkBook.ActiveSheet.UsedRange[1].Address(xlA1);
Essaye de suivre la syntaxe:
avec 1 pour lcid s'il vaut 1 pour toi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part 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 plante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager