Gelés tous les calques sauf un en macro vba [Résolu]

fabdu91630 22 Messages postés vendredi 20 mai 2011Date d'inscription 31 mai 2011 Dernière intervention - 18 mai 2011 à 14:15 - Dernière réponse : pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention
- 27 mai 2011 à 11:03
Bonjour à tous,

J'explique ce que je veux faire :

J'ai actuellement un script qui me permet de générer, d'assembler plusieurs plans pour n'en faire qu'un que l'on appel plan générer (regroupement de plan) pour une autre application sous autocad 2010. Seulement, pour ce que je veux faire, j'ai besoin d'une macro en VBA qui me permette de prendre le plan générer, de geler les calque que je n'ai pas besoin et enfin qu'il soit exporter en .wmf et tous cela en automatique (via macro).

Je préfère prévenir, je suis novice !!!

Je vous remercie d'avance pour votre aide,

Fabdu91630
Afficher la suite 

Votre réponse

14 réponses

Meilleure réponse
fabdu91630 22 Messages postés vendredi 20 mai 2011Date d'inscription 31 mai 2011 Dernière intervention - 27 mai 2011 à 08:47
3
Merci
Bonjour,

J'ai eu ma réponse, je la poste pour ce qui le souhaite, elle est ci-dessous :

Sub GelerTousLesCalquesSaufDeux()
Dim calque As AcadLayer

'Parcourir tous les calques dans la collection Calques du dessin :
For Each calque In ThisDrawing.Layers
'Si le nom du calque n'est pas égal au nom des calques qu'on ne veut pas geler :
If calque.Name <> "Nom calque 1" And calque.Name <> "Nom calque 2" Then
'Geler le calque sauf le calque 0 qui ne peut pas être gelé
If calque.Name <> "0" Then calque.Freeze = True
End If
Next
End Sub

Merci encore à tous.

Merci fabdu91630 3

codes-sources a aidé 81 internautes ce mois-ci

Commenter la réponse de fabdu91630
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 18 mai 2011 à 14:33
0
Merci
Salut

Autocad = objets propres à ce progiciel - difficile de te répondre

N'existe t-il pas d'enregistreur de macro, sous Autocad ?

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Commenter la réponse de cs_Jack
fabdu91630 22 Messages postés vendredi 20 mai 2011Date d'inscription 31 mai 2011 Dernière intervention - 18 mai 2011 à 14:52
0
Merci
Effectivement, sur autocad j'ai dans
outils>macro
> macro...
charger projet...
gestionnaire Vba...
Editeur Visual Basic
Commenter la réponse de fabdu91630
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 18 mai 2011 à 15:04
0
Merci
Ok, et bien tu enregistres une macro pendant que tu manipules tes calques, et le code VBA sera généré dans un module.
Tu pourras éventuellement le modifier pour y faire apparaitre tes variables ou faire des boucles.
Commenter la réponse de cs_Jack
fabdu91630 22 Messages postés vendredi 20 mai 2011Date d'inscription 31 mai 2011 Dernière intervention - 18 mai 2011 à 15:14
0
Merci
Erreur de ma part, il y a editeur mais pas un enregistreur.
Commenter la réponse de fabdu91630
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 18 mai 2011 à 15:48
0
Merci
pour les couches tu as
ThisDrawing.Layers("NomDeLaCouche").LayerOn = False'pour masquer une couche
ThisDrawing.Layers("NomDeLaCouche").Freeze = True'pour la geler
ThisDrawing.Layers("NomDeLaCouche").Lock = True'pour la verrouiller
ThisDrawing.Layers("NomDeLaCouche").Plottable = False'pour la supprimer à l'impression


pour le .wmf je ne me suis jamais penché dessus donc je n'ai pas la réponse mais en cherchant bien dans l'aide tu devrais trouver



