IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Choix du document Autocad au lieu de 'ActiveDocument' [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Apprenti
    Inscrit en
    Février 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2012
    Messages : 49
    Par défaut Choix du document Autocad au lieu de 'ActiveDocument'
    Bonjour,

    Mon programme communique avec autoCad et j'ai plusieurs fichier autocad ouvert et je voudrais choisir celui dans lequel je veux travailler.
    Je voudrais remplacer 'ActiveDocument' par le l'intitulé de mon fichier .dwg :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub ChoixDeZone_Click()
     
    Dim NewZone As String
    NewZone = ThisWorkbook.Path & "\Zones\" & Cells(5, 13) & ".dwg"
     
    If Par_zone = True Then
     
        Set AcadDoc = GetObject(, "Autocad.application").ActiveDocument
        Set AcadObj = GetObject(, "Autocad.application")
     
        Call SetForegroundWindow(FindWindowA(vbNullString, AcadObj.Caption))
        AutoCAD.Application.ActiveDocument.SendCommand ("(load ""selp"") ")
        AutoCAD.Application.ActiveDocument.SendCommand ("ssoc ")
        Set objSelSet = AutoCAD.Application.ActiveDocument.ActiveSelectionSet
     
        AutoCAD.Application.ActiveDocument.Wblock NewZone, objSelSet
     
    End If
     
    End Sub
    Merci.

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    activedocument doit-être la même chose qu'activesheet (renvoie un objet /cf aide vba) pour Excel, il te faut donc utiliser une variable objet pour pouvoir désigner le document en dynamique

    vois ce tutoriel :

    http://silkyroad.developpez.com/VBA/LesVariables/#LII-K

    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

  3. #3
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Tu peux activer la référence "AutoCAD xxxx Type Library" et ainsi disposer de toute une bibliothèque d'objets liée à Autocad.

    Pour faire référence à un plan (ouvert) bien précis, tu peux faire (après avoir activé la référence) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AutoCAD.Documents("Mon_Plan.dwg").SendCommand ("Ma_Commande")

  4. #4
    Membre averti
    Homme Profil pro
    Apprenti
    Inscrit en
    Février 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Apprenti
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Février 2012
    Messages : 49
    Par défaut
    merci pour vos réponses,

    oui j'ai activé la bibliothèque autocad, je suis plutot vers la fin de mon projet de métré automatique :-)

    merci fring pour la solution c'est exactement ce qu'il me fallait. j'ai testé, ça fonctionne très bien +1.

    Et voici le code si d'autres sont conserné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    Sub ChoixDeZone_Click()
     
    Dim NewZone As String
    NewZone = ThisWorkbook.Path & "\Zones\" & Cells(5, 13) & ".dwg"
     
    If Par_zone = True Then
     
        Set AcadDoc = GetObject(, "Autocad.application").Documents("gabarit_2.dwg")
        Set AcadObj = GetObject(, "Autocad.application")
     
        Call SetForegroundWindow(FindWindowA(vbNullString, AcadObj.Caption))
        AcadDoc.SendCommand ("(load ""selp"") ")
        AcadDoc.SendCommand ("ssoc ")
        Set objSelSet = AcadDoc.ActiveSelectionSet
     
        AutoCAD.Application.ActiveDocument.Wblock NewZone, objSelSet
     
    End If
     
    End Sub

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Avec la bibliothèque AutoCAD activée, le code ci-dessous devrait convenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Sub ChoixDeZone_Click()
    Dim NewZone As String, AcadDoc As AcadDocument
     
    NewZone = ThisWorkbook.Path & "\Zones\" & Cells(5, 13) & ".dwg"
     
    If Par_zone = True Then
        Set AcadDoc = AutoCAD.Documents("gabarit_2.dwg")
        With AcadDoc
            .SendCommand ("(load ""selp"") ")
            .SendCommand ("ssoc ")
            .Wblock NewZone, .ActiveSelectionSet
        End With
    End If
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Choix d'un logiciel pour aider a la diffusion de documents
    Par frazz dans le forum Autres Solutions d'entreprise
    Réponses: 0
    Dernier message: 16/07/2009, 16h07
  2. fusion avec choix de document et destinataire
    Par emulamateur dans le forum VBA Access
    Réponses: 31
    Dernier message: 21/04/2008, 14h57
  3. Réponses: 8
    Dernier message: 30/10/2007, 10h20
  4. [choix BDD] au lieu de ACCESS
    Par sarah67 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 09/02/2006, 13h44
  5. This.value au lieu de document.getElementById('field').value
    Par yoyot dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/03/2005, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo