CadXP: Gelés tous les calques sauf 2 en macro VBA - CadXP

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Gelés tous les calques sauf 2 en macro VBA

#1 Guest_fabdu91630_*

  • Groupe : Invités

Posté 26 mai 2011 - 13:24

Bonjour,

Je suis novice dans la programmation VBA et j'ai besoin d'aide :

J'ai besoin de créer une macro en VBA qui me permettrai de geler tous les calques sauf 2.
J'aifais cette petite macro mais ne fonctionne pas :
Sub test()

Dim i As Integer


For i = 0 To ThisDrawing.layers.Count - 1

If ThisDrawing.layers.objetName = "Y-EQP-SI" Then

ThisDrawing.layers(i).Freeze = False
Else
ThisDrawing.layers(i).Freeze = True
End If
Next i
End Sub

Quelqu'un aurait-t-il une idée ?

Cordialement,

Fabdu91630
0

#2 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2162
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 26 mai 2011 - 15:28

Bonjour,

Je n'y connais pas grand chose en VBA, mais à mon avis il faudrait modifier cette partie :

If ThisDrawing.layers.objetName = "Y-EQP-SI" Then


Peut-être par :

If ThisDrawing.layers(i).Name = "Y-EQP-SI" Then

0

#3 Guest_fabdu91630_*

  • Groupe : Invités

Posté 26 mai 2011 - 16:55

Bonjour Bryce,

Je viens d'essayer, il cela me marque "calque incorrect".
j'ai revérifier et le nom du calque est bien le bon.

???
0

#4 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2162
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 26 mai 2011 - 22:24

Attention à ne pas essayer de geler le calque courant.
De plus, apparemment il n'aime pas qu'on essaie de mettre la propriété Freeze à False quand elle est déjà à False... :casstet:

Le code ci-dessous a l'air de fonctionner :

Sub test()


Dim i As Integer

Dim l As AcadLayer


For i = 0 To ThisDrawing.Layers.Count - 1


    Set l = ThisDrawing.Layers(i)

    

    If l.Name <> "Y-EQP-SI" And l.Name <> ThisDrawing.ActiveLayer.Name Then

    

        l.Freeze = True

    

    ElseIf l.Freeze = True Then

    

        l.Freeze = False

    

    End If

Next i

End Sub

0

#5 Guest_fabdu91630_*

  • Groupe : Invités

Posté 27 mai 2011 - 07:44


Merci à tous, j'ai trouver la réponse que je voulais, pour ce qui veulent 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
0

#6 L'utilisateur est hors-ligne   bryce 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2162
  • Inscrit(e) : 03-mars 06
  • Location68 Mulhouse

Posté 27 mai 2011 - 10:37

On peut très bien geler le calque 0, c'est le calque courant qui ne peut pas être gelé. ;)
0

#7 Guest_fabdu91630_*

  • Groupe : Invités

Posté 27 mai 2011 - 10:40

Tous a fait, je suis d'accord. Je parlais du calque zero car de base c'est lui est courant.
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)