Aller au contenu

Création de calques depuis un classeur Excel...


DenisHen

Messages recommandés

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.

Windows 10 Pro 64bits / AutoCAD 3D 2022

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. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Hello !

Pour le moment j'utilise cette méthode pour en faire à la volée à partir d'un DQE :

Mais en effet un truc plus complet serait franchement pas mal !

AutoCAD Map 3D 2023 (26.0.37.2 base T.53.0.0)
Covadis 18.0 + AutoPiste
Windows 11 Famille v.21H2 - 64 bits

Toujours à l'affût des bonnes astuces

Lien vers le commentaire
Partager sur d’autres sites

Salut CTZen,

Oui, mais mon truc est de construire un ensemble de calque (libre de plusieurs centaines), et l'intégrer directement dans AutoCAD via une suite de VBA.

Cordialement...

Denis...

Windows 10 Pro 64bits / AutoCAD 3D 2022

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. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Hello DenisHen,

très intéressé en effet ! je t'encourage à continuer!

J'en profite pour te remercier ainsi que tous le scripteurs qui nous rendent la vie plus facile ! 

Autocad Map 3D 2024 - Covadis version 18.1 - Windows Onze

"Si j'avais du lard je vous ferais une omelette au lard mais j'ai pas d'oeuf..."
Coluche

Lien vers le commentaire
Partager sur d’autres sites

c'est faisable (et reprend notre conversation sur signal :p)

 

Citation

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

Fais directement dans autocad avec lecture d'une basse de données tu passera à moins d'une seconde...

mais je te le redis : c'est mieux de générer à la volée !

sinon ca ressemble à ca : (j'ai écris ici pas testé)

mais l'idée c'est d'ouvrir ton classeur

aller dans ta feuille

puis dans tes cellules

mais je te l'ai dit plusieurs fois ça charge ton dessin pour rien...

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set xlApp = CreateObject("Excel.Application")

Set xlBook = xlApp.Workbooks("NOM_CLASSEUR")

Set xlSheet = xlBook.Worksheets("NOM_FEUILLE")

C = NUMERO_COLONNE_A_EXTRAIRE

For L = 1 to X 'ta derniere ligne

Calque à creer = xlSheet.Cells(L,C)

Set CALQUE = ThisDrawing.Layers.Add(Calque à creer)

next i

 

 

Citation

Mais en effet un truc plus complet serait franchement pas mal !

je suis la ^^

J'ai deja une fonction pour générer calque avec les propriétés faut aller voir l'aide il y a tout ^^

pour le filtre de calque j'ai proposé dans un autre post qui contourne la gestion des code DXF...

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Denis,

 

Le plus simple c'est de générer un SCRIPT à partir de ta liste de calque ! Puis, exécuter le SCRIPT depuis AutoCAD ou AutoCAD LT...

 

Christian

  • Upvote 1

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 @)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour à la communauté, et grand merci à vous pour vos remarques et votre intérêt pour mon projet.

@Curlygoth : j'ai opté de contrôler AutoCAD depuis Excel car, à mes yeux, c'est plus pertinent (et plus facile en certains points) que, depuis AutoCAD, aller chercher un classeur, puis une feuille et importer ensuite son contenu, alors qu'Excel était probablement ouvert quelques secondes auparavant Et que faire des types de ligne non chargés dans le DWG. De plus, il y a quelques macros contenues dans ce classeur (import des types de ligne du fichier ouvert dans AutoCAD, incrémentation d'une partie du nom des calques...) qui aident à construire ces calques. J'ai donc fais toutes mes macros dans Excel (qui existait déjà partiellement). Je suis aussi conscient que développer mon projet dans AutoCAD m'éviterait certains problèmes, comme connaitre, depuis Excel, les éventuelles versions d'AutoCAD installées et/ou laquelle est en cours d'exécution. Mais si je tombe dans une impasse, je passerais en DVB (qui est aussi existant partiellement) mais ça ne fonctionnera pas sous LT. Pour nos discutions dans Signal, j'ai eu un gros pépin sur mon ordi, j'ai du le formater et tout installé à nouveau, j'ai donc perdu notre discussion 🤕, mais j'y suis de nouveau.

@didier : je n'ai pour l'instant que le besoin de savoir si mon projet servira à plusieurs (voir plus) afin de le développer dans cette optique (pour des AutoCAD que je n'ai pas, simplifier mes macros, créer des infobulles...). J'analyserais aussi les commentaires afin de les inclure dans le projet.

@rebcao : ton idée est très bonne (tu en avais déjà proposé l'idée), et j'avais déjà un classeur gardé dans mes tiroirs, mais j'avais rencontré un problème que je n'avais pas pu résoudre à l'époque : la création d'un calque avec un type de ligne absent du DWG. Mais je vais maintenant me pencher sur la question (en créant un bouton dédié par exemple). Et comme je l'ai dis à Curlygoth, ta solution m'éviterait ce problème de type de ligne et de version d'AutoCAD.

Voilà chers collègues, vous en savez maintenant un peu plus sur mon projet. Je peux vous le partager (MP, courriel...) si vous insistez lourdement 😀, mais ce n'est encore qu'un embryon et je doute qu'il vous serve à quelque-chose. Je le partagerais quand il sera plus fonctionnel.

Encore merci pour votre aide et votre soutient.

Bon week-end à tous.

Denis...

Windows 10 Pro 64bits / AutoCAD 3D 2022

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. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @didier.

Je n'en attendais pas moins de ta part.
Je tente en ce moment de régler mon plus gros problème (dans ce post).
Je ne suis pas certain d'avoir beaucoup de temps en ce moment (sauf les week-end), mais je continu sur ce projet, qui me tient à cœur.

Amicalement.
Denis...

Windows 10 Pro 64bits / AutoCAD 3D 2022

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. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Salut @CTZen,

Je viens de voir à nouveau ta vidéo avec une question, quelle est ta version d'Excel ?
Est-elle antérieur à 2007 ?

Windows 10 Pro 64bits / AutoCAD 3D 2022

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. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Re,

J'ai oublié de préciser un petit truc à @Curlygoth.

Si c'est pour créer une suite de calques dans un dessin et de sauvegarder après celle-ci dans un fichier "paramètre", il serait plus judicieux de passer, pour un nouveau dessin, soit par un DWT ou soit par DesignCenter.

L'avantage d'un classeur unique est de réunir toutes ces suites dans un seul fichier (une par onglet) et de ce fait, on garde un seul classeur pour la totalité de toutes nos suite de calques, et ce, pour tout le monde et pour plusieurs années.

Je pense qu'il est plus facile de ne gérer qu'un fichier plutôt qu'une multitude.

Mais ce n'est que mon avis.

Bien à toi, la communauté.

Denis...

Windows 10 Pro 64bits / AutoCAD 3D 2022

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. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Le 06/11/2021 à 13:37, DenisHen a dit :

Salut @CTZen,

Je viens de voir à nouveau ta vidéo avec une question, quelle est ta version d'Excel ?
Est-elle antérieur à 2007 ?

Ce n'est pas ma vidéo, c'est une vidéo qui illustre la méthode que j'utilise pour créer des calques à la volée à partir d'une liste :rolleyes: Ca fonctionne avec n'importe qu'elle version d'excel bien entendu.

AutoCAD Map 3D 2023 (26.0.37.2 base T.53.0.0)
Covadis 18.0 + AutoPiste
Windows 11 Famille v.21H2 - 64 bits

Toujours à l'affût des bonnes astuces

Lien vers le commentaire
Partager sur d’autres sites

Citation

depuis AutoCAD, aller chercher un classeur, puis une feuille et importer ensuite son contenu, alors qu'Excel était probablement ouvert quelques secondes auparavant Et que faire des types de ligne non chargés dans le DWG. De plus, il y a quelques macros contenues dans ce classeur (import des types de ligne du fichier ouvert dans AutoCAD, incrémentation d'une partie du nom des calques...) qui aident à construire ces calques.

Alors c'est précisement la que tu te trompe ! c'est tekllement plus facile d'aller chercher un fichier et de le lire via vba autocad que de faire du excel vers autocad ! c'est pas vraiment plus compliqué mais en treme d'ergonomie tu n'as pas besoin d'aller sur excel pour faire des chose dans autocad qui sont native en VBA...

 


 

Citation

 

Si c'est pour créer une suite de calques dans un dessin et de sauvegarder après celle-ci dans un fichier "paramètre", il serait plus judicieux de passer, pour un nouveau dessin, soit par un DWT ou soit par DesignCenter.

L'avantage d'un classeur unique est de réunir toutes ces suites dans un seul fichier (une par onglet) et de ce fait, on garde un seul classeur pour la totalité de toutes nos suite de calques, et ce, pour tout le monde et pour plusieurs années.

Je pense qu'il est plus facile de ne gérer qu'un fichier plutôt qu'une multitude.

Mais ce n'est que mon avis.

Bien à toi, la communauté.

 

Faux !

j'ai des clients et notre fonctionnement interne qui avec toutes les possibilités devrais avoisiner les 1000 calque et encore je suis gentil...

j'ai UN module qui me génère les calques quand j'en est besoin ! je veux implanter un poteau eclairage ? ben le module va creer le calque pour les blocs eclairages avec son numero de départ par exemple... j'ai pas a le sélectionner ou mettre l'objet dans tout ce fait seul (encore une fois via autocad vba)

et ca m'evite aussi de charger le dessin de calque que je n'utiliserais jamais...

 

Citation

L'avantage d'un classeur unique est de réunir toutes ces suites dans un seul fichier (une par onglet) et de ce fait, on garde un seul classeur pour la totalité de toutes nos suite de calques, et ce, pour tout le monde et pour plusieurs années.

fait quelque chose de dynamique et d'intelligent tu n'en auras plus besoin... ou passe par une base de données tu auras un accès quasi instantanée

 

Citation

Je pense qu'il est plus facile de ne gérer qu'un fichier plutôt qu'une multitude.

Oui UNE base de données

Lien vers le commentaire
Partager sur d’autres sites

Salut @Curlygoth, effectivement, je me suis probablement trompé, et depuis longtemps peut-être, au sujet du VBA AutoCAD<->Excel...
J'ai toujours pensé que, d'où que vienne le code VBA (d'AutoCAD ou d'Excel), sa rapidité serait la même. 
Mais tu me dis qu'il est plus "court" et plus "rapide", et voir plus simple de fouiller un classeur Excel depuis AutoCAD que de "contrôler" AutoCAD depuis Excel.
Je te remercie pour cette remarque, bien que je ne comprend toujours pas pourquoi un TGV irait plus vite de Marseille à Paris et pas l'inverse.
Je vais donc revoir la totalité de mon projet, qui va se diviser en deux grâce à toi (et à d'autres) et j'espère que tu me permettra de te solliciter afin d'améliorer mon code...

Pour gérer une BD, Ok, mais laquelle ? Quelle format ? Car les accès à une BD est très galère à gérer (même si très rapide une fois la "communication établie"), surtout en automation... Aucun SQL ou autre BD n'ont encore trouvé la solution...
Maintenant, si en quelque lignes tu me prouves que l'accès à une BD est simple et facilement programmable en VBA, je suis preneur...

Bien à toi la communauté.

Denis...

Windows 10 Pro 64bits / AutoCAD 3D 2022

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. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Denis,

Je t'ai fait une petite vidéo pour illustrer le principe de mon générateur de CALQUES via EXCEL... (5% AutoCAD / 95% EXCEL)

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 @)

Lien vers le commentaire
Partager sur d’autres sites

Citation

, et voir plus simple de fouiller un classeur Excel depuis AutoCAD que de "contrôler" AutoCAD depuis Excel.

ben completement !

 

Citation

bien que je ne comprend toujours pas pourquoi un TGV irait plus vite de Marseille à Paris et pas l'inverse.

sauf que tu monte vers Autocad  ! et que tu ne descends pas vers tes données (ta base).... donc c'est pas tout a fait pareil ^^

la ou pour créer un calque dans excel tu vas avoir besoin de déclarer l'objet puis le fichiers puis le calque dans autocad tu fais QUE le calque !

 

Citation

Pour gérer une BD, Ok, mais laquelle ? Quelle format ? Car les accès à une BD est très galère à gérer (même si très rapide une fois la "communication établie"), surtout en automation... Aucun SQL ou autre BD n'ont encore trouvé la solution...
Maintenant, si en quelque lignes tu me prouves que l'accès à une BD est simple et facilement programmable en VBA, je suis preneur...

Pour la BDD c'est toi qui choisi ! si tu veux faire du excel avant de faire de la BDD tu peux et tu verras : c'est vachement plus facile !

mais pour les BDD pour beaucoup faut passé par SQL...

Ajout de la librairie Microsoft ADO Ext. X.X dor ddl and Security

Les 2 premiers blocs dans module SYS_SQL

et tu verras même si je ne connais pas tout en SQL je fais plein de chose avec ça :

Je t'invite à te renseigner sur le module et le fonctionnement ADO pour comprendre le code tu verras, il n'est pas compliqué au final

Citation

Maintenant, si en quelque lignes tu me prouves que l'accès à une BD est simple et facilement programmable en VBA, je suis preneur...

Content d'être là 😉

Function CHAMPS_ID()
    CHAMPS_ID = "N°"
End Function
Function TXT_OR_NUM(Valeur)
    On Error Resume Next
    Z = CDbl(Valeur)
    If Err.Number = 0 Then
        TXT_OR_NUM = Valeur
    Else
        TXT_OR_NUM = "'" & Valeur & "'"
    End If
    On Error GoTo 0
End Function
Function AJOUT_CHAMP_ID_A_LA_LISTE(LISTE_CHAMPS)
    Dim TAB_LISTE() As Variant
    MAX_LISTE = UBound(LISTE_CHAMPS) + 1
    ReDim Preserve TAB_LISTE(MAX_LISTE)
    For NUMERO_DE_LA_LISTE = LBound(LISTE_CHAMPS) To MAX_LISTE
        If NUMERO_DE_LA_LISTE = 0 Then
            TAB_LISTE(NUMERO_DE_LA_LISTE) = CHAMPS_ID
        Else
            TAB_LISTE(NUMERO_DE_LA_LISTE) = LISTE_CHAMPS(NUMERO_DE_LA_LISTE - 1)
        End If
    Debug.Print TAB_LISTE(NUMERO_DE_LA_LISTE)
    Next NUMERO_DE_LA_LISTE
    AJOUT_CHAMP_ID_A_LA_LISTE = TAB_LISTE
End Function
Function AJOUT_NUMERO_ENREGISTREMENT_A_LA_LISTE(LISTE_VALEUR, NUMERO_ENREGISTREMENT)
    Dim TAB_LISTE() As Variant
    MAX_LISTE = UBound(LISTE_VALEUR) + 1
    ReDim Preserve TAB_LISTE(MAX_LISTE)
    For NUMERO_DE_LA_LISTE = LBound(LISTE_VALEUR) To MAX_LISTE
        If NUMERO_DE_LA_LISTE = 0 Then
            TAB_LISTE(NUMERO_DE_LA_LISTE) = CInt(NUMERO_ENREGISTREMENT)
        Else
            TAB_LISTE(NUMERO_DE_LA_LISTE) = LISTE_VALEUR(NUMERO_DE_LA_LISTE - 1)
        End If
    Debug.Print TAB_LISTE(NUMERO_DE_LA_LISTE)
    Next NUMERO_DE_LA_LISTE
    AJOUT_NUMERO_ENREGISTREMENT_A_LA_LISTE = TAB_LISTE
End Function

Dim enr As Recordset
Dim base As Database
Dim UsF As Object
Dim TAB_VAL() As String

Function LISTING_DU_CHAMP(CHEMIN_FICHIER_BDD, NOM_TABLE, NOM_CHAMP)

Set base = DBEngine.OpenDatabase(CHEMIN_FICHIER_BDD)
Set enr = base.OpenRecordset("SELECT DISTINCT `" & NOM_CHAMP & "` FROM `" & NOM_TABLE & "`ORDER BY `" & NOM_CHAMP & "` ASC")
d = enr.RecordCount - 1
If d = -1 Then
    LISTING_DU_CHAMP = ""
    GoTo fin:
Else
End If
ReDim TAB_VAL(d)
ITE = 0
enr.MoveFirst
Do
TAB_VAL(ITE) = enr.Fields(NOM_CHAMP).Value
ITE = ITE + 1
enr.MoveNext
Loop Until enr.EOF = True
enr.Close
LISTING_DU_CHAMP = TAB_VAL
fin:
base.Close
Set enr = Nothing
Set base = Nothing
End Function
Function RESULTAT_LIRE(CHEMIN_FICHIER_BDD, NOM_TABLE, NOM_CHAMP_DEP, VALEUR_CHAMP_DEP, NOM_CHAMP_RETOUR) 'Retourne une liste !!!!
CHEMIN_FICHIER_BDD = CHEMIN_BDD(CHEMIN_FICHIER_BDD)
Set base = DBEngine.OpenDatabase(CHEMIN_FICHIER_BDD)
If NOM_CHAMP_RETOUR = "" Then
    NOM_CHAMP_RETOUR = "*"
Else
End If
REQUETE = "SELECT DISTINCT `" & NOM_CHAMP_RETOUR & "` FROM `" & NOM_TABLE & "` WHERE `" & NOM_CHAMP_DEP & "` = " & SYS_SQL.TXT_OR_NUM(VALEUR_CHAMP_DEP)
Debug.Print REQUETE
Set enr = base.OpenRecordset(REQUETE)
d = enr.RecordCount - 1
If d = -1 Then
    ReDim TAB_VAL(0)
    TAB_VAL(0) = -1
    RESULTAT_LIRE = TAB_VAL
     GoTo fin:
Else
End If
ReDim TAB_VAL(d)

ITE = 0
enr.MoveFirst
Do
TAB_VAL(ITE) = enr.Fields(NOM_CHAMP_RETOUR).Value
'On ajoute 1 pour la ligne de la liste et On bouge 1 pour l'enregsitrement
ITE = ITE + 1
enr.MoveNext
Loop Until enr.EOF = True

RESULTAT_LIRE = TAB_VAL

fin:

enr.Close
Set enr = Nothing
base.Close
Set base = Nothing

End Function
Function ENTREE_DONNEE(CHEMIN_FICHIER_BDD, NOM_TABLE, LISTE_CHAMPS, VALEUR_CHAMPS, N_ENR)
Dim LISTE_CHAMPS_SQL As String
Dim VALEUR_CHAMPS_SQL As String
If UBound(LISTE_CHAMPS) <> UBound(VALEUR_CHAMPS) Then
    MsgBox "Le nombre de champs n'est pas égale au nombre de valeur"
    Exit Function
Else
End If
If LBound(LISTE_CHAMPS) = UBound(LISTE_CHAMPS) Then
    LISTE_CHAMPS_SQL = "(" & SYS_SQL.CHAMPS_ID & "," & LISTE_CHAMPS(LBound(LISTE_CHAMPS)) & ")"
    VALEUR_CHAMPS_SQL = "(" & N_ENR & "," & VALEUR_CHAMPS(LBound(VALEUR_CHAMPS)) & ")"
Else
    LISTE_CHAMPS_MODIF = SYS_SQL.AJOUT_CHAMP_ID_A_LA_LISTE(LISTE_CHAMPS)
    VALEUR_CHAMPS_MODIF = SYS_SQL.AJOUT_NUMERO_ENREGISTREMENT_A_LA_LISTE(VALEUR_CHAMPS, N_ENR)
    For L_v = LBound(LISTE_CHAMPS_MODIF) To UBound(LISTE_CHAMPS_MODIF)
        If L_v = LBound(LISTE_CHAMPS_MODIF) Then
            test = VALEUR_CHAMPS_MODIF(L_v)
            LISTE_CHAMPS_SQL = "(" & LISTE_CHAMPS_MODIF(L_v) & ","
            VALEUR_CHAMPS_SQL = "(" & SYS_SQL.TXT_OR_NUM(VALEUR_CHAMPS_MODIF(L_v)) & ","
        Else
            If L_v = UBound(LISTE_CHAMPS_MODIF) Then
                LISTE_CHAMPS_SQL = LISTE_CHAMPS_SQL & LISTE_CHAMPS_MODIF(L_v) & ")"
                VALEUR_CHAMPS_SQL = VALEUR_CHAMPS_SQL & SYS_SQL.TXT_OR_NUM(VALEUR_CHAMPS_MODIF(L_v)) & ")"
            Else
                LISTE_CHAMPS_SQL = LISTE_CHAMPS_SQL & LISTE_CHAMPS_MODIF(L_v) & ","
                VALEUR_CHAMPS_SQL = VALEUR_CHAMPS_SQL & SYS_SQL.TXT_OR_NUM(VALEUR_CHAMPS_MODIF(L_v)) & ","
            End If
        End If
    Next L_v
End If
    Set base = DBEngine.OpenDatabase(CHEMIN_FICHIER_BDD)
    REQUETE = "INSERT INTO " & NOM_TABLE & " " & LISTE_CHAMPS_SQL & " VALUES " & VALEUR_CHAMPS_SQL & ";"
    Debug.Print REQUETE
    base.Execute REQUETE
    base.Close
    Set base = Nothing
End Function
Function RECUP_NOM_CHAMPS(CHEMIN_FICHIER_BDD, NOM_TABLE)
Dim fld As Field
Dim tdf As TableDef
Dim TAB_CHAMP()
C = 0
Set base = DBEngine.OpenDatabase(CHEMIN_FICHIER_BDD)
Set tdf = base.TableDefs(NOM_TABLE)
    For Each fld In tdf.Fields
        ReDim Preserve TAB_CHAMP(C)
        TAB_CHAMP(C) = fld.Name
        C = C + 1
       'Debug.Print "Champ " & fld.Name
    Next fld
RECUP_NOM_CHAMPS = TAB_CHAMP
base.Close
Set base = Nothing
End Function
Function RECUP_NOMBRE_ENR(CHEMIN_FICHIER_BDD, NOM_TABLE)
Dim tdf As TableDef
Set base = DBEngine.OpenDatabase(CHEMIN_FICHIER_BDD)
Set tdf = base.TableDefs(NOM_TABLE)
RECUP_NOMBRE_ENR = tdf.RecordCount
base.Close
Set base = Nothing
End Function

 

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...

Salut la communauté.
J'ai bien avancé sur mon projet et j'ai bien sûr pris toutes vos remarques en compte...
Donc, je vais faire en sorte que mon fichier Excel sera pour tous les AutoCAD (LT et complet) ainsi que pour un maximum de versions.
J'ai déjà commencé à faire un bout de code pour créer un Script pour les version LT, je vais aussi créer un code pour récupérer les types de ligne issues d'un fichier .lin (déjà fait) et un DXF (en cours). Car il faut impérativement que la syntaxe des noms soit respecté, et c'est beaucoup plus simple via un DXF. Enfin je pense...
Je vais aussi faire un DVB (plus tard) pour lire directement le fichier Excel depuis AutoCAD, plus besoin d'avoir Excel sur le poste où se trouve AutoCAD.
Je suis actuellement sur le mode d'emploi, car je pense qu'il ne sera pas de trop.
Je reviendrais vers toi (la communauté) quand j'aurais une proposition un peu solide, une version Beta en gros. 😉
Pour l'instant, je continu mon code pour qu'il soit apte à recevoir ce tampon "Beta"...😉
Bien à toi, la communauté.
Denis...

Windows 10 Pro 64bits / AutoCAD 3D 2022

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. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Salut @Curlygoth.
Je pense m'être mal fais comprendre.
Je cherche à connaitre les types de lignes contenus dans un DXF, et en VBA...
Car j'aimerais que mon code serve aux utilisateurs d'AutoCAD LT, et ton Lisp ne l'autorise pas...

Windows 10 Pro 64bits / AutoCAD 3D 2022

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. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Salut l'ami, je n'ai pas compris ton message...
Oui, je cherche a créer un fichier Excel qui créera des calques dans AutoCAD (Nom, Type de ligne, Couleur, Épaisseur, "plottable"...) directement ou pas, car j'aimerais le faire aussi pour les utilisateurs des version LT. Mais tu sais que recopier les nom des types de ligne (parfois des dizaines, voir des centaines) peut être très laborieux.
Et pour bien faire, j'aimerais incorporer dans mon fichier Excel la liste des types de ligne contenu dans un DXF (très facile à faire depuis une LT), car je ne peut dialoguer depuis Excel avec un AutoCAD LT.
Bonne soirée l'ami et je suis heureux que tu me propose ton aide.
Denis...

Windows 10 Pro 64bits / AutoCAD 3D 2022

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. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Depuis que je pratique ce genre d'application AutoCAD-EXCEL, je trouve que vouloir gérer depuis AutoCAD un tableau EXCEL avec des liens en mode base de données et bien trop lourd à mettre en oeuvre !

Depuis très longtemps, j'utilise les SCRIPTS qui sont le seul moyen pour créer des APPLICATIONS qui peuvent être très sophistiquées et surtout 100% compatibles AutoCAD LT...

Voici une illustration de mon tableau EXCEL pour préparer,  puis créer la liste dans AutoCAD. Ce tableau est appelé depuis AutoCAD ou/et AutoCAD LT bien sur.

J'estime ça bien plus simple que de créer un programme que ce soit VBA ou LISP et de toute façon dans ce cas les versions LT sont mises à la touche !!!!!!!!!!!!!

à l'occasion, je ferais une petite vidéo avec quelques exemples d'application AutoCAD LT - EXCEL...


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 @)

Lien vers le commentaire
Partager sur d’autres sites

 

Citation

Mais tu sais que recopier les nom des types de ligne (parfois des dizaines, voir des centaines) peut être très laborieux.

ben si tu veux pas le faire (et moi je le ferais pas !!) demande au vba de le faire pour toi !

 

Sub METTRE_DANS_PRESS_PAPIER(TEXTE)
Dim DataObj As New MSForms.DataObject
    With DataObj
      .SetText TEXTE
      .PutInClipboard
    End With
End Sub


Function COLLER_DU_PRESS_PAPIER()
Dim MSForm As Object
    Set MSForm = New DataObject
    MSForm.GetFromClipboard
    TEXTE = MSForm.GetText
    Set MSForm = Nothing
COLLER_DU_PRESS_PAPIER = TEXTE
End Function

 

il te reste juste à concatener les textes dans une variable

Lien vers le commentaire
Partager sur d’autres sites

Salut à vous, et merci pour vos remarques.

@rebcao : c'est bien mon idée, créer une ou plusieurs "configuration(s)" de calques dans un classeur Excel et, soit l'exporter directement dans AutoCAD (versions complètes) ou en faire un script (versions LT). Je suis tout à fait d'accord avec toi, je ne veux pas "laisser sur la touche" les utilisateurs d'LT.

@Curlygoth : je cherche juste à ouvrir un DXF (comme un TXT via un Open tout simplement) en VBA et fouiller son contenu pour en sortir la liste des types de ligne définis dans ce DXF. je pense avoir trouvé un truc, chercher les "AcDbLinetypeTableRecord", code DXF 2...

Encore merci à vous...

Denis...

Windows 10 Pro 64bits / AutoCAD 3D 2022

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. (Moi)

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité