VBA Excel : Extraire les attributs d'un bloc AutoCAD spécifique

Comment modifier un script VBA, piloté depuis Excel, pour n’extraire que les attributs d’un type de bloc AutoCAD spécifique (identifié par son nom) ? L’objectif est d’éviter l’extraction de tous les blocs du dessin (symboles, cartouches, etc.) pour obtenir un tableau Excel propre et ciblé.

Pour cibler l’extraction d’attributs sur un seul type de bloc depuis un script VBA Excel, la méthode la plus efficace consiste à modifier le filtre de sélection (SelectionSet) pour qu’il ne retienne que les blocs portant un nom précis. Voici la démarche détaillée, ainsi que des alternatives natives à AutoCAD.

Solution principale : Modification du filtre VBA

Le code VBA fourni utilise un jeu de sélection pour récupérer tous les objets de type « INSERT » (références de bloc). Il faut enrichir ce filtre pour y ajouter le critère du nom du bloc.

1. Comprendre le filtre de sélection initial

Le code original utilise un filtre simple pour sélectionner toutes les insertions de bloc :

Dim FilterType(0) As Integer
Dim FilterData(0) As Variant
' ...
FilterType(0) = 0 ' Code de groupe DXF 0 pour le type d'entité
FilterData(0) = "INSERT" ' Valeur : on cherche les blocs

2. Modifier le code pour filtrer par nom de bloc

Pour ajouter un filtre sur le nom du bloc, il faut utiliser le code de groupe DXF 2, qui correspond au nom du bloc. Le tableau de filtres doit être redimensionné pour accepter ce critère supplémentaire.

Remplacez le code de filtrage par celui-ci, en adaptant "MonBlocCible" avec le nom exact de votre bloc :

' Redimensionner les tableaux pour accueillir 2 critères
Dim FilterType(1) As Integer
Dim FilterData(1) As Variant

' Critère 1 : Type d'entité = INSERT (Référence de bloc)
FilterType(0) = 0
FilterData(0) = "INSERT"

' Critère 2 : Nom du bloc (Code DXF 2)
FilterType(1) = 2
FilterData(1) = "MonBlocCible" ' <-- REMPLACEZ PAR LE NOM DE VOTRE BLOC

' Appliquer le filtre complet au jeu de sélection
SelSet.Select acSelectionSetAll, , , FilterType, FilterData

En appliquant cette modification dans la sub ExtraireAttributs(), le script ne parcourra que les occurrences du bloc nommé « MonBlocCible », résolvant ainsi le problème d’un tableau Excel surchargé.

Alternatives et Bonnes Pratiques

Bien que la modification du VBA réponde directement à la question, il existe des outils intégrés à AutoCAD qui réalisent des tâches similaires et sont souvent plus robustes.

1. Commande EXTRACTDONNEES (DATAEXTRACTION)

  • Description : C’est l’outil le plus puissant d’AutoCAD pour l’extraction de données. Il dispose d’un assistant graphique qui permet de filtrer les objets par type, par nom de bloc, par calque, etc., et de choisir précisément quels attributs et propriétés extraire.
  • Avantages : Très flexible, pas de programmation requise, export possible vers Excel (.xls, .csv) ou un tableau AutoCAD.
  • Inconvénient : L’opération est principalement une exportation (unidirectionnelle). La réimportation des données modifiées dans Excel n’est pas native.

2. Commandes ATTOUT / ATTIN (Express Tools)

  • Description : Ces commandes, incluses dans les Express Tools, sont conçues spécifiquement pour l’export/import d’attributs.
    • ATTOUT exporte les attributs des blocs sélectionnés dans un fichier texte délimité.
    • ATTIN importe les données d’un fichier texte modifié pour mettre à jour les attributs dans le dessin.
  • Avantages : Simple, rapide et bidirectionnel (export puis import).
  • Inconvénient : Nécessite l’installation des Express Tools. Le format est un fichier texte, demandant une manipulation dans Excel pour l’ouvrir et l’enregistrer correctement.

En résumé, la modification du filtre VBA est la solution la plus directe pour votre script existant. Pour des besoins futurs, l’exploration des commandes EXTRACTDONNEES et ATTOUT est fortement recommandée.