VBA/Autocad Erreur procédure Property

Fermé
Alissois Messages postés 5 Date d'inscription mercredi 27 août 2014 Statut Membre Dernière intervention 28 août 2014 - 28 août 2014 à 17:59
borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 - 29 août 2014 à 10:33
Bonjour à tous,

Je cherche à réaliser une macro VBA permettant d'extraire des éléments d'un dessin Autocad.
Au moment où j'essaie d'extraire les caractéristiques géométriques d'un bloc dynamique, le message d'erreur suivant apparaît :
"La procédure Property Let n'est pas définie et la procédure Property Get n'a pas retourné d'objet"
à la ligne : Cells(xN, 4) = Bloc.InsertionPoint(0) (et la suivante d'ailleurs)
Je les ai mises en gras dans le code.
En fait, c'est comme si j'avais mal défini mon objet "point d'insertion".
Voici mon code :

Sub essai()

'Bloque le calcul automatique et l'affichage Excel
Application.ScreenUpdating = False
Application.Calculation = xlManual

'Déverrouille la page
'ActiveSheet.Protect

'Affiche les feuilles masquées
'Call Show_Sheets

'Nécessite la référence Autocad xxx Type Library (Menu Outils > Références)
Dim AcadApp As AcadApplication, AcadPlan As AcadDocument

'Création de l'objet AutoCAD dans Excel :
Set AcadApp = AcadApplication
'Si ACAD n'est pas ouvert, il faut créer une nouvelle application comme ci dessous :
'Set AcadApp = New AcadApplication

'Rend AutoCAD visible
AcadApp.Visible = True

'utilise le document ouvert :
Set AcadPlan = AcadApp.ActiveDocument

Dim Bloc As Variant
Dim varAttributes As Variant
Dim varDyn As Variant
Dim elements As Variant
Dim acadobj As Variant
Dim Calque As Variant
Dim varDyn1 As Variant
'Dim xN As Integer
Dim xF As Integer


xF = 31

'Suppression des données existantes
Sheets("ESSAI").Select
Range("A2:I100").Select
Selection.ClearContents
Cells(10, 11).Select
Selection.ClearContents
Range("M2:M100").Select
Selection.ClearContents

Cells(4, 11) = AcadPlan.GetVariable("InsUnits")

'Analyser tous les éléments du fichier Autocad
Set elements = AcadPlan.ModelSpace

For Each acadobj In elements
Set Calque = AcadPlan.Layers(acadobj.Layer)
'Supprime du jeu les objet dans des calques gelés
If Calque.Freeze = False Then
If acadobj.ObjectName = "AcDbBlockReference" Then
Set Bloc = acadobj
If Bloc.EffectiveName = "NIVEAU" Then
varAttributes = Bloc.GetAttributes
varDyn = Bloc.GetDynamicBlockProperties
Cells(xN, 2) = Bloc.EffectiveName
Cells(xN, 3) = varAttributes(0).TextString
Cells(xN, 4) = Bloc.InsertionPoint(0)
Cells(xN, 5) = Bloc.InsertionPoint(1)
For Each varDyn1 In varDyn
If varDyn1.PropertyName = "Distance1" Then
Cells(xN, 6) = varDyn1.Value
Else
If varDyn1.PropertyName = "Distance2" Then
Cells(xN, 7) = varDyn1.Value
Else
If varDyn1.PropertyName = "Distance3" Then
Cells(xN, 8) = varDyn1.Value
Else
If varDyn1.PropertyName = "Distance4" Then
Cells(xN, 9) = varDyn1.Value
End If
End If
End If
End If
Next
End If
End If
End If
Next


'Libérer la mémoire des objets ouverts
Set Bloc = Nothing
Set elements = Nothing
Set AcadApp = Nothing
Set AcadPlan = Nothing
Set acadobj = Nothing
Set LigneRep = Nothing
Set Calque = Nothing

GoTo FIN3

ERROR3:
MsgBox "Aucun fichier autocad ne semble ouvert."
GoTo FIN3

FIN3:
'Réactive le calcul automatique, l'affichage Excel et retour sur la page initiale
'Sheets("DEBUT").Select
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True

'Masque les feuilles
'Call Hide_Sheets

'Reverrouille la page
ActiveSheet.Unprotect

End Sub

Merci d'avance !
A voir également:

1 réponse

borntobealive Messages postés 138 Date d'inscription jeudi 17 juillet 2014 Statut Membre Dernière intervention 25 février 2019 7
29 août 2014 à 10:33
Tu as mis elements et acadobj en variant, excel a décider de mettre quoi comme type de variable ?

Dans le doute essaye de les déclarer comme des objects voir si ça change quoique ce soit (PS : je suis pas hyper callé en autocad/VBA)
0