Routines VBA derniers sujetshttps://cadxp.com/forum/98-routines-vba/Routines VBA derniers sujetsfrBoucle sur cellule .vbshttps://cadxp.com/topic/61577-boucle-sur-cellule-vbs/ Bonjour a tous,

Pour info, c'est la première fois que je met le nez dans vbs/vba, soyez indulgent mais critique.

Bon je n'arrive pas a mettre la dernière touche sur un script vbs, après moulte recherche et surtout après avoir testé plein de solutions différentes.

Nous avons des fichiers créés par le Progiciel qui viens sur Autocad, qui sont des fichier .DAT, sous cette forme :
image.png.c0f97a0de92ea588c0bac740ade74106.png

J'arrive a les transformer en Excel, a les mettre en forme, trier, puis a les réunir.
image.png.869bfa337413b5b2aa2a066fd625cd46.png

J'aimerais, avant de les réunir, procédé a une boucle qui me comptabilise les élément aillant le même code.
J'arrive pour le moment a détecter la valeur et le nombre de la première occurrence, sélectionner la cellule suivante puis détecter son nombre.
Je n'arrive pas a mettre en place une boucle sur la deuxième détection, afin que cela passe a la case suivante et ainsi de suite jusqu'à une cellule vide.

Le bout de code qui me pose problème :
 

				
	'*** Comptage
	' Nombre de cellules valeur D2, premiére occurence
	objCellsCodeStart = objSheet.range("D2").Value 
	objSheet.range("F2") = objCellsCodeStart
	objCellsCodeStartCompteur = .WorksheetFunction.CountIf(.Range("D:D"), objCellsCodeStart)
	objSheet.range("F3") = objCellsCodeStartCompteur
	
	'*** boucle a faire avec cette partie de code
	objCellsCodeLoop = objSheet.range("D2").Offset(objSheet.range("F3").Value, 0) 'Ligne suivant la premiére occurence trouvé
	objSheet.range("F2").Offset(0, 1) = objCellsCodeLoop
	
	objCellsCodeLoopCompteur = .WorksheetFunction.CountIf(.Range("D:D"), objCellsCodeLoop)
	objSheet.range("G3") = objCellsCodeLoopCompteur
	'*** boucle a faire avec cette partie de code

 

Le but étant d'inscrire :
- F2 la première occurrence, F3 son nombre
- G2 la deuxième occurrence, G3 son nombre
- H2  ..., H3 ...
- Etc........

La boucle doit s'arrêter quand il tombe sur la première cellule vide a la fin de la colonne D.

 

Je vous joins aussi le script entier et 2 fichier DAT pour test.

ExtractDAT.vbs CH1_A.dat CH2_A.dat CH3_A0.dat

]]>
61577Tue, 23 Jul 2024 07:22:41 +0000
Liaison Excel et BricsCADhttps://cadxp.com/topic/61512-liaison-excel-et-bricscad/ Bonjour a tous, je suis en train de tester un nouvel outil en remplacement d'AutoCAD à savoir BricsCAD.

J'ai une feuille excel avec 2 macros me permettant que faire de l'extraction et injections de données suivant le nom de bloc etc...mon soucis celle ci fonctionnait a merveille sous AutoCAD mais plus sous BricsCAD.

Je pense qu'il faut seulement changer quelque chose dans la macro mais c'est là que j'ai besoin de votre aide.

https://www.swisstransfer.com/d/5acaec0d-29a8-469a-8780-8b5e4908894c

lien de téléchargement pour la feuille excel

Merci par avance.

]]>
61512Wed, 26 Jun 2024 07:02:34 +0000
Reconnaitre un champ dans un attribut [VBA EXCEL - AUTOCAD]https://cadxp.com/topic/60302-reconnaitre-un-champ-dans-un-attribut-vba-excel-autocad/ Bonjour à tous,

Je suis entrain de créer un fichier Excel permettant d'extraire tous les blocs qui ont des attributs présent sur un fichier .dwg .
Jusque la aucun souci. 👍

Le but étant de pouvoir modifier les attributs via Excel et les réexporter sur Autocad une fois modifiés.

Par contre je suis confronté à un problème lors du renvois. 😥

