pixel61 Posté(e) le 21 juillet 2009 Partager Posté(e) le 21 juillet 2009 Bonjour à tous Voila, en cherchant un moyen pour ouvrir un fichier Excel j'ai trouvé un post de 2004 de Patrick_35 (que je remercie)d'ou j'ai extrait quelques lignes de code (légèrement modifié) et ça donne ceci : (defun c:Test () (vl-load-com) '--> Lancer Excel (setq xl (vlax-get-or-create-object "Excel.Application")) (vlax-import-type-library :tlb-filename "C:/Program Files/Microsoft Office/Office11/MSOUTL.OLB" :methods-prefix "xl-" :properties-prefix "xlp-" :constants-prefix "xlc-") (setq xl_wks (vlax-get xl "Workbooks")) '--> Ouvrir le fichier (setq xl_fichier (xl-open xl_wks "C:\\Test.xls")) '--> Rendre Excel visible (vla-put-visible xl 1) '--> Choisir la feuil1 du classeur (setq xl_classeur (vlax-get xl_fichier "Sheets")) (setq xl_feuille (xlp-get-item xl_classeur "Feuil1")) )La routine fonctionne très bien, le seul problème c'est que lorsque je quitte le fichier, Excel reste actif dans les processusdu gestionnaire de tâches de Windows, d'ou ma question, il y a un problème dans le code ? ou alors esqu'il y a un autre moyend'ouvrir un fichier excel ? Merci pour votre aideA+ Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 21 juillet 2009 Partager Posté(e) le 21 juillet 2009 Salut, Il faut refermer le document ouvert et faire un peu de ménage ;; Fermer le document (vlax-invoke-method (vlax-get-property xl "ActiveWorkbook") 'Close :vlax-False ) ;; Quitter l'application (vlax-invoke-method xl 'Quit) ;;Faire le ménage (vlax-release-object xl) ;; libérer la mémoire (gc) Tu peux aussi voir les routines de Terry Miller ici. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 21 juillet 2009 Partager Posté(e) le 21 juillet 2009 http://www.atablex.com/kzm-main.htm http://www.atablex.com/htmls/vlxls-functions.htm Excellentissime. Une bibliothèque complète et gratuite. Bon, c'est en English.... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
pixel61 Posté(e) le 22 juillet 2009 Auteur Partager Posté(e) le 22 juillet 2009 Salut Merci pour vos infos, au fait gile la routine fonctionne très bien, le but étant d'ouvrir un document Excel et le laisser ouvert donc je ne peux pas le fermer au niveau de la routine.Ce que je ne comprends pas c'est pourquoi si je lance Excel normalement (pas depuis la routine) quand je le quitte il s'enlève depuis le gestionnaire des taches alors que si jedémarre Excel depuis la routine lorsque je le quitte il reste actif dans le gestionnaire.Bon ce n’est pas un problème à la limite, c'était plus pour comprendre le pourquoi du comment :) Encore merci pour votre aide [Edité le 22/7/2009 par pixel61] Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 22 juillet 2009 Partager Posté(e) le 22 juillet 2009 Ce que je ne comprends pas c'est pourquoi si je lance Excel normalement (pas depuis la routine) quand je le quitte il s'enlève depuis le gestionnaire des taches alors que si jedémarre Excel depuis la routine lorsque je le quitte il reste actif dans le gestionnaire. C'est comme ça, .... ! Par prog, il faut faire le (vlax-invoke-method xl 'Quit) car c'est une "aplication" que tu as créé momentanément. Je n'ai pas le vocabulaire pour l'expliquer. Mais c'est le jeu ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Patrick_35 Posté(e) le 22 juillet 2009 Partager Posté(e) le 22 juillet 2009 Salut Désolé tramber, mais c'est pas exactement cela. Il faut faire un vlax-release-object sur toutes les variables qui utilisent Excel et ensuite nettoyer la mémoire avec (gc) C'est ce qu'a indiqué (gile) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824 Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 22 juillet 2009 Partager Posté(e) le 22 juillet 2009 De toutes façon, si le but est juste d'ouvrir un fichier Excel, je ne vois pas l'intérêt de passer par de la programmation. Si tu tiens vraiment à procéder de la sorte, il faudrait avoir un pointeur vers l'objet dans une variable globale pour pouvoir l'utiliser dans une autre routine qui fermerait le fichier. C'est ce que font les routines OpenExcel et CloseExcel dans le lien que j'ai donné plus haut. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
Tramber Posté(e) le 22 juillet 2009 Partager Posté(e) le 22 juillet 2009 Désolé tramber, mais c'est pas exactement cela. Oui il faut quitter + le release. Mais de toutes façons, moi je suis tranquille, j'utilise les fonctions iKozmos, y a tout dedans et j'ai fait des trucs dingues. :D qui tournent au poil. J'aurais mieux appris si cela avait été avant que toi-même t'y intéresse et publie ici. C'est dire il y a longtemps... on devient vieux :exclam: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.) Lien vers le commentaire Partager sur d’autres sites More sharing options...
pixel61 Posté(e) le 27 juillet 2009 Auteur Partager Posté(e) le 27 juillet 2009 merci beaucoup pour vos infos :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant