salvanorigatore Posté(e) le 23 janvier 2007 Posté(e) le 23 janvier 2007 Bonjour à tous,Voici mon problème :Je voudrais mettre à jour des cartouches (modèle unique) qui contiennent des attributs (nom de l’opération, bâtiment, niveau, nom du plan, indices, modification, référence plans archi, etc.) directement depuis une « liste de plans » sous Excel qui contient exactement les même informations.Actuellement je mets à jour ma « liste de plans » et ensuite j’ouvre systématiquement chaque fichier qui contient les cartouches pour les modifier manuellement et individuellement, avec le risque d’erreur que cela comporte…J’ai lancé une recherche mais je n'ai rien trouvé qui corresponde exactement à ce que j’ai besoin.Si vous avez déjà fait un programme qui fait ça ou si vous pouvez m’aider… :yltype:Merci par avance. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
Patrick_35 Posté(e) le 23 janvier 2007 Posté(e) le 23 janvier 2007 SalutOui, c'est faisable et on peux t'aiderL'idée serait d'associer un attribut à un fichier+onglet+cellule via les vlax-ldata, de lancer une commande de mise à jour et le tour serait joué. Il y a suffisament d'éléments sur le site pour que tu parviennes à faire le lisp. ;)Il faut aussi songer au déplacement éventuelle du fichier, de son effacement ou encore d'un changement de nom. Idem en ce qui concerne l'onglet et la celluleBonnes recherches :P ps : on peut te donner un coup de main :cool: @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Goldorak Posté(e) le 23 janvier 2007 Posté(e) le 23 janvier 2007 Et bien on va être deux à faire des recherches alors. Je me demandais comment faire ça justement :)
salvanorigatore Posté(e) le 24 janvier 2007 Auteur Posté(e) le 24 janvier 2007 Saluts les gars,je suis vraiment désolé mais je n’arrive pas à trouver les infos qu’il me faut pour faire le lisp dont j’ai, pardon, nous avons besoins, peut-être tout simplement parce que je n’arrive toujours pas à piger ne serais ce que les rudiments du lisp. :mad2: Alors si Goldorak arrive à faire quelque chose et/ou si Patrick35 (et/ou d’autres aussi, bien sur personne n’est exclu !) peut nous donner un petit coup de mains (enfin un coup de main de plus…) ça serait super bien, parce si vous comptez sur moi pour arriver à pondre un pro-gramme on est vraiment mal barrés. :calim: Si vous pensez que j’en demande beaucoup vous avez raison jusqu'à aujourd’hui je n’ait fait que demander et je n’ai rien donné…:red:Alors voilà je ne sais pas quoi dire de plus…Bonne journée à tous. " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
Encoretoutpetit Posté(e) le 25 janvier 2007 Posté(e) le 25 janvier 2007 Salut. Sans répondre directement à ta demande mais presque (ou alors je n'ai rien compris), j'ai tapé il y a quelque temps quelques lignes de code vba pour aller chercher des informations dans un fichier excel. Je te les livre ci-dessous, peut-être cela pourra t'aider. Public Sub SérénadeEpine() Workbooks.Open ("C:\Documents and Settings\moi\Mes documents\fichierexcel.xls") Dim Chevron(0 To 35) As AcadLineDim PtA(0 To 2) As DoubleDim PtG1(0 To 2) As Double For I = 0 To 35 PtA(0) = Cells(2 + I, 33).Value PtA(1) = Cells(2 + I, 34).Value PtG1(0) = Cells(2 + I, 28).Value PtG1(1) = Cells(2 + I, 29).Value Set Chevron(I) = ThisDrawing.ModelSpace.AddLine(PtA, PtG1) Set Chevron(I) = Nothing Next I Workbooks.Close 'Ne pas écrire le chemin du fichier à fermer End Sub
Patrick_35 Posté(e) le 25 janvier 2007 Posté(e) le 25 janvier 2007 Je travail dessusVoilà un premier aperçu Fichier LXL.LSP(defun c:lxl(/ cla fic ok sel wks xl xl_fichier xl_lance xls) (defun MsgBox (Titre Bouttons Message / Reponse WshShell) (setq WshShell (vlax-create-object "WScript.Shell")) (setq Reponse (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons))) (vlax-release-object WshShell) Reponse ) (defun lancer_excel(/ sel) (if (setq xl (vlax-get-object "Excel.Application")) (setq xl_lance T) (setq xl (vlax-create-object "Excel.Application")) ) (setq wks (vlax-get xl 'Workbooks)) (vlax-for sel wks (if (eq (vlax-get sel 'fullname) fic) (setq xls sel xl_fichier T ) ) ) ) (defun choix_feuille(cla / feu lxl_dia pos res) (if (setq lxl_dia (findfile "lxl.dcl")) (progn (setq lxl_dia (load_dialog lxl_dia) res 0) (new_dialog "lxl" lxl_dia "") (start_list "feuille") (vlax-for feu cla (add_list (vlax-get feu 'name)) (if (eq (vlax-get feu 'name) (vlax-get (vlax-get (vlax-get cla 'parent) 'activesheet) 'name)) (setq pos (itoa res)) ) (setq res (1+ res)) ) (end_list) (set_tile "feuille" pos) (mode_tile "feuille" 2) (action_tile "feuille" "(setq pos $value)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq res (start_dialog)) (unload_dialog lxl_dia) (if (eq res 0) (setq feu nil) (setq feu (vlax-get (vlax-get-property cla 'item (1+ (atoi pos))) 'name)) ) ) (msgbox "LXL" 16 "Fichier LXL.DCL introuvable.") ) ) (defun lecture(cel feu) (vlax-get (vlax-get-property (vlax-get-property cla 'item feu) 'range cel) 'value2) ) (defun fermer_excel() (if (not xl_fichier) (vlax-invoke-method xls 'close :vlax-false) ) (foreach sel (list xl wks xls cla) (vlax-release-object sel) ) (gc)(gc) ) (defun liste_fichiers(/ fic lst tbl) (if (setq tbl (reverse (vlax-ldata-list cle))) (foreach fic tbl (setq lst (append lst (list (vl-filename-base (cadr fic))))) ) ) lst ) (defun ajouter_fichier(/ fic sel) (if (setq fic (getfiled "Veuillez sélectionner un fichier Excel" (getvar "dwgprefix") "xls" 16)) (progn (setq position_fichier_excel (itoa (length (vlax-ldata-list cle)))) (vlax-ldata-put cle position_fichier_excel (list fic)) (if (eq position_fichier_excel "0") (foreach sel (list "fichier" "sfichier" "cfichier" "chemin" "gfeuille") (mode_tile sel 0) ) ) (foreach sel (list "feuille" "sfeuille" "cfeuille" "att") (mode_tile sel 1) ) (start_list "fichier" 2) (add_list (vl-filename-base fic)) (end_list) (set_tile "fichier" position_fichier_excel) (set_tile "chemin" (vl-filename-directory fic)) ) ) ) (setq cle "Patrick_35_Excel") ; (if (not (vlax-ldata-list "Patrick_35_Excel")) ; (if (setq fic (choix_fichier)) ; (progn ; (lancer_excel) ; (if (not xls) ; (setq xls (vlax-invoke wks 'open fic)) ; ) ; (setq cla (vlax-get xls 'sheets)) ; (if (setq feu (choix_feuille cla)) ; (vlax-ldata-put "Patrick_35_Excel" "0" (list fic feu)) ; ) ; ) ; ) ; ) ; (if (vlax-ldata-list cle) (if (setq lxl_dia (findfile "lxl.dcl")) (progn (setq lxl_dia (load_dialog lxl_dia)) (new_dialog "att" lxl_dia "") (if (not (vlax-ldata-list cle)) (foreach sel (list "fichier" "sfichier" "cfichier" "chemin" "gfeuille" "att" "maj") (mode_tile sel 1) ) (progn (start_list "fichier") (mapcar 'add_list (liste_fichiers)) (end_list) (if (not position_fichier_excel) (setq position_fichier_excel "0") ) (set_tile "fichier" position_fichier_excel) (set_tile "chemin" (vl-filename-directory (car (vlax-ldata-get cle position_fichier_excel)))) (if (not (cadr (vlax-ldata-get cle position_fichier_excel))) (foreach sel (list "feuille" "sfeuille" "cfeuille" "att" "maj") (mode_tile sel 1) ) ) ) ) (set_tile "accept" "2") (action_tile "afichier" "(ajouter_fichier)") (action_tile "accept" "(done_dialog 0)") (setq res (start_dialog)) (unload_dialog lxl_dia) ) (msgbox "LXL" 16 "Fichier LXL.DCL introuvable.") ) ; ) (if xl (fermer_excel) ) (princ) ) Fichier LXL.DCL// ================================================================= // // LXL.DCL V1.00 // // Copyright (C) Patrick_35 // // ================================================================= lxl : dialog { label = "Choix de la feuille Excel"; fixed_width = true; alignment = centered; allow_accept = true; is_cancel = true; : popup_list {key = "feuille";} spacer; ok_cancel; } att : dialog { label = "LXL V1.00"; fixed_width = true; alignment = centered; allow_accept = true; is_cancel = true; : row { : column { width = 40; :boxed_column { label = "Fichier Excel"; : popup_list {key = "fichier";} : button {label = "Ajouter"; key = "afichier";} : button {label = "Supprimer"; key = "sfichier";} : button {label = "Changer"; key = "cfichier";} : text {label = "Chemin"; key = "chemin";} } :boxed_column { label = "Feuille Excel"; key = "gfeuille"; : popup_list {key = "feuille";} : button {label = "Ajouter"; key = "afeuille";} : button {label = "Supprimer"; key = "sfeuille";} : button {label = "Changer"; key = "cfeuille";} spacer; } } : boxed_column { width = 40; label = "Attributs"; key = "att"; : list_box {label = "ID"; key = "id"; height = 10; multiple_select = true;} : button {label = "Ajouter"; key = "aatt";} : button {label = "Supprimer"; key = "satt";} : button {label = "Modifier"; key = "matt";} : row { : column { : text {label = "Cellule affectée";} : text {label = "Bloc";} : text {label = "Etiquette";} : text {label = "Valeur";} } : column { : text {key = "cellule";} : text {key = "bloc";} : text {key = "etiquette";} : text {key = "valeur";} } } spacer; } } spacer; : button {label = "Mise à jour des Attributs liés avec Excel"; key = "maj";} spacer; ok_button; } ps : dans le code, il y a tout ce qui faut pour travailler avec Excel @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
salvanorigatore Posté(e) le 25 janvier 2007 Auteur Posté(e) le 25 janvier 2007 Bonjour à tous,Tout d’abord je voudrais remercier Encoretoutpetit pour sa bonne volonté et sa participation, c’est très sympa. ;) Puis bien sûr je voudrais remercier Patrick35, je voudrais te dire toute ma reconnaissance de t’intéresse à ma demande et surtout de fournir un travail aussi bon.J’ai chargé ton « premier aperçu » et j’entrevois (même si elles ne sont pas encore activées) déjà toutes les fonctions que j’ai vu en « rêve », c’est comme si tu avait lu dans mon esprit…Bien entendu on remarque aussi la finition minutieuse qui te caractérise, c’est fantastique. :o Bon je t’embête plus et je te laisse travailler.Encore milles merci. :heartpump: " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
salvanorigatore Posté(e) le 7 février 2007 Auteur Posté(e) le 7 février 2007 Bonjour Patrick_35,Ecoute je ne voudrais pas être pénible mais je préfère savoir à quoi m’en tenir.Voilà, il m’a semblé comprendre que tu étais en train de plancher sur le lisp dont tu nous as donné un « aperçu ».Mais comme je ne vois rien venir je m’inquiète :1) Dois-je attendre patiemment (et en silence) que tu aies fini de travailler ? :yltype: 2) Ou ce n’est pas la peine d’attendre parce que tu n’a pas prévu d’en faire plus (ce qui est, sois dit entre nous, tout à fait ton droit !). :o Comprends-moi bien je n’ai nullement l’intention de te bousculer, je sais attendre patiemment et en silence (si, si) s’il le faut ! :angel: Merci par avance.@+ " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
winfield Posté(e) le 7 février 2007 Posté(e) le 7 février 2007 Bonjour,Tu prépares toutes tes indications de cartouches en avance ? :o Nous n’ héritons pas de la terre de nos ancêtres.Nous l’empruntons à nos enfants.
Patrick_35 Posté(e) le 7 février 2007 Posté(e) le 7 février 2007 Tu as le droit de t'inquiéter et je te rassure car je continue de travailler dessus.Pour être plus prècis, les fonctions ajouter dans les fichiers, feuilles et attributs sont opérationnels, ce qui n'est pas une mince affaire mais plus facile à gérer maintenant que la structure est bien définit.C'est un outil qui va aussi me servir pour la simple raison est qu'il va permettre de lier n'importe quel attribut à n'importe quelle cellule Excel, ce qui va beaucoup plus loin que le cartoucheCa avance, certes pas à la vitesse que l'on pourrait souhaiter, mais ça avance. @+ ps : Quand je promets et qu'en plus je donne un aperçu, c'est pour aller au bout ;) Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
salvanorigatore Posté(e) le 8 février 2007 Auteur Posté(e) le 8 février 2007 Bonjour Patrick_35,Tout d’abord toutes mes excuses, mais je ne voulais surtout pas entendre que tu ne tient pas parole ! :red: Je sais de quoi je parle c’est n’est pas la première fois que tu me sort d’affaire en élaborant un programme et je confirme et signe tu est toujours allé jusqu’au bout.On và donc dire que j’ai péché d’impatience….c’est grave docteur ? :mad2: Je me doutais bien quand je t’ai embarqué dans cette affaire que ça n’allait pas être une mince affaire, mais je ne pensai pas que ça pouvait te mener si loin.En tout cas j’en suis heureux, pas pour le travail que ça te donne bien entendu, mais pour les possibilités que j’entrevois, j’en ai déjà l’eau à la bouche… :DBon écoute comme je l’ai dit dans mon précèdent message je sais aussi me taire quand il le faut (mais arrêtés, c’est vrai !) donc je vais te laisser travailler en paix. :cool: A bientôt. PS pour winfield : avant de remplir mes cartouches je remplis toujours une liste de plans qui comporte une bonne partie des informations que vont se retrouver sur les cartouches (nom de l’opération, bâtiment, niveau, nom du plan, indices, modification, référence plans archi, etc.) dont certains vont être modifiés au fur et à mesure de l’avancement du projet (indices, modifications, référence plans archi, etc.). (Voir mon premier message sur ce sujet.) " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
ASTERIXII Posté(e) le 8 février 2007 Posté(e) le 8 février 2007 Je suis également preneur du projet final, cela fonctionne t-il dansles 2 sens ?je mets a jour les attributs dans le cartouche, lance une commande lisp et la liste EXCEL est a jour , possible ?
Patrick_35 Posté(e) le 8 février 2007 Posté(e) le 8 février 2007 Bien sure, sauf que pour l'instant, je suis parti dans le sens Excel-->AutocadJe finalise déjà et on verra ensuite, bien que ce ne soit pas grand chose à faire @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Patrick_35 Posté(e) le 9 février 2007 Posté(e) le 9 février 2007 Bon, bah voilà le lispC'est pour l'instant une version béta car d'habitude je le "conserve" chez moi histoire de le tester à fond, de voir s'il ne reste pas des bugs ou s'il n'y a pas d'améliorations à apporter.Essayez le et testez le et dites moi s’il y a des choses qui clochent. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
ASTERIXII Posté(e) le 9 février 2007 Posté(e) le 9 février 2007 Tous d'abord chapeau,aprés mon premier test, pas de bugsPour les sugestions: Est-il possible de selectionner le Bloc du cartouche avec plusieurs attributs,et qu'il remplisse automatiquement le tableau, plutot que de selectionner un a un les attributs.Cela permet également d'avoir toujour le même classement des attributs dans les colonnes d'excel.Si j'abuse, incrémentation des lignes du tableau (car je resonne de autocad vers excel) @+ Et encore bravo !!
Patrick_35 Posté(e) le 9 février 2007 Posté(e) le 9 février 2007 MerciEt le lien a été mis à jour suivant ta demande @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
ASTERIXII Posté(e) le 9 février 2007 Posté(e) le 9 février 2007 Deja !, trop fortEt encore bravo !!Je test lundi
thierry.garré Posté(e) le 11 février 2007 Posté(e) le 11 février 2007 Mes plus grandes marques de respect cher Patrick..... Ton lisp est génial.... une toute petite question : Est-il possible d'écrire les attribut en ligne dans excel au lieu d'une colonne lorsqu'on selectionne un Bloc ??? Encore Bravo Thierry Garré Géorail-Covadis-Autopiste-Autocad-Autocad Map-Infraworks 360- Navisworks -Recap
Patrick_35 Posté(e) le 11 février 2007 Posté(e) le 11 février 2007 Merci.Tout est possible ;)Comme je l'ai déjà dit, c'est une version béta et je pense justement proposer comme option une saisie libre, incrémentation automatique par ligne ou colonne aussi bien par le choix d'un bloc que celui d'attributs.De plus, il faut que je fasse la vérification que le calque lors de la modification d'un attribut ne soit pas verrouillé et aussi lors lors de l'écritrure dans les cellules Excel, lors de la sauvegarde, que le fichier ne soit pas en lecture seule ou déjà ouvert par quelqu'un d'autre. @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
salvanorigatore Posté(e) le 12 février 2007 Auteur Posté(e) le 12 février 2007 Bonjour Patrick_35,Je viens de découvrir il y quelques instants que le rêve est devenu réalité !Merci beaucouppppppp, t’es énorme… :yltype:Je n’ai donné qu’un petit coup d’œil pour l’instant et j’en bave déjà.Je vais bien entendu tester à fond ce bijou, et je vais te faire mes commentaires.Merci beaucoup et à très bientôt. PS. ça valait vraiment le coup d’attendre :D " Celui qui a déplacé la montagne, c'est celui qui a commencé par enlever les petites pierres "
ASTERIXII Posté(e) le 12 février 2007 Posté(e) le 12 février 2007 Peut-être un bug dans la deuxiéme version: (remarque, j'utilise le même fichier dwg et excel qu'avec la premiere version du lisp, important ? dans mon cas les attributs sont dans un bloc ) -je dupliques une presentation dans mon dwg, je change les valeurs des attributs -j'ouvre excel ou il y a 3 feuilles avec deja des valeurs de cartouches dont un essai de ce matin avec la nouvelle version du lisp (valeurs enregistrées dans la feuille n°3) -dans autocad je lance la routine, selectionne la feuille n°1, selectionne le bloc ,indique A20 comme cellule, mise a jour du fichier excel -Le probleme est qu'il ne place pas les valeurs dans la bonne feuille, ni dans la bonne ligne, en fait il a conservé les parametres de ma derniere intervention soit la feuille n°3 ligne A10 @+
Patrick_35 Posté(e) le 12 février 2007 Posté(e) le 12 février 2007 j'utilise le même fichier dwg et excel qu'avec la premiere version du lisp, important ?Non -je dupliques une presentation dans mon dwg, je change les valeurs des attributsOk -j'ouvre excel ou il y a 3 feuilles avec deja des valeurs de cartouches dont un essai de ce matinavec la nouvelle version du lisp (valeurs enregistrées dans la feuille n°3)Ok, mais pas obligatoire d'ouvrir excel -dans autocad je lance la routine, selectionne la feuille n°1, selectionne le bloc ,indique A20 comme cellule, mise a jour du fichier excelOk -Le probleme est qu'il ne place pas les valeurs dans la bonne feuille, ni dans la bonne ligne, en fait il a conservé les parametres de ma derniere intervention soit la feuille n°3 ligne A10C'est là où je ne comprends plusUn traitement se fait toutes les feuilles d'excel ont été indiqués.Si tu as des valeurs pour la feuil1, elles seront misent à jour, idem en ce qui concerne la feuil3 et autres La logique du lisp est de traiter tous les attributs qui sont liés avec Excel, quelques soit la feuille et le fichier.De cette manière, on peut très bien travailler sur 20 fichiers et 10 feuilles par fichier à partir d'un seul dessin avec une mise à jour globalLa base est le dessin. Ensuite, à toi de savoir comment t'organiser @+ ps : continuez de tester, et d'avancer vos idées. Plus on est de fous et plus on rit et c'est comme cela que l'on fait avancer le Schmilblick [Edité le 12/2/2007 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
Patrick_35 Posté(e) le 12 février 2007 Posté(e) le 12 février 2007 Voilà, le lien a été mis à jour avec les modifications que j'avais annoncéesDonc on passe à la version 1.10 afin que l'on s'y retrouve @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
ASTERIXII Posté(e) le 13 février 2007 Posté(e) le 13 février 2007 Depuis la version 1.10 plus de probléme. citation extraite du message original:-j'ouvre excel ou il y a 3 feuilles avec deja des valeurs de cartouches dont un essai de ce matinavec la nouvelle version du lisp (valeurs enregistrées dans la feuille n°3) Ok, mais pas obligatoire d'ouvrir excel En fait cela permet de savoir quel numero de ligne il faut entrer.Pourrais-tu incrementer en ligne ou en colonne suivant le choix deja fait dans la boite de dialogue, pour que l'entrée suivante (nouveau cartouche) soit placée a la suite ? -J'en rajoute une couche... hors contexte des attributs, rajouter pour chauque plan la liste des xref ACTIF (avec le chemin ) a la suite des colonnes ou des lignes suivant l'option de remplissage. Encore du boulot.....
Patrick_35 Posté(e) le 13 février 2007 Posté(e) le 13 février 2007 Pourrais-tu incrementer en ligne ou en colonne suivant le choix deja fait dans la boite de dialogue, pour que l'entrée suivante (nouveau cartouche) soit placée a la suite ? C'est ce qui est proposé avec le choix libre/inc ligne et inc colonne, sinon je ne comprends pas le souhait. -J'en rajoute une couche... hors contexte des attributs, rajouter pour chauque plan la liste des xref ACTIF (avec le chemin ) a la suite des colonnes ou des lignes suivant l'option de remplissage. Pourquoi faire ? . Le but est de travailler Excel <--> Autocad depuis le dessin en cours. Pas avec les xrefs ? Encore du boulot..... C'sst comme ça que les choses avancent. @+ 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