Comment ne pas casser les champs qui sont situé dans les attributs ? (exemple l'air d'un objet)
Est-il possible de reconnaitre un attribut qui possède un champ ou une expression diesel ?

En vous remerciant par avance.  😃

]]>
60302Tue, 14 Feb 2023 13:40:44 +0000
AutoCAD VBA DirListBox, FileListBox et DriveListBoxhttps://cadxp.com/topic/57057-autocad-vba-dirlistbox-filelistbox-et-drivelistbox/ Bonjour a tous,

Je reviens sur ce sujet concernant une routine de carto AutoCAD qui n'a pas été résolu et qui me taraude encore...

Il semblerait que le problème vienne de la perte des contrôle OCX 32 bits depuis le passage à VBA 7 et les plates-formes 32/64bits.

Lorsque je lance la routine, une DirListBox, une FileListBox et une DriveListBox devrait s'afficher (voir ci-dessous a gauche), mais j'obtient la fenêtre ci-dessous a droite :

VBA Form          Fenêtre ouverte lors du lancement de la routine via AutoCAD

 

Je ne peux donc pas sélectionner mon fichier pour l'import de ce fameux fichier .GDR...

 

Avez vous une idée de la marche a suivre pour faire apparaitre ces commandes ? ou les remplacer par un bouton peut être ?

 

Merci d'avance pour vos eclairs de genie.

 

Nicky

]]>
57057Thu, 09 Jun 2022 11:27:40 +0000
Excel - Comptabiliser les boutonshttps://cadxp.com/topic/56864-excel-comptabiliser-les-boutons/ Bonjour,

je me suis créé un excel pour faire mon pointage+note de frais.

J'ai donc pour le moment un calendrier qui change en fonction de l'année et du mois renseignés.

J'ai ensuite rajouté des "CommandButton" qui changent de couleur lorsque je clique dessus pour activer (bouton en vert) /désactiver (bouton en rouge) les tickets restos.

J'aimerai pour finaliser faire le cumul de ces boutons lorsqu'ils sont en position "couleur verte" de façon à savoir combien j'ai cumulé de tickets dans le mois.

Pouvez-vous me dire si c'est possible ?

Merci.

]]>
56864Wed, 01 Jun 2022 07:06:14 +0000
Création de calques depuis un classeur Excel...https://cadxp.com/topic/53323-cr%C3%A9ation-de-calques-depuis-un-classeur-excel/ Salutation au forum.

Je suis en train de créer un classeur Excel qui, en quelques cliques, pourra créer des centaines de calques dans AutoCAD (directement) en quelques secondes.

Seriez-vous intéressés ? Pensez-vous que je devrais continuer ?

Sachant que mes primo-test créent des centaines de calques (avec couleur, type de ligne, options d'impression...) en trois ou quatre secondes...

Avec même une option de filtre de propriété de calques...

Devrais-je continuer à élaborer ce classeur ?

Cordialement au groupe...

Denis H.

]]>
53323Wed, 03 Nov 2021 15:56:23 +0000
Sélectionner un bloc dynamiquehttps://cadxp.com/topic/50086-s%C3%A9lectionner-un-bloc-dynamique/ VBA

 

Je me bats depuis plusieurs jours...

 

Je souhaite sélectionner tous les blocs dynamiques de mon dessin ayant le nom "test".

 

J'utilise jusqu'ici la méthode suivante (je vous passe la déclaration des variables) :

Quote

 

nom_bloc="test"

Set selection = ThisDrawing.SelectionSets.Add("test01")
selection.Select acSelectionSetAll

For Each objet In selection
    With objet
                If .EntityName = "AcDbBlockReference" Then
                    If .Name = nom_bloc Then

                            'Traitement des blocs

                    End If
                End If
    End With
Next

 

Le problème c'est qu'avec les blocs dynamiques, tous mes blocs "test" ont en fait un nom différent (*Uxx). Normal car ce sont des blocs dynamiques.

 

Mais est-il possible de tester le nom "générique" du bloc plutôt que son nom *Uxx ?

 

J'ai essayé une autre méthode, mais cette dernière ne détecte pas les blocs dynamiques, seulement les blocs normaux :

 

Quote

 

