Aller au contenu

extraction d\'attributs d\'un cartouche


Messages recommandés

Posté(e)

Bonjour

 

Je cherche à faire une extraction d'attributs d'un cartouche vers une BD Access. J'ai pas mal avancé, et dans le codage, je devrais me débrouiller, sauf que je voudrais faire untruc un peu plus compliqué : à partir de certains attributs, dont on peut tester le nom avec des valeurs présentes dans des tableaux, j'aimerais construire un tableau multidimensionnel en mémoire avec les valeurs des attributs retenus. C'est là oùu j'ai un problème, je n'arrive pas à faire fonctionner ce code.

Je vous donne le code :

 Sub ExtraireCartouche()

Dim cartouche As AcadBlockReference
Dim obj As AcadEntity
Dim dbplan As Object
Dim plan As Recordset
Dim sset As Object
Dim attributeObj As AcadAttribute
Dim varAttributes As Variant
Dim strAttributes, projet As String
Dim proy As Boolean
Dim req As String
Dim i, ligne, j, k, colonne As Integer
Dim indice(0 To 4, 0 To 5)
Dim lettre, champ As Variant


Set sset = ThisDrawing.SelectionSets.Add("SS3")
End If
' Prompt the user to select objects
sset.SelectOnScreen
For Each obj In sset
Set cartouche = obj
Next
varAttributes = cartouche.GetAttributes
lettre = Array("A", "B", "C", "D", "E", "F")
champ = Array("fecha", "puest", "autor", "contr")
proy = False
For i = LBound(varAttributes) To UBound(varAttributes)
MsgBox "nom de l'attribut : " & varAttributes(i).TagString
'remplissage du tableau "indice" avec les valeurs des champs d'indice
'en cherchant à quelle coordonnée (ligne, colonne)
'ils doivent se trouver dans le tableau
   For j = 0 To 5
   If Right(varAttributes(i).TagString, 1) = lettre(j) Then
       'si l'étiquette de l'attribut est de longueur 1,
       'alors on est à la première ligne du tableau "indice",
       'qui contient la valeur de l'indice
       MsgBox "boucle : lettre " & Right(varAttributes(i).TagString, 1) & " J = " & j
       If Len(varAttributes(i).TagString) = 1 Then
           ligne = 0
           colonne = j
           MsgBox "indice " & lettre(j)
       'sinon on cherche dans le tableau champ la valeur de la colonne
       Else
           For k = 0 To 3
               If Left(varAttributes(i).TagString, 5) = champ(k) Then
               ligne = k + 1
               colonne = j
               End If
           Next
           k = 0
       End If
   End If
   Next
   j = 0
If colonne <> "" And ligne <> "" Then
   indice(ligne, colonne) = varAttributes(i).TextString
   MsgBox ("placement de " & varAttributes(i).TextString & " à la ligne " & ligne & " et à la colonne " & colonne)
End If

affichtab (indice)

ThisDrawing.SelectionSets("SS3").Delete

End Sub

 

La procédure affichtab sert à afficher le tableau pour le tester :

 

 Sub affichtab(bat As Variant)

Dim text As String
For i = 0 To 4
   For j = 0 To 5
   text = text & "|" & " " & indice(i, j)
   Next
   text = text & vbCrLf
Next
MsgBox text
End Sub

 

En fait, il ne se passe rien, alors je ne sais pas si le tableau est rempli correctement, ou la procédure affichtab() ne marche pas ou s'il y a un problème autre.

 

Merci d'avance.

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é