si c'est la solution, penser : REPONSE ACCEPTEE
Commenter la réponse de pile_poil
fabdu91630 22 Messages postés vendredi 20 mai 2011Date d'inscription 31 mai 2011 Dernière intervention - 18 mai 2011 à 18:18
0
Merci
Pile_poil:
Pour ta deuxieme ligne (geler), dois-tapje taper une ligne pour chaque calques ou y a-t-il un code pour dire geler tous les calques sauf le calques que je veux garder ?
Commenter la réponse de fabdu91630
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 18 mai 2011 à 18:33
0
Merci
Sub test()
    Dim i As Integer
    For i = 0 To ThisDrawing.Layers.Count - 1
        If ThisDrawing.Layers(i).Name = "NomDeLaCouche" Then
            ThisDrawing.Layers(i).Freeze = False
        Else
            ThisDrawing.Layers(i).Freeze = True
        End If
    Next i
End Sub



si c'est la solution, penser : REPONSE ACCEPTEE
Commenter la réponse de pile_poil
fabdu91630 22 Messages postés vendredi 20 mai 2011Date d'inscription 31 mai 2011 Dernière intervention - 20 mai 2011 à 12:34
0
Merci
Bonjour,

J'ai essayé et ça ne marche pas, mais comme je suis novice [pour rappel :)] je ne dois pas être doué.

Cordialement,
Commenter la réponse de fabdu91630
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 20 mai 2011 à 20:19
0
Merci
tu as essayé comment ?
en remplaçant "NomDeLaCouche" par le nom d'une couche de ton dessin ?
en mettant la macro dans un module?
car ce code je ne l'ai pas pondu ici mais directement dans autocad et je l'ai testé il fonctionne parfaitement



si c'est la solution, penser : REPONSE ACCEPTEE
Commenter la réponse de pile_poil
fabdu91630 22 Messages postés vendredi 20 mai 2011Date d'inscription 31 mai 2011 Dernière intervention - 25 mai 2011 à 05:57
0
Merci
Je vais refaire le test aujourd'hui. Si tu as fais le test dans autocad, je devrai y arriver.je te remercie de ton aide pile_poil.
Commenter la réponse de fabdu91630
fabdu91630 22 Messages postés vendredi 20 mai 2011Date d'inscription 31 mai 2011 Dernière intervention - 25 mai 2011 à 09:07
0
Merci
Bonjour Pile_poil,

Donc, je viens de refaire le test avec le code que tu ma donné ci-dessous :

Y-EQP-SI étant le calque que je souhaite garder.

Sub test()
Dim i As Integer
For i = 0 To ThisDrawing.Layers.Count - 1
If ThisDrawing.Layers(i).Name = "Y-EQP-SI" Then
ThisDrawing.Layers(i).Freeze = False
Else
ThisDrawing.Layers(i).Freeze = True
End If
Next i
End Sub

Lorsque j'éxecute la macro j'ai un message d'erreur qui s'affiche soit: Calque incorrect
J'ai re vérifier le nom du calque est bon.
???
Commenter la réponse de fabdu91630
fabdu91630 22 Messages postés vendredi 20 mai 2011Date d'inscription 31 mai 2011 Dernière intervention - 26 mai 2011 à 11:20
0
Merci
Bonjour Pile_poil,

Pourrais-tu me dire sous quel version autocad tu as essayé car je suis sous 2010 et dès que je mais le script dans un module j'ai toujours la réponse : Calque incorrect.

HELP
Commenter la réponse de fabdu91630
pile_poil 682 Messages postés vendredi 6 avril 2007Date d'inscription 4 août 2012 Dernière intervention - 27 mai 2011 à 11:03
0
Merci
Exact
en fait j'avais testé la macro sur bricscad qui lui n'interdit pas le gel de la couche "0"
j'ai vérifié sur autocad 2008 et 2010 et sur l'un comme l'autre il faut exclure cette couche
dnas le meme ordre d'idée il y a la couche DefPoint qui peut poser le même probleme mais je n'ai pas testé

mais tu aurais pu faire plus simple en intégrant le calque "0" dans le if avec les deux calques que tu veux conserver
Sub GelerTousLesCalquesSaufDeux()
    Dim calque As AcadLayer
    For Each calque In ThisDrawing.Layers
        If calque.Name <> "Nom calque 1" And calque.Name <>  Nom calque 2"  And calque.Name <> "0" Then
            calque.Freeze = True
        End If
    Next
End Sub



si c'est la solution, penser : REPONSE ACCEPTEE
Commenter la réponse de pile_poil

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.