Sub selectABlock()

   Dim sset As AcadSelectionSet
   Set sset = ThisDrawing.SelectionSets.Add("test02")
  
   Dim filterType As Variant
   Dim filterData As Variant
   Dim p1(0 To 2) As Double
   Dim p2(0 To 2) As Double
  
   Dim grpCode(0) As Integer
   grpCode(0) = 2
   filterType = grpCode
   Dim grpValue(0) As Variant
   grpValue(0) = "test"
   filterData = grpValue
   
   sset.Select acSelectionSetAll, p1, p2, filterType, filterData
  
   MsgBox ("Elements filtrés: " & str(sset.Count))
  
   sset.Delete
  
End Sub

 

 

 

Le problème c'est que je n'arrive pas à trouver les codes DXF me permettant de renseigner la bonne valeur pour filterType et filterData...

 

 

Bref, je cherche une méthode permettant de sélectionner des blocs dynamiques avec plusieurs possibilités de filtres 😉

 

 

Merci pour vos aides, 

 

Rémi

]]>
50086Tue, 08 Jun 2021 09:39:28 +0000
Détection croisement d'objetshttps://cadxp.com/topic/50063-d%C3%A9tection-croisement-dobjets/ Bonjour, 

 

Ca y est, j'ai aussi passé la barre du VBA ! Vraiment simple en réalité, connaissant déjà VBA sur Excel, le passage sur Autocad se fait en effet sans encombres 🙂

 

J'aimerai créer une macro qui détecte le croisement d'objets sur Autocad. J'ai plein d'idées en têtes mais je suis sûr que vos idées et conseils sauront m'orienter dans la méthode de  détection.

 

Je m'explique, ce que je veux :

- Sélectionner des objets sur mon plan Autocad (deux objets pour commencer)

- Détecter tous les points de croisement entre ces objets

- Créer un cercle autour du point de croisement détecté.

 

Ainsi si deux objets ont au moins un point dont les coordonnées X, Y correspondent, alors il y a détection de croisement.

Sachant que les objets seront principalement des blocs, avec plusieurs polylignes et cercles.

 

Des exemples pour mieux comprendre :

 

image.thumb.png.a33a05591753c789f9e5e9ff72b98209.png

 

image.png.3066f191734d65da01d45d705a2cecb3.png

image.png.ae2ac2ed97009a53091d1f7cd10d8268.png

image.png.ef5780a01d221b3b85b6a951ad1c2d4a.png

 

 

Attention, je ne cherche pas une macro toute faite, je suis simplement à la recherche de conseils pour établir une méthode de détection !

 

J'avais pensé à créer deux points dynamiques appelés Conn1 et Conn2 pour chaque bloc et faire correspondre les points de chaque bloc.

Ainsi la macro pourrait vérifier s'ils y a une correspondance entre les "Connecteurs"  des blocs sélectionnés.

Sauf que cela m'oblige à déplacer tous les connecteurs des blocs en fonction de chaque paramètre dynamique, et m'aimerai éviter cela 😉

 

Dans l'attente de vos idées je vous souhaite une bonne journée !

 

Rémi

]]>
50063Wed, 02 Jun 2021 08:41:20 +0000
Masquer des calques dans toutes les fenêtres de certaines présentationshttps://cadxp.com/topic/49849-masquer-des-calques-dans-toutes-les-fen%C3%AAtres-de-certaines-pr%C3%A9sentations/

Suite à cette conversation ci-dessus :

Et ne voulant surtout pas écrire du VBA dans le topic de la section Lisp ^^ voici une solution en VBA...

Certes surement moins performante et bien moins complète que l'outil proposé en lisp (et je ne reviendrais pas sur ce débat perdu d'avance...)

mais voici une solution (c'est une premiere version) donc les sélections inverse ni sont pas...

la sélections des fenetres pour chaque présentations ni est pas non plus^^ (par filtre de propriétés)

la macro de lancement depuis votre macro :

sub votrenomquevousvoulez

ThisDrawing.Application.LoadDVB "C:\...\GEST_CALQUE_PRESENTATION.dvb"
ThisDrawing.Application.RunMacro ("C:\...\GEST_CALQUE_PRESENTATION.dvb!AFF.AFF")

end sub

 

 

GEST_CALQUE_PRESENTATION.dvb

]]>
49849Sat, 17 Apr 2021 20:05:04 +0000
VBA bloc insertion!https://cadxp.com/topic/31557-vba-bloc-insertion/Bonjour tout le monde,

 

Je cherche à l'aide d'un bouton d'un userform a inserer des blocs. Je m'explique;

 

J'ai une liste et j'aimerais que lorsque l'utilisateur selectionne "un nom" dans la liste et appuis sur le bouton,ça ouvre "un bloc" qu'il peut placer sur le dessin.

 

Ca doit probablement etre simple pour certains d'entre vous, mais je suis débutant en VBA et Autocad...alors quand il y a les 2 à la fois... et perso je ne trouve aucun site interessant sur du VBA pour autocad, si vous avez des liens à me passer je suis preneur!

 

Merci d'avance à vous et bonne journée!

]]>
31557Thu, 14 Apr 2011 07:06:31 +0000
Insertion d\'une reference externe plan dwg avec macro vbahttps://cadxp.com/topic/32090-insertion-dune-reference-externe-plan-dwg-avec-macro-vba/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 insérer une référence externe plan.dwg.

 

exemple :

 

J'ai un plan de détection du niveau 1 ouvert.

En exécutant la macro, je veux qu'il insert en référence externe le "planmmur.dwg" du niveau qui lui correspond, sachant que j'ai 8 niveaux se trouvant dans un dossier de mon Ordi..

 

 

Bien que je suppose que le début est :

 

Sub Insertion plan ()

 

et la fin :

 

End sub

 

Je suis bloqué

 

A l'aide !!!!!

]]>
32090Sat, 28 May 2011 09:52:18 +0000
Sortir les attributs des blocshttps://cadxp.com/topic/49570-sortir-les-attributs-des-blocs/Helloooooooo !! i neeeeed helpppppp !!

Je vais faire un exemple pour mieux comprendre

j'ai plusieurs blocs dans un dessin avec 2 attributs chaque bloc.

je vais extraire les attributs de la façon suivante:

l'utilisateur clique sur les blocs (bloc par bloc): par exemple il a cliqué sur 6 blocs; après un clic sur entrée je veux:

Ouvrir un fichier excel ou bien il modifie sur un fichier déjà ouvert:

Inserer les informations suivantes sur l'excel:

ligne N°1

place dans la colonne A l'attribut 1 du premier bloc

place dans la colonne B l'attribut 2 du premier bloc

place dans la colonne C l'attribut 1 du 2eme bloc

place dans la colonne D l'attribut 2 du 2eme bloc

 

ligne N°2

place dans la colonne A l'attribut 1 du 2eme bloc

place dans la colonne B l'attribut 2 du 2eme bloc

place dans la colonne C l'attribut 1 du 3eme bloc

place dans la colonne D l'attribut 2 du 3eme bloc

 

Ligne N°n-1:

place dans la colonne A l'attribut 1 du n-1eme bloc

place dans la colonne B l'attribut 2 du n-1eme bloc

place dans la colonne C l'attribut 1 du neme bloc

place dans la colonne D l'attribut 2 du neme bloc

 

J'ai essayé de le faire mais je n'arrive pas :(

Des pistes pour m'aider svp

]]>
49570Mon, 25 Jan 2021 10:31:22 +0000
Importation de points depuis Excelhttps://cadxp.com/topic/42056-importation-de-points-depuis-excel/Bonjour à tous,

 

Voilà, pour un besoin spécifique, j'ai du développer une petite macro pour lire un fichier de points topographiques et importer ces points dans AutoCAD.

 

Mes fichiers points se composaient ainsi :

Matricule;X;Y;Z;Code;Observations

 

Il faut d'abbord lire le fichier points puis paramétrer les données à importer dans AutoCAD dans les deux menus du ruban Excel...

 

Ca devrait fonctionner avec les AutoCAD complets et les LT ainsi que sous Excel 2010 et 2013...

 

S'il y a la moindre remarque ou observation, je suis preneur...

 

PS : je me suis inspiré de l'excellent "InsTopo" de (gile), sauf que je n'utilise pas de bloc, si non, ce n'était pas la peine que je fasse doublon avec (gile)...

]]>
42056Tue, 17 Nov 2015 07:55:01 +0000
Insertion d\'une reference externe plan dwg avec macro vbahttps://cadxp.com/topic/32091-insertion-dune-reference-externe-plan-dwg-avec-macro-vba/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 insérer une référence externe plan.dwg.

 

exemple :

 

J'ai un plan de détection du niveau 1 ouvert.

En exécutant la macro, je veux qu'il insert en référence externe le "planmmur.dwg" du niveau qui lui correspond, sachant que j'ai 8 niveaux se trouvant dans un dossier de mon Ordi..

 

 

Bien que je suppose que le début est :

 

Sub Insertion plan ()

 

et la fin :

 

End sub

 

Je suis bloqué

 

A l'aide !!!!!

]]>
32091Sat, 28 May 2011 09:57:43 +0000
Charte graphique depuis Excel 2013https://cadxp.com/topic/41102-charte-graphique-depuis-excel-2013/Bonjour à tous,

 

Aujourd'hui, je suis content de partager mon travail...

 

J'ai écris quelques petites macros en VBA dans un fichier Excel2013 (.xlsm). Dans ce classeur, j'ai :

# une feuille "Calques" qui se divise en colonnes :

- Calque : qui est le nom du calque,

- Couleur : qui est sa couleur (de 0 à 255),

- Couleur Hexadécimale : qui est la couleur du calque exprimée en hexadécimale, celà m'a été demandé par un client pour lui facilité la configuration des couleurs dans son SIG (cette colonne se remplie toute seule),

- Type de ligne : qui est le type de ligne du calque,

- Epaisseur : qui est l'épaisseur des lignes du calque,

- Description : qui est la description du calque.

 

# une feuille "StyleTexte" qui se divise en colonnes :

- Style de texte: qui est le nom du style de texte,

- Police : qui est la police utilisée pour ce style de texte (SHX ou TTF), Attention, pour les TTF, mettre l'extention dans la cellule,

- Hauteur : qui est la hauteur par défaut,

- Facteur : qui est le facteur de largeur du style,

- Inclinaison : qui est l'angle de l'italique,

- Inversé : qui est la valeur pour inversé le style,

- Renversé : qui est la valeur pour renversé le style,

- Verticale : qui est la valeur pour rendre le style verticale. Cette option n'est pas disponible pour les TTF.

 

Les macros se trouvent dans le ruban "Charte".

 

Voilà, il y a encore quelques petits bug mais dans l'ensemble, ça fonctionne parfaitement sur les différents postes du bureau...

 

J'espère avoir aidé quelques personnes avec ce classeur qui est pour moi, un gain de temps incroyable, car je gère parfois 200 ou 250 calques que je dois créer "à la volée"...

 

 

Et ces calques changes selon les différentes chartes de nos clients (communes, département, région, sociétés privées,...).

 

NB : toutes remarques sur mon code est la bienvenue, bien sûr... Je ne suis qu'amateur...

 

Denis...

]]>
41102Tue, 31 Mar 2015 07:06:48 +0000
Sésame ouvre-toi !https://cadxp.com/topic/13601-s%C3%A9same-ouvre-toi/Bonsoir,

 

trêve de cou.....des.

Qqn a-t-il déjà testé AXDBLib.AxDbDocument ?

 

J'ai trouvé très peu d'infos et comme de bien entendu : only in english :( . et apparemment, pas vraiment de succès.

Si vous avez des infos....

]]>
13601Thu, 15 Feb 2007 19:33:05 +0000
Point Topohttps://cadxp.com/topic/38789-point-topo/Bonjour à tous,

 

Voilà, j'avais besoin d'une routine qui remplacerait INSTOPO de (gile). J'avais besoin des codes et je ne suis pas asser bon en LiSP pour m'attaqué au code d'InsTopo.lsp

 

J'ai donc développé une routine qui dessine les matricules, les codes...

 

C'est dans un fichier Excel contenant des macros (.xlsm). Ma routine lit un fichier au format ascii avec séparateur.

Puis, elle fait un script à lancer depuis AutoCAD...

 

Pour toutes questions, je reste à votre entière disposition (comme c'est bien dit).

 

En espérant avoir rendu service,

 

Denis...

 

PS "important" : CadXP me dit que je n'ai pas "la permission d'envoyer ce type de fichier". J'avais un XLSM (30Ko) et un ZIP (28Ko)... Je suis perplexe et désolé ! !

]]>
38789Tue, 14 Jan 2014 08:54:33 +0000
Blocs dynamiques to blocs statiques depuis VBA EXCEL pour versions pleines et LThttps://cadxp.com/topic/16321-blocs-dynamiques-to-blocs-statiques-depuis-vba-excel-pour-versions-pleines-et-lt/MACRO VBA EXCEL

 

VBA n'existe pas sous autocad LT mais il est possible de commander autocad via le VBA d'EXCEL...

 

Voilà le code: version 0.4

[surligneur]

A priori, ça marche pour les versions pleines et LT mais je n'ai pas de retour sur cette version...

Si ça marche merci à ceux qui m'ont aidé et si ça marche pas merci à ceux qui vont m'aider...[/surligneur]

 

Modifications notables :

-ajout de gestion d'erreur si autocad est ouvert sans plan

 

 

Public Graphics As AcadApplication
Sub BlocDynToStaticBloc()
Dim chemin As String
Dim Ent As AcadEntity
Dim C As Integer

'si error continuer par la ligne suivante
On Error Resume Next
'capture l'objet autocad en tant qu'application s'il est ouvert
Set Graphics = GetObject(, "AutoCAD.Application")
'si l'objet n'existe pas, c'est que l'application n'est pas lancée, donc création de l'objet
If Err.Description > vbNullString Then
'effacer le type d'erreur
Err.Clear
'ouvrir l'application autocad
Set Graphics = CreateObject("AutoCAD.Application")
'demande à l'utilisateur quel est le dessin à ouvrir
chemin = Application.GetOpenFilename("Dessins AutoCAD (*.dwg), *.dwg")
'ouvrir le document dans autocad
Graphics.Documents.Open (chemin)

End If

'autocad visible
Graphics.Visible = True
Dim sngNomPlan As Single
sngNomPlan = 0
sngNomPlan = Graphics.Documents.Count

Select Case sngNomPlan
'cest ici qu'on pourra gérer les transormation des blocs sur plusieurs plans...
Case 0
'demande à l'utilisateur quel est le dessin à ouvrir
chemin = Application.GetOpenFilename("Dessins AutoCAD (*.dwg), *.dwg")
'ouvrir le document dans autocad
Graphics.Documents.Open (chemin)

End Select

Dim strNumeroVersion As String
'récuperer le numero de la verion autocad
strNumeroVersion = Graphics.Version
'récuperer uniquement les 4 premiers carcatères en partant de la gauche
strNumeroVersion = Left(strNumeroVersion, 4)
'mettre dans le fenêtre d'execution le numero de la version
Debug.Print strNumeroVersion


'mettre à 0 le nombre de passage de boucle = nombre de bloc dynamique
C = 0

'pour chaque entité dans le dessin ouvert
For Each Ent In Graphics.ActiveDocument.ModelSpace

'bloc?
If Ent.ObjectName = "AcDbBlockReference" Then

Dim handlenom As String
'récuperer le handle du bloc
handlenom = Ent.Handle

'si une erreur survient aller dans la gestion d'erreur
'qui s'appelle gestion (voir la fin du code)
On Error GoTo gestion
' attention s'il ya une entité que l'on ne peut pas considérée
'comme IAcadBlockReference2 ou IAcadBlockReference (version autre que 2006)
'elle est deplacée dans le nouveau calque "Bloc_à_problème"

Dim oBkRef As IAcadBlockReference
'enregistrer l'entité en tant que IAcadBlockReference2

'test sur la verion
Select Case strNumeroVersion

Case 16.2
'la version est 2006
'aller dans la function sautfunction
'pour changer la référence du bloc
'obligatoirement dans une function car si
'on utilise une version 2007,
'VBA lors de la prévérification va trouver une
'déclaration inexacte et va faire une erreur non gérable

sautfunction

Case Else
'si la verion est differente de 2006

Set oBkRef = Ent
'l'entité est enregistrer sous une réference de bloc

End Select

'le bloc est-il dynamique?
If oBkRef.IsDynamicBlock = True Then
'incrementer la variable C
C = 1 + C

Dim v As Variant
'mettre les propriétés dynamiques dans V
v = oBkRef.GetDynamicBlockProperties

Dim P As Integer
'chercher dans les V les propriétés
For P = LBound(v) To UBound(v)

'mettre le nom de la propriété dans odynprop
Dim oDynProp As AcadDynamicBlockReferenceProperty
Set oDynProp = v(P)

'si la propriété est la visibilité
If oDynProp.PropertyName = "Visibilité" Then
Dim Visibilite As String
'mettre dans visibilité l'été de visibilité
Visibilite = oDynProp.Value
End If 'si la propriété est la visibilité
Next P

Dim strNomeff As String
'mettre dasn strnomeff le nom du bloc (qui apparait à l'utilisateur)
'en ajoutant la visibilité et le handle
'permet de recréer plusieurs fois des blocs identiques
'alors que ce n'est pas possible s'il porte le même nom...
'(ça c'est pas terrible car le nombre de bloc va vraiment augmenter mais je ne vois pas comment le gérer)
strNomeff = oBkRef.EffectiveName & " " & Visibilite & " " & handlenom
'convertir le bloc dyn en bloc statique et lui donner son ancien nom + visibilité +son handle
oBkRef.ConvertToStaticBlock (strNomeff)

'si possible remettre l'unite du bloc telle qu'elle était définie

Else 'blocdyn?
End If 'blocdyn?

On Error GoTo 0

End If 'bloc?

Next Ent 'pour chaque entité dans le dessin ouvert

Select Case C
Case 0
MsgBox "Le dessin ne contient pas de bloc dynamique."
Case 1
MsgBox C & " bloc dynamique a été transformé en bloc statique."
Case Else
MsgBox C & " blocs dynamiques ont été transformés en blocs statiques."
End Select

Exit Sub

gestion:
Debug.Print Err.Number, Err.Description

'déplace dans un nouveau calque l'entité "non bloc ref" et pourtant détectée comme telle
Dim Newlayer1 As AcadObject
Dim strNouveaucalque As String
strNouveaucalque = "Bloc_à_problème"
Set Newlayer1 = Graphics.ActiveDocument.Layers.Add(strNouveaucalque)
On Error Resume Next
Ent.Layer = strNouveaucalque
If Err.Number = 91 Then
MsgBox "Veuillez purger les blocs de votre dessin avant de recommencez l'opération."
End If

End Sub

Function sautfunction()

Dim oBkRef2 As IAcadBlockReference2
Set oBkRef2 = Ent
Set oBkRef = oBkRef2


End Function

 

Il faut le mettre dans un module VBA d'excel, ajouter la référence AUTOCAD library (selon la version) (dans Outils référence et faire F5 sous VBA editeur ou revenir sur le feuille EXCEL et faire F8 puis choisir BlocDynToStaticBloc et faire EXECUTER.

 

J'espère que ça marche sous autocad Lt sinon, veuillez m'informer des problèmes (ligne et numéro d'erreur)...[Edité le 7/9/2007 par sechanbask][Edité le 8/9/2007 par sechanbask][Edité le 8/9/2007 par sechanbask][Edité le 10/9/2007 par sechanbask][Edité le 10/9/2007 par sechanbask]

 

[Edité le 13/9/2007 par sechanbask]

]]>
16321Fri, 07 Sep 2007 22:04:59 +0000
A supprimerhttps://cadxp.com/topic/38438-a-supprimer/Poste a supprimer.

Je me suis trompé de salon.

]]>
38438Tue, 22 Oct 2013 12:58:52 +0000
[ENFIN DISPO POUR TOUS]Nettoyage de plans en 2 clickshttps://cadxp.com/topic/18148-enfin-dispo-pour-tousnettoyage-de-plans-en-2-clicks/Bon comme vous le savez, c'est chiant de nettoyer des plans. Les archis et les betonneux aiment la couleur surtout si elle est forcée. Malheureusement pour ceux qui passent derrière, c'est pas évident de travailler sur des plans bariolés et c'est bien souvent difficile de les nettoyer car les couleurs ne dépendent plus des calques. C'est une chose terminée pour ceux qui utiliseront cet outil codé par mes soins...

 

