x_all Posté(e) le 28 juin 2006 Posté(e) le 28 juin 2006 boujour les cadipciens :D j'ai un travail trés répétitif de mise a jour d'attribut a faire.... j'ai donc chercher a faire ça avec excel... j'ai créer des blocs avec un N° de reférence plus les atributs que je doit metre a jour...heureux utilisateur d'autocad 2006, j'ai essayer d'utiliser "ExcelLink.dvb" 1er soucis, le script ne reconaissait pas ma verstion d'excel (office 2003) j'ai donc rajouter : '--------------------------------- ' Try to find a version of Excel 11 '--------------------------------- ' Attempt to activate an existing instance Err.Clear Set ExcelServer = GetObject(, "Excel.Application.11") If Err.Number = 0 Then ExcelVer = 11 GoTo FINISH End If ' Create a new instance Err.Clear Set ExcelServer = CreateObject("Excel.Application.11") If Err.Number = 0 Then ExcelVer = 11 GoTo FINISH End If dans le code .. depuis, ça marche trés bien, .... a l'exportation. un clic sur le bouton d'export ouvre excel, et rempli un tableau avec le listing de mes blocsmais la ou ça se corse, c a l'importation... quand je veux faire une mise a jour de mes bloc aprés corection des références dans excel j'ai un mesage pas cool: " ImportData error 9 (l'indice n'appartien pas à la selection.) from ExcelLink" mes maigres notions de vba ne m'ont pas permis de trouver l'origine de ce bug... en effet, ce message semble pas etre ds le code de la macro.... le mess vient t il d'excel?seulle le 1ere attribut que je corige est mis a jour... bref je sèche... si qqu1 a réussi a faire marcher cette macro avec excel 2003 .... merci d'avance [Edité le 28/6/2006 par x_all] [Edité le 28/6/2006 par x_all] quelques trucs sur autocad
x_all Posté(e) le 28 juin 2006 Auteur Posté(e) le 28 juin 2006 semble que je suis pas encore bien au pts avec votre forum aussi <acronym class=dict title=je recopie le post qu j'ai du mal à éditer.... boujour les cadipciens :D j'ai un travail trés répétitif de mise a jour d'attribut a faire.... j'ai donc chercher a faire ça avec excel... j'ai créer des blocs avec un N° de reférence plus les atributs que je doit metre a jour...heureux utilisateur d'autocad 2006, j'ai essayer d'utiliser "ExcelLink.dvb" 1er soucis, le script ne reconaissait pas ma verstion d'excel (office 2003) j'ai donc rajouter : '--------------------------------- ' Try to find a version of Excel 11 '--------------------------------- ' Attempt to activate an existing instance Err.Clear Set ExcelServer = GetObject(, "Excel.Application.11") If Err.Number = 0 Then ExcelVer = 11 GoTo FINISH End If ' Create a new instance Err.Clear Set ExcelServer = CreateObject("Excel.Application.11") If Err.Number = 0 Then ExcelVer = 11 GoTo FINISH End If dans le code .. depuis, ça marche trés bien, .... a l'exportation. un clic sur le bouton d'export ouvre excel, et rempli un tableau avec le listing de mes blocsmais la ou ça se corse, c a l'importation... quand je veux faire une mise a jour de mes bloc aprés corection des références dans excel j'ai un mesage pas cool: " ImportData error 9 (l'indice n'appartien pas à la selection.) from ExcelLink" mes maigres notions de vba ne m'ont pas permis de trouver l'origine de ce bug... en effet, ce message semble pas etre ds le code de la macro.... le mess vient t il d'excel?seulle le 1ere attribut que je corige est mis a jour... bref je sèche... si qqu1 a réussi a faire marcher cette macro avec excel 2003 .... merci d'avance quelques trucs sur autocad
x_all Posté(e) le 28 juin 2006 Auteur Posté(e) le 28 juin 2006 bhouuuu !!! personne ne m'aime.... je met la fonction qui le pose pb... Sub ImportData(X As Variant) ' X is only used to suppress this routine from the Run Macro dialog ' We have to late-bind the object because the user ' might not have Excel installed Dim objWorksheet As Object, objCell As Object Dim objAutoCad As Object, objModelSpace As AcadModelSpace, objEntity As Object Dim iRowNum As Long Dim TableData As Variant Dim iCount As Long Dim Header As Boolean Dim RowCount As Long Dim CurrentItem As String ' AutoCAD Table Index Const TABLE_ITEM_NUMBER = 0 Const TABLE_PARTNUMBER = 1 Const TABLE_DESCRIPTION = 2 Const TABLE_QUANTITY = 3 ' Excel column numbers Const CELL_ITEM_NUMBER = 1 Const CELL_PARTNUMBER = 2 Const CELL_DESCRIPTION = 3 Const CELL_QUANTITY = 4 On Error GoTo HandleErr ' Connect to Excel ConnectExcel 1 If ExcelServer Is Nothing Then GoTo ExitHere End If ' Open the parts list in Excel On Error GoTo NO_BOM_WORKSHEET Set objWorksheet = ExcelServer.ActiveWorkbook.Worksheets(BOM_SHEET_NAME) On Error GoTo HandleErr ' Retrieve the AutoCAD modelspace, so we can look ' at the various entities in this drawing Set objAutoCad = ThisDrawing.Application Set objModelSpace = objAutoCad.ActiveDocument.ModelSpace() ' Walk through spreadsheet and grab data for our table in the drawing ' Note that we start at row 2 since we don't allow users to modify ' the header For iRowNum = 2 To 26 ' Table numbers are hardcoded for this sample CurrentItem = objWorksheet.Cells(iRowNum, CELL_ITEM_NUMBER).Value ' Look for corresponding table object and update data For Each objEntity In objModelSpace With objEntity If StrComp(.EntityName, "AcDbBlockReference", 1) = 0 Then If .HasAttributes Then TableData = .GetAttributes ' Make sure we have the correct table entry and ' update with new data from Excel If TableData(TABLE_ITEM_NUMBER).TextString = CurrentItem Then TableData(TABLE_PARTNUMBER).TextString = objWorksheet.Cells(iRowNum, CELL_PARTNUMBER).Value TableData(TABLE_DESCRIPTION).TextString = objWorksheet.Cells(iRowNum, CELL_DESCRIPTION).Value TableData(TABLE_QUANTITY).TextString = objWorksheet.Cells(iRowNum, CELL_QUANTITY).Value End If End If End If End With Next objEntity Next iRowNum ExitHere: ' Regenerate to see new table ThisDrawing.Regen acAllViewports Exit Sub NO_BOM_WORKSHEET: MsgBox "The AutoCAD bill of materials Worksheet was not found in the active Excel Workbook." & vbCrLf & vbCrLf & _ "Please load or regenerate the Workbook containing this Worksheet and make it the active Workbook.", vbExclamation Exit Sub HandleErr: MsgBox "ImportData error " & Err.Number & " (" & Err.Description & ") from " & _ Err.Source, vbCritical, conDemoName End Sub j'ai bricoler pas mal et chercher a comprendre... mais je suis pas programmeur pour 2 sous...un truc que je comprend particuliairement pas c'est cette partie ' AutoCAD Table Index Const TABLE_ITEM_NUMBER = 0 Const TABLE_PARTNUMBER = 1 Const TABLE_DESCRIPTION = 2 Const TABLE_QUANTITY = 3 ' Excel column numbers Const CELL_ITEM_NUMBER = 1 Const CELL_PARTNUMBER = 2 Const CELL_DESCRIPTION = 3 Const CELL_QUANTITY = 4 ..... en effet que si je change Const TABLE_QUANTITY = 2, ça tourne.... enfin pas comme je le souhaite... car, mes objets comportent 3 atributs, et en changeant la variable seul les 2 1ere sont mis a jour...(j'envoie les plans avec un index, et on me renvoie les 2 attibuts positioner...) je capte pas pourquoi ces valeurs sont codée en dur...sauf peut etre que c'est un fichier d'exemple et que j'aurai pas du m'attendre a ce que ça fonctionne du 1er coup <acronym class=dict title=indem pour For iRowNum = 2 To 26, là je teste avec 6 objets ça pase mais le vrai plan comporte 100 ou 150 projecteur a réfférencer...bon c'est pas le plus compliquer a modifier si ya un gourou du vba qui pase par se message je serai heureux qu'il m'éclaire un peu... je patauge .. :( d'autant que ce genre de méga macro sera utile a plus d'un je crois... [Edité le 28/6/2006 par x_all][Edité le 28/6/2006 par x_all] [Edité le 28/6/2006 par x_all] quelques trucs sur autocad
Patrick_35 Posté(e) le 28 juin 2006 Posté(e) le 28 juin 2006 SalutCela aurait été en vlisp, je t'aurais volontier donné un coup de main et de plus, tu aurais du poster ton message dans le rubrique VBA, tu aurais eu peut-être plus de réponses @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
x_all Posté(e) le 1 juillet 2006 Auteur Posté(e) le 1 juillet 2006 j'ai pas eu plus de réponce dans le forun vba... mais un bon poto m'a trouvé la chenille... il faut supprimer la ligne "TableData(TABLE_QUANTITY).TextString = objWorksheet.Cells(iRowNum, CELL_QUANTITY).Value" me demandez pas pourquoi.. ni surtout pourquoi il y avait cette ligne ... mais ça marche ... :casstet: quelques trucs sur autocad
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