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
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 ;-)
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'
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 ;-)
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 ?
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 ;-)
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 ....
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 ;-)
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 ];
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 ;-)
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...
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 ;-)
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![]()
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 ;-)
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.
Partager