Aller au contenu

Autocad et Excel


Patrick_35

Messages recommandés

Puisqu’il faut lancer le sous forum sur le visual lisp, j’ai un sujet que je n’ai malheureusement pas eu le temps d’approfondir :(

Le but serai d’appeler Excel depuis autocad avec l’ouverture d’un fichier xls, de choisir sa page , puis de lire ou écrire une valeur dans un cellule donnée avec la possibilitée de faire une sauvegarde ou une impression de la feuille Excel, toujours depuis Autocad

 

@+

Les Lisps de Patrick

Le 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

Bonjour

Il me semble plus aisé de passer par le VBA, qui lui est reconnu par les deux logiciels

et facilite le passage d'infos de l'un à l'autre.

je reste en ligne pour te filer un coup de main, le cas échant.

amicalement

didier :yltype:

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...
  • 3 mois après...

Salut,

 

À mon avis, apprendre la sémentique de Visual Lisp pour Excel est beaucoup plus compliquée que de le faire directement en VBA.

 

 

Autre chose: AutoLISP est un langage à exécution séquentielle et sans support pour les erreurs (ou presque) sans si on définit *error*, ce qui entraine la fin de l'éxécution le cas échéant. Les possibilités de débogage sont nulles.

 

En VBA, il existe des instructions pour trapper les erreurs et ne pas tout perdre. Par exemple: ON ERROR RESUME NEXT ou ON ERROR GOTO xxxx. Le plus débile est que je crois que les concepteurs de VB on voulu qu'on traite les erreurs non pas comme des erreurs mais comme des événements normaux.

 

Lien vers le commentaire
Partager sur d’autres sites

Salut

Je débute en visual lisp et je vient de reussir à écrire ce que je voulais dans une cellule. Je reconnais que ce n'est pas simple, loin de là. Essayer de comprendre entre les vla-machin, les vlax-truc, les appels aux fonctions de l'appliclations et aux propriètés d'autres fonctions. Je mélange et je regarde ce qu'il en sort ;) . Je plaisante, mais ce n'est pas évident. Mais quand ça marche, c'est génial :P . Voir autocad récupérer ses infos pour les rebalancer dans excel, ça m'impressionne autant que ceux qui s'en servent

Mais il me reste encore une chose que je n'arrive pas à faire, c'est de faire un save tout simple de mon fichier à partir d'un workbooks. Je réussis bien un saveas, mais si le fichier existe déjà, je n'arrive pas à passer outre de la confirmation d'excel. Il y a bien la possibilité d'effacer ce fichier auparavant, mais bon :(

A, encore une chose, je traite aussi les erreurs et je suis surpris d'une chose. On a tout le langage, les doc et les exemples en anglais, et pour traiter les erreurs en français ?

 

@+

Les Lisps de Patrick

Le 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

Salut,

 

Avec VBA, tu essaie de te connecter à Excel. S'il n'est pas ouvert, tu reçoit une erreur pardonnable donc tu sais que tu pourras le fermer une fois tout complété. Excel est-il disponible (suite à une boite de dialogue ouverte, impression en cours, etc.) ?Tu essaie ensuite d'ouvrir ton document existant. Était-il chargé? L'onglet courant était-il le bon? Il y a tant d'événements imprévisibles que VBA peut gérer. Ceci est impossible à faire en Visual Lisp (ou de façon hyper-compliqué), même avec des (vl-catch-all-error-p ...)

 

Serge

Lien vers le commentaire
Partager sur d’autres sites

  • 4 mois après...

Essaye ca, c une macros qui sert a exporter les valeurs d'attribut des bloc d'un calque (ou de tus le dessin) vers un fichier excel:

 

'' Extraction des attributs du calque collaborateurs :

Sub ExtractCollabo()

Dim Excel As Excel.Application

Dim ExcelSheet As Object

Dim ExcelWorkbook As Object

 

Dim RowNum As Integer

Dim Header As Boolean

Dim elem As AcadEntity

Dim Array1 As Variant

Dim Count As Integer

 

' Launch Excel.

Set Excel = New Excel.Application

 

' Create a new workbook and find the active sheet.

Set ExcelWorkbook = Excel.Workbooks.Add

Set ExcelSheet = Excel.ActiveSheet

ExcelWorkbook.SaveAs "CollaborateursAttr.xls"

 

RowNum = 1

Header = False

' Iterate through model space finding

' all block references.

 

For Each elem In ThisDrawing.ModelSpace

 

With elem

 

' When a block reference has been found,

' check it for attributes

If StrComp(.EntityName, "AcDbBlockReference", 1) _

= 0 Then

If .Layer = "-07-NOMS-PERSONNES" Then

If .HasAttributes Then

' Get the attributes

Array1 = .GetAttributes

' Copy the Tagstrings for the

' Attributes into Excel

For Count = LBound(Array1) To UBound(Array1)

If Header = False Then

If StrComp(Array1(Count).EntityName, _

"AcDbAttribute", 1) = 0 Then

ExcelSheet.Cells(RowNum, _

Count + 1).Value = _

Array1(Count).TagString

End If

End If

Next Count

RowNum = RowNum + 1

For Count = LBound(Array1) To UBound(Array1)

ExcelSheet.Cells(RowNum, Count + 1).Value _

= Array1(Count).TextString

Next Count

Header = True

End If

End If

End If

End With

 

Next elem

 

Excel.Application.Quit

End Sub

 

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité