rebcao Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Bonjour à Toutes et à Tous, Le VBA n'étant pas dans mes compétences, on m'a soumis ce CODE pour soit disant faire ce que fait cette MACRO : _-layer;_ON;*;_Th;*;;CODE VBA : Set ObjLayer = ThisDrawing.Layers("0") ObjLayer.LayerOn = True ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("0") ' active tous les calques sauf 'papier' For Each ObjLayer In ThisDrawing.Layers If ObjLayer.Name <> "papier" Then If ObjLayer.Freeze Then ObjLayer.Freeze = False ObjLayer.LayerOn = True End If Next ObjLayer ObjSel.SelectOnScreen FTyp, FVal Ce code n'affiche pas les calques une fois LIBERES ?! Je vous remercie pour votre aide. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
nG! Hebus Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Salut Christian, Pour faire du VBA; il reste souvent la bonne vieille façon à la mano :PDonc tu lance "enregistrer macro" , tu fait un test avec un ou plusieurs calques, puis tu ouvre la macro et tu modifie le bout de code qui te conviens pas. Amuse toi bien ;) "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
(gile) Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Salut, Je ne connais pas bien le VBA (je suis allergique à la syntaxe VB) mais je pense pouvoir dire que le code que que tu as posté est incomplet. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Salut Christian, Pour faire du VBA; il reste souvent la bonne vieille façon à la mano :PDonc tu lance "enregistrer macro" , tu fait un test avec un ou plusieurs calques, puis tu ouvre la macro et tu modifie le bout de code qui te conviens pas. Amuse toi bien ;) :blink: ???Ce que tu dis m'étonne beaucoup (AutoCAD n'est pas Excel). Je n'ai jamais utilisé l'enregistreur de macro mais il me semble bien qu'il est arrivé dans AutoCAD au moment où le VBA devait être abandonné. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
rebcao Posté(e) le 21 février 2018 Auteur Posté(e) le 21 février 2018 Salut, Je ne connais pas bien le VBA (je suis allergique à la syntaxe VB) mais je pense pouvoir dire que le code que que tu as posté est incomplet. Merci, ça me rassure ! L'enregistreur d'action AutoCAD ne donne pas un CODE VBA ? Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
DenisHen Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Salut. +1 avec (gile), et pour l'enregistrement de macro VBA dans AutoCAD, et pour le code, qui me parait incomplet aussi... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
rebcao Posté(e) le 21 février 2018 Auteur Posté(e) le 21 février 2018 Re, On le trouve où, l'enregistreur de VBA dans AutoCAD ? JE vous remercie. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
(gile) Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Merci, ça me rassure ! L'enregistreur d'action AutoCAD ne donne pas un CODE VBA ? Christian Non, l'enregistreur d'action génère des fichiers .actm cryptés.Je rappelle que le VBA devait être abandonné par Microsoft (et donc par Autodesk) avec l'arrivée du 64 bits, qu'il a été finalement mis à jour après de longues hésitations grâce (ou à cause) des réactions des utilisateurs.Depuis, le module VBA n'est plus installé dans AutoCAD par défaut (il faut une installation spécifique).Aujourd'hui Microsoft (comme Autodesk) préconisent d'utiliser plutôt .NET même si, de l'avis de tous les utilisateurs, "on ne joue plus dans la même cour". Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
rebcao Posté(e) le 21 février 2018 Auteur Posté(e) le 21 février 2018 OK, mais au final où se trouve l'enregistreur de MACRO VBA ? Est-ce qu'il apparait dans les MENUS uniquement une fois le VBA installé ? Je te remercie. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
(gile) Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 À ma connaissance, il n'y a jamais eu d'enregistreur de MACRO VBA dans AutoCAD.Il y a un environnement de développement intégré (éditeur de code) VBAIDE (à condition d'avoir installé le module VBA). Cet éditeur est l'équivalent pour VBA de l'éditeur Visual LISP (VLIDE) pour AutoLISP, mais dans l'un comme dans l'autre il faut "coder" à la main. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
rebcao Posté(e) le 21 février 2018 Auteur Posté(e) le 21 février 2018 ...Pour faire du VBA; il reste souvent la bonne vieille façon à la mano :PDonc tu lance "enregistrer macro" , tu fait un test avec un ou plusieurs calques, puis tu ouvre la macro et tu modifie le bout de code qui te conviens pas. Amuse toi bien ;) Tu parles d'enregistrer la MACRO ! ça se trouve où ? Je te remercie. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
DenisHen Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Tu parles d'enregistrer la MACRO ! ça se trouve où ?Dans l'onglet "Outils"... Mais comme l'a dit Maitre (gile) :Non, l'enregistreur d'action génère des fichiers .actm cryptés.On ne peut pas enregistrer une macro en VBA... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
rebcao Posté(e) le 21 février 2018 Auteur Posté(e) le 21 février 2018 OK, Merci, au moins c'est clair ! Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
(gile) Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 OK, Merci, au moins c'est clair ! Christian Mes réponses n'étaient pas claires !!?? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
rebcao Posté(e) le 21 février 2018 Auteur Posté(e) le 21 février 2018 J'avais juste voulu confirmation de nG! Hebus Sinon, c'est limpide ! Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
DenisHen Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 J'avais juste voulu confirmation de nG! HebusEt tu l'as eu ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
nG! Hebus Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Autant pour moi... Effectivement il m'a créer un ACTM illisible...Pourtant il me semble être déjà passé par la pour créer des macro personnalisées :o PS : J'avais pas testé depuis un moment... PS2 : Dommage ça fonctionne toujours bien sur excel (2003... No comment! je vais me pendre je reviens...) "98% des soucis informatiques sont assis entre la chaise et le bureau !" "C'est parce que la vitesse de la lumière est supérieure à celle du son que tant de gens paraissent brillants avant d'avoir l'air con."
didier Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Coucou À la queue des ces discussions qui ne vont pas dans le bon sensJe viens tenter une réponse mais je n'ai pas VBA pour tester, tiens-nous au courant.Je dirais qu'il manque un "End If" que je t'ai mis en rouge : Set ObjLayer = ThisDrawing.Layers("0") ObjLayer.LayerOn = True ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("0") ' active tous les calques sauf 'papier' For Each ObjLayer In ThisDrawing.Layers If ObjLayer.Name "papier" Then If ObjLayer.Freeze Then ObjLayer.Freeze = False ObjLayer.LayerOn = True End IfEnd If Next ObjLayer ObjSel.SelectOnScreen FTyp, FVal Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Je dirais qu'il manque un "End If" que je t'ai mis en rougeJe n'en suis pas si sûr... La routine peux fonctionner comme ça.If ObjLayer.Name <> "papier" Then 'Début du premier If If ObjLayer.Freeze Then ObjLayer.Freeze = False 'Début et fin de ce second If ObjLayer.LayerOn = True 'est exécuté dans le premier If End If 'Fin de premier IfMais bon, j'ai VBA et j'ai testé le premier code de Christian, et il ne fait rien. J'ai aussi viré la dernière ligne "ObjSel.SelectOnScreen FTyp, FVal" qui ne sert à rien et qui me fait penser que ce code vient d'un autre, plus grand... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
LrDb Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Bonjour,If ObjLayer.Freeze Then ObjLayer.Freeze = Falsen'a pas d'intérêt je pensequ'il soit à true ou à false, on s'en fout puisque le but est de le forcer à false à partir du moment qu'il est pas "papier"donc,Set ObjLayer = ThisDrawing.Layers("0") ObjLayer.LayerOn = True ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("0") ' active tous les calques sauf 'papier' For Each ObjLayer In ThisDrawing.Layers If ObjLayer.Name <> "papier" Then ObjLayer.Freeze = False ObjLayer.LayerOn = True End If Next ObjLayer ObjSel.SelectOnScreen FTyp, FVal Bon mais c'est bien gentil tout ça, peux pas testeril n'y a pas un Objlayer.rewrite ou Objetlayer.update à tout hasard ? sur mon cher microstation, c'est ainsi ;) Write a book about what ??
Lommig Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Bonjour, J'ai lancé mon "vieux" AutoCAD 2016 avec le module VBA installé pour tester cette macro.En supprimant la dernière ligne, le code fonctionne :Sub TEST()' Rendre le calque "0" actif et courantSet ObjLayer = ThisDrawing.Layers("0")ObjLayer.LayerOn = True ' Activer le calque "0"ThisDrawing.ActiveLayer = ThisDrawing.Layers.Item("0")' Active tous les calques sauf le calque 'papier'For Each ObjLayer In ThisDrawing.Layers ' On parcourt les calques du dessin If ObjLayer.Name <> "papier" Then If ObjLayer.Freeze Then ObjLayer.Freeze = False ' Dégeler ObjLayer.LayerOn = True ' Activer End IfNext ObjLayerEnd Sub AutoCAD, AutoCAD Map3D, AutoCAD Architecture, Revit, COVADIS, InfraWorks 360, ReCap 360, ...BIM Infrastructure
didier Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Coucou Il me semblait bien qu'il fallait autant de "End If" qu'il y a de "If"Ce n'est pas le cas et tu dis que ça fonctionneDrôle de langage. Éternel débutant... Mon site perso : Programmer dans AutoCAD
(gile) Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Drôle de langage. Je ne te le fais pas dire, et VB .NET conserve ce genre d'approximations. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lrdb@home Posté(e) le 21 février 2018 Posté(e) le 21 février 2018 Bonsoir,Oui didier, sur une seule ligne , pas de end ifhttps://msdn.microsoft.com/fr-fr/vba/language-reference-vba/articles/ifthenelse-statementhttps://docs.microsoft.com/fr-fr/dotnet/visual-basic/language-reference/statements/if-then-else-statement Il est clair que le vba permet pas mal de chose en écrivant des lignes et des lignes , le vrai travail d'un développeur est d'être le plus concis possibleon est très loin de la programmation en assembleur en hexadécimal write a book about what ??
rebcao Posté(e) le 22 février 2018 Auteur Posté(e) le 22 février 2018 Bonjour, Et tout ce CODE pour faire ça : _-layer;_ON;*;_Th;*;; ?Mouais, je n'ai jamais pu m'y faire à ce VBA...Merci pour votre aide, je fais remonter... Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant