tecnopat Posté(e) le 22 février 2008 Posté(e) le 22 février 2008 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.
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