Je vous livre le code avec quelques explications pour ceux qui ne sont pas allergique au VBA...

 

http://88.189.92.44/partage/

 

Faites moi par de vos commentaires, rapport de bugs, critiques constructives et évolutions possible de cet outil qui fait fureur dans mon BE.

Bonne utilisation ![Edité le 8/10/2008 par sechanbask]

 

[Edité le 13/2/2011 par sechanbask]

]]>
18148Tue, 26 Feb 2008 20:41:11 +0000
Contour hachures retrouvé ! (Ecrit en VBA)https://cadxp.com/topic/32764-contour-hachures-retrouv%C3%A9-ecrit-en-vba/Bonjour le forum,

 

Lien : http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=7116#pid

 

J’ai trouvé sur le forum le code en lisps pour recrée une polilygne autour d’une achur, J’aurais souhaité savoir si une personne a la connaissance de se même code (écrit en VBA)

 

Le but est de crée une polyligne associative a une achur (alors que celle-ci n’est aucune polyligne associative à la base)

 

Merci par avance

 

Laurent

 

]]>
32764Tue, 02 Aug 2011 17:52:04 +0000
Contour hachures retrouvé ! (Ecrit en VBA)https://cadxp.com/topic/32763-contour-hachures-retrouv%C3%A9-ecrit-en-vba/Bonjour le forum,

 

Lien : http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=7116#pid

 

J’ai trouvé sur le forum le code en lisps pour recrée une polilygne autour d’une achur, J’aurais souhaité savoir si une personne a la connaissance de se même code (écrit en VBA)

 

Le but est de crée une polyligne associative a une achur (alors que celle-ci n’est aucune polyligne associative à la base)

 

Merci par avance

 

Laurent

 

]]>
32763Tue, 02 Aug 2011 17:51:37 +0000
Insertion d\'une reference externe plan dwg avec macro vbahttps://cadxp.com/topic/32089-insertion-dune-reference-externe-plan-dwg-avec-macro-vba/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 insérer une référence externe plan.dwg.

 

exemple :

 

J'ai un plan de détection du niveau 1 ouvert.

En exécutant la macro, je veux qu'il insert en référence externe le "planmmur.dwg" du niveau qui lui correspond, sachant que j'ai 8 niveaux se trouvant dans un dossier de mon Ordi..

 

 

Bien que je suppose que le début est :

 

Sub Insertion plan ()

 

et la fin :

 

End sub

 

Je suis bloqué

 

A l'aide !!!!!

]]>
32089Sat, 28 May 2011 09:42:23 +0000
Insertion d\'une reference externe plan dwg avec macro vbahttps://cadxp.com/topic/32088-insertion-dune-reference-externe-plan-dwg-avec-macro-vba/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 insérer une référence externe plan.dwg.

 

exemple :

 

J'ai un plan de détection du niveau 1 ouvert.

En exécutant la macro, je veux qu'il insert en référence externe le "planmmur.dwg" du niveau qui lui correspond, sachant que j'ai 8 niveaux se trouvant dans un dossier de mon Ordi..

 

 

Bien que je suppose que le début est :

 

Sub Insertion plan ()

 

et la fin :

 

End sub

 

Je suis bloqué

 

A l'aide !!!!!

]]>
32088Sat, 28 May 2011 09:42:11 +0000
Insertion d\'une reference externe plan dwg avec macro vbahttps://cadxp.com/topic/32087-insertion-dune-reference-externe-plan-dwg-avec-macro-vba/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 insérer une référence externe plan.dwg.

 

exemple :

 

J'ai un plan de détection du niveau 1 ouvert.

En exécutant la macro, je veux qu'il insert en référence externe le "planmmur.dwg" du niveau qui lui correspond, sachant que j'ai 8 niveaux se trouvant dans un dossier de mon Ordi..

 

 

Bien que je suppose que le début est :

 

Sub Insertion plan ()

 

et la fin :

 

End sub

 

Je suis bloqué

 

A l'aide !!!!!

]]>
32087Sat, 28 May 2011 09:41:29 +0000