VBA utilisation

VBA utilisation

lanthane57la
Contributor Contributor
636 Visites
5 Réponses
Message 1 sur 6

VBA utilisation

lanthane57la
Contributor
Contributor

Bonjour,
Après avoir cherché ici et là je tourne en rond donc je demande votre aide.
Le but est simple utiliser ce programme dvb
-----
>> j'ai créé dans option > fichier support un dossier nommé. vba.
>> onglet gérer > macro > gestionnaire VBA ext....
"pif paf ça ne fonctionne pas"
---
bon, il est clair que je n'ai pas la bonne démarche.

Merci pour votre aide

'-------------------------------------------------------------------
'Cette macro liste les calques présents dans le dessin en écrivant
'leur nom, type de trait, épaisseur de trait et couleur dans
'l'espace objet. Chaque ligne sera rangée sur son calque respectif
'Auparavant, la macro demandera de saisir l'emplacement de la liste
'à l'écran.
'-------------------------------------------------------------------
'V.1 14/09/2011 - AutoCAD et VBA - http://autocadvba.canalblog.com/
'-------------------------------------------------------------------

Sub ListerCalques()
'Liste des variables
Dim Calque As AcadLayer
Dim objTxt As AcadText
Dim interligne As Double
Dim htTexte As Double
Dim NomCalque As String
Dim TypeLigne As String
Dim EpLigne As String
Dim Couleur As String
Dim Texte As String
Dim PtIns As Variant

On Error GoTo ListerCalques_Error

'Initialisation de la macro
    'Trouve la hauteur de texte du style courant
    htTexte = ThisDrawing.ActiveTextStyle.Height
    'Si la hauteur=0, alors choisir la hauteur 2
    If htTexte = 0 Then htTexte = 2.5
    'Valeur de l'interligne
    interligne = 1.5
    'Demande de l'emplacement de la liste
    PtIns = ThisDrawing.Utility.GetPoint(, "Saisir l'emplacement de la liste")
   
'Parcours de la liste des calques présents dans le dessin
    For Each Calque In ThisDrawing.Layers
        With Calque
            'Détermination du nom du calque
            NomCalque = .Name
            'Détermination du nom de type de ligne
            TypeLigne = .Linetype
            'Détermination de l'épaisseur de la ligne
            If .Lineweight = -3 Then '-3 est le code pour les lignes Ep Par défaut
                EpLigne = "Par défaut"
            Else 'Sinon, le code de l'épaisseur est donné en 100e
                'Il faut le convertir pour trouver des millimètres
                'et le formater pour obtenir 2 chiffres après la virgule
                EpLigne = Format(CStr(.Lineweight / 100), "0.00")
            End If
            Select Case .color 'Détermination de la couleur
                'ACAD possède 6 variables définissant les couleurs de base
                'On traduit les variables en français.
                Case acWhite: Couleur = "Blanc"
                Case acYellow: Couleur = "Jaune"
                Case acGreen: Couleur = "Vert"
                Case acRed: Couleur = "Rouge"
                Case acCyan: Couleur = "Cyan"
                Case acBlue: Couleur = "Bleu"
                Case acMagenta: Couleur = "Magenta"
                'Les autres couleurs, on indique leur numéro
                Case Else: Couleur = "N°" & CStr(.color)
            End Select
           
            'Comosition de la ligne. Chaque paramètre est séparé par --
            Texte = NomCalque & " -- " & TypeLigne & " -- " & EpLigne & " -- " & Couleur
            'Insertion du texte dans l'espace objet
            Set objTxt = ThisDrawing.ModelSpace.AddText(Texte, PtIns, htTexte)

            objTxt.Layer = .Name 'On place le texte créé dans son calque
            objTxt.color = acByLayer 'On règle la couleur le texte sur Par calque
            objTxt.Linetype = "BYLAYER" 'On règle le type de trait du texte sur Par calque
            objTxt.Lineweight = acLnWtByLayer 'On règle l'épaisseur du texte sur Par calque

            'On modifie la valeur y du point d'insertion en la soustrayant de
            'la hauteur du texte courant x interligne choisie.
            PtIns(1) = PtIns(1) - htTexte * interligne
        End With
    Next 'Traitement du calque suivant

'Fin de la macro
On Error GoTo 0
Exit Sub

'Gestionnaire d'erreur :
ListerCalques_Error:
end sub

 

0 J'aime
Solutions acceptées (1)
637 Visites
5 Réponses
Replies (5)
Message 2 sur 6

lanthane57la
Contributor
Contributor

Bon ben...
J'ai réussi à faire fonctionner ce code vba, comment, je ne sais pas.
À suivre

end sub

0 J'aime
Message 3 sur 6

didier_lourdelle
Collaborator
Collaborator
Solution acceptée

Bonjour

un tuto rapide


🔧 Exécution d’un module VBA dans AutoCAD Étapes détaillées

  1. Ouvrir l’environnement VBA
    • Dans la ligne de commande AutoCAD, tapez :
    VBAIDE

    Cette commande ouvre l’IDE (Environnement de Développement VBA).

  2. Créer un nouveau module
    • Dans l’IDE, allez dans le menu :
    Insertion → Module

    Un nouveau module vide est créé.

  3. Insérer le code VBA

    Copiez-collez le code souhaité dans le module.

  4. Sauvegarder le projet

    Enregistrez le fichier sous le format :

    NomDuProjet.DVB
  5. Exécuter le module dans AutoCAD

    Revenez dans AutoCAD et, sur la ligne de commande, tapez :

    VBARUN

    Sélectionnez le fichier .DVB précédemment sauvegardé.

  6. Lancer la macro

    Dans la liste des macros disponibles, exécutez :

    Global1!Module1.ListerCalques

💡 Remarque

Les noms de projet et de module peuvent varier selon votre organisation :

GlobalXX!ModuleYY

Adaptez-les en fonction de vos propres modules.


Résumé rapide

Étape Commande Description

1VBAIDEOuvre l’éditeur VBA
2Insertion → ModuleCrée un module vide
3Coller le code VBA
4Sauvegarder le fichier .DVB
5VBARUNLance le module
6Global1!Module1.ListerCalquesExécute la macro

 

Didier Lourdelle EESignature

Industrialisation AutoCAD / AutoCAD LT – 2D / 3D
Architectures AutoLISP & .NET maintenables
Références industrielles, notamment AutoCAD Electrical
(contexte exigeant, architectures éprouvées)
Blog : Trucs & Astuces sur AutoCAD LT (2024+)

Message 4 sur 6

regis-leduc
Enthusiast
Enthusiast

Bonjour,

 je ne comprend pas l'intérêt de cette macro.

Dans le gestionnaire de calque, "ctrl A" "ctr C" puis "ctrl V" dans Autocad (ou dans excel, les colonnes restent rangées).

Tu as ainsi une liste exploitable.

Message 5 sur 6

manon_puel
Community Manager
Community Manager

Bonjour @lanthane57la, avez-vous trouvé une solution à votre problème ? Merci!


Manon Puel animatrice de la communauté francophone
Message 6 sur 6

lanthane57la
Contributor
Contributor

Ce programme extrait du gestionnaire de calque les calques de mes gabarits.

  1. Dans un premier temps, il apparaît dans l'espace objet.
  2. Là, je le place dans un bloc. Bien cacher en tout petit un bloc que je ne purgerais jamais un cartouche par exemple.
  3. Du coup, cela réduit les chances de ne pas dé-zinguer mon gestionnaire de calque, car même les calques inutilisés doivent rester..
    ---
    Aussi le calque zéro n'est pas purgeable si je savais comment je n'aurais pas besoin de cette macro.
0 J'aime