MAC Posté(e) le 30 mars 2006 Posté(e) le 30 mars 2006 un petit retour sur l'exportation de données vers excel 10.Fonctionne sur autocad 2004. Totalement repris de : http://www.cadxp.com/sujetXForum-4272.htm Merci Patrick_35.Chemin excel: http://www.cadxp.com/modules.phpop=modload&name=XForum&file=viewthread&tid=4827 Re Merci Patrick_35. ;;;Pour activer les fonctions visual-lisp (vl-load-com) ;;;Lancer Excel (setq xl (vlax-get-or-create-object "Excel.Application")) (vlax-import-type-library ;;;excel :tlb-filename "c:/program files/Microsoft Office/Office10/Excel.exe";utiliser ici le lisp chemin excel en remplaçant par un (car (liaison_excel)) re re merci Patrick_35 :methods-prefix "xl-" :properties-prefix "xlp-" :constants-prefix "xlc-") (setq xl_wks (vlax-get xl "Workbooks")) ;;;Ouvrir le fichier "".xls dans le dossier (setq xl_fichier (xl-open xl_wks "C:\\Prototype.xls")) ;;;Choisir la feuille feuille1du classeur (setq xl_classeur (vlax-get xl_fichier "Sheets")) (setq xl_feuille (xlp-get-item xl_classeur "feuil1")) ;Choisir la cellule sélectionnée de la feuille ex: "B9" (setq celluleselectionnee (xlp-get-range xl_feuille cellule-excel)) ;Ecrire une variable dans la cellule sélectionnée précedement (xlp-put-value2 cellule-excel valeur-ecrire) ;;;Sauvegarder le fichier (xl-saveas xl_feuille nomFichier) ;;;rendre visible excel (vla-put-visible xl 1) ;;;Fermer le fichier (xl-close xl_wks) Pas essayé la lecture dans une cellule.Difficulté pour fermer excel totalement, je lance le gestionnaire des taches windows XP et termine le processus.Ensuite je ferme et relance Autocad afin de pouvoir réutiliser les fonctions excel. [Edité le 30/3/2006 par MAC]
Tramber Posté(e) le 30 mars 2006 Posté(e) le 30 mars 2006 Difficulté pour fermer excel totalement, je lance le gestionnaire des taches windows XP et termine le processus.Ensuite je ferme et relance Autocad afin de pouvoir réutiliser les fonctions excel. (vlax-invoke-method xl 'QUIT) (vlax-release-object xl) Essaie ça. Je pense que c'est le truc à faire (pas sur à 100%, mais c'est histoire de participer !) Pour la lecture des cellules, c'est fastoche, c'est get au lieu de put ! Tiens, puisque Patrick va lire, j'ai une question : Quelle différence entre xlp-put-value2 et xlp-put-value, j'ai déjà vu les 2, il me semble Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
MAC Posté(e) le 30 mars 2006 Auteur Posté(e) le 30 mars 2006 Merci Tramber!J' essaie quand j'ai un moment.
Tramber Posté(e) le 30 mars 2006 Posté(e) le 30 mars 2006 En fait, je crois que tu peux faire un release sur la feuille, la cession, le fichier, tout quoi. J'ai parfois les mêmes problèmes. Et ca se corse quand Excel est déjà ouvert, ....etc. C'est dur parfois. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Bred Posté(e) le 30 mars 2006 Posté(e) le 30 mars 2006 Bonjours,Afin de soulager amicalement Patrick, et vu qu'il m'a répondu sur le même sujet hier, je me permet de vous conseiller d"aller voir là : http://www.cadxp.com/sujetXForum-9442.htm...J'ai testé, cela fonctionne parfaitement et proprement... (je cherche toujours concernant le message d'enregistrement par contre...) Salutations Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Tramber Posté(e) le 30 mars 2006 Posté(e) le 30 mars 2006 (je cherche toujours concernant le message d'enregistrement par contre...) C'est à dire ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Bred Posté(e) le 30 mars 2006 Posté(e) le 30 mars 2006 Dans le message précedement cité je faisait part d'un souci que j'avais concernant l'enregistrement d'Excel lorsqu'il se ferme à la demande du lisp.En fait JE NE VEUX PAS enregistrer les modifications, afin de garder mon classeur tel quel, mais comme je rentre une données dans Excel, qui me fait une recherche dans un tableau, il me demande à la fermeture "voulez-vous enregistrez les modif. ?"...Voilà mon souci.Et si c'est un paramètre dans Excel, je n'arrive pas à le trouver non plus... Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
Tramber Posté(e) le 30 mars 2006 Posté(e) le 30 mars 2006 Je comprends .....même si je ne sais pas t'aider ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Bred Posté(e) le 30 mars 2006 Posté(e) le 30 mars 2006 Pour info, j'ai résolu mon souci de message d'enregistrement sous Excel.Réponse là : http://www.cadxp.com/sujetXForum-9442.htm Merci quand même. Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
MAC Posté(e) le 31 mars 2006 Auteur Posté(e) le 31 mars 2006 Désolée mais quoique je fasse, je suis obligé de fermer autocad pour qu'excel se termine en tantque processus.Le (gc) ne fait rien et je respecte toutes les autres étapes auparavant...???.. pas grave! le reste fonctionne à merveille.A+ et merci...
Patrick_35 Posté(e) le 8 avril 2006 Posté(e) le 8 avril 2006 Tiens, puisque Patrick va lire, j'ai une question Ouui, mais forcement de suite, je reviens de stage ;) Quelle différence entre xlp-put-value2 et xlp-put-value, j'ai déjà vu les 2, il me semblevalue et value2 fonctionne sue Excel97 alors que pour les autres versions, seul value2 marche. (Je ne l'ai découvert que très récemment)Ce doit être une évolution entre les différentes versions d'excel (vlax-invoke-method xl 'QUIT) (vlax-release-object xl)Ce que donne Tramber est excellent, il faut faire attention à la variable est si ellle a été déclarée comme ceci(setq Xl (vlax-get-or-create-object "Excel.Application"))il n'y a pas de raison que ça ne fonctionne pas J'ai parfois les mêmes problèmes. Et ca se corse quand Excel est déjà ouvert, ....etc.Pour savoir si Excel est lancé(vlax-get-object "Excel.Application") ps : le (gc) est utile quand on a fermé Excel afin d'éviter de le retouver dans le gestionnaire des tâches. @+ [Edité le 8/4/2006 par Patrick_35] Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
BTO Posté(e) le 21 avril 2006 Posté(e) le 21 avril 2006 Difficulté pour fermer excel totalement, je lance le gestionnaire des taches windows XP et termine le processus.Ensuite je ferme et relance Autocad afin de pouvoir réutiliser les fonctions excel. (vlax-invoke-method xl 'QUIT) (vlax-release-object xl) bonjour je n'utilise pas (gc) mais je fais un release dans l'ordre inverse de leur création,donc j'obtiens quelques chose du genre :(if (not (vlax-object-released-p Currcells))(vlax-release-object Currcells))(if (not (vlax-object-released-p CurrSheet))(vlax-release-object CurrSheet))(if (not (vlax-object-released-p CurrWorkbk))(vlax-release-object CurrWorkbk))(if (not (vlax-object-released-p Workbk))(vlax-release-object Workbk))(if (not (vlax-object-released-p ObjExcel))(vlax-release-object ObjExcel)) je trouve prudent d'utiliser vlax-object-released-p qui permet de savoir si un objet est released ou pas, car s'il est déjà libérer alors vlax-release-object engendrera une erreur. Bruno Toniutti.
Patrick_35 Posté(e) le 21 avril 2006 Posté(e) le 21 avril 2006 (if (not (vlax-object-released-p Currcells))(vlax-release-object Currcells))(if (not (vlax-object-released-p CurrSheet))(vlax-release-object CurrSheet))(if (not (vlax-object-released-p CurrWorkbk))(vlax-release-object CurrWorkbk))(if (not (vlax-object-released-p Workbk))(vlax-release-object Workbk))(if (not (vlax-object-released-p ObjExcel))(vlax-release-object ObjExcel)) Salut(if (not (vlax-object-released-p ObjExcel))(vlax-release-object ObjExcel)) Cela devrait logiquement suffire vu que c'est pour fermer Excel, donc le Workbooks et le Sheets sont fermés aussi ? je trouve prudent d'utiliser vlax-object-released-p (vl-catch-all-apply 'vlax-release-object (list ObjExcel))Peut aussi fonctionner @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
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