Aller au contenu

Dialogue d'ouverture de fichier.


DenisHen

Messages recommandés

Bonjour à tous.

Je me remets petit à petit au VBA et je cherche la commande FileDialog qui existe en VBA pour MS-Office mais je n'ai rien trouvé.
Existe-t-elle pour AutoCAD ? Si non, y-a-t 'il un équivalent ?

Bonne journée à la communauté.

Denis...

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)

Lien vers le commentaire
Partager sur d’autres sites

Salut, alors tu as plusieurs solution :

1°) tu connais par coeur les chemins complets de tes fichiers et tu peux entrer le chemin dans un inputbox (je blague)

2°) Tu utilise le filedialogue de ms-office !

Dans les références tu coches Micorsoft Excel XX.0 Object librairy

Tu crée ta collection :

 

    Dim xlApp As Excel.Application
    Set xlApp = CreateObject("Excel.Application")
    MonFichier = xlApp.GetOpenFilename("Tous les fichiers (*.*),*.*") 'l'emplacement et le nom du fichier texte

et tu remplace "*.*" par l'extrension que tu veux sélectionner "*.csv" pour ne voir que les fichiers csv ...

3°) Tu télécharges mon explorateur a tes risque et péril ^^ (mais un retour sur erreur serait cool)

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Bonjour

Il est peut être plus judicieux de passer par un objet Shell qu'excel qui n'est pas forcément installé

il y a plein d'exemple sur le net, Denis je me permet de te rappeler l’existence de Google...tape explorer un dossier en VBA

sinon en passant, en Autolisp c'est getfiled

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Fraid et merci pour ton aide.

Je me suis diriger vers le VBA parce-que, justement, je n'arrive pas à ce que je veux faire sous LiSP, je me tourne donc vers mes "racines", le VBA...

Je vais de ce pas sur Google...

Bon week-end à la communauté.

Denis...

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)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @DenisHen

Qu'est-ce que tu n'arrives pas à faire en LSP ?
Admettons que le VBA soit plus simple pour toi (de quelles racines parles-tu ?? ça doit dater quelque peu)
Mais je pense que changer pour changer il vaut mieux passer à Visual Studio,
C'est pas la première fois qu'on t'en parle, mais bon ...

J'ai trouvé une bidouille, mais c'est de la bidouille au carré juste pour dire que c'est faisable...

C'est ça que tu veux faire ?

Amicalement

C89BA54F-B17B-4859-AD46-785F1F0B3C14.GIF

 

 

Lien vers le commentaire
Partager sur d’autres sites

Bonjour didier (ça faisait longtemps, souviens-toi, "Si quelqu'un a une astuce, un conseil ou même une solution, je suis preneur".😊).

Premièrement, j'ai appris le VBA sous Excel, et j'ai fais des trucs très intéressant sous Excel pour piloter AutoCAD. Mais ça, c'était avant (1994 ? mes début dans la programmation)...

Deuxièmement, j'aurais voulu ouvrir un .csv contenant une liste de calques avec différentes données et les créer dans AutoCAD. J'ai commencé avec du LiSP mais je me suis heurté à mon manque de compétences... Tout est sur ce fil. Maître (gile) m'a bien sous-entendu clairement (qu'aurait-il pu faire de plus) que je m'attaquais à gros, notamment les code DXF 1000 (les descriptifs des calques), qui, d'après ce que j'ai compris sont des sous DXF du code DXF -3, ne me demande rien de plus, je suis perdu.

Je pense donc avoir atteint mes limites en LiSP. Mais je ne le dénigre pas pour autant, je continuerais le LiSP (j'adore), je connais maintenant mes limites dans ce langage (y compris Lambda et MapCar 😉).

Je me tourne donc maintenant vers mes "racines", le VBA que je connaissais bien avant de faire du LiSP, mais le VBA de MS-Office est bien différent de celui d'AutoCAD...

Par exemple, il n'y a pas (dans le VBA d'AutoCAD) de boite de dialogue pour ouvrir un fichier, je n'ai absolument rien trouvé là-dessus, et j'ai cherché toute l'après-midi...

En tous cas, je te souhaite une bonne soirée et un bon week-end, si tenté que tu en ai un...

Amicalement.

Denis...

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)

Lien vers le commentaire
Partager sur d’autres sites

Salut CurlyGoth.

Pas de problème, montre-moi une boite de dialogue pour ouvrir n'importe quel fichier depuis le VBA d'AutoCAD (comme FileDialog d'Excel), sans charger une référence externe (comme celle d'MS-Office par exemple).

Pour être clair, comment ouvres-tu une boite de dialogue "Ouvrir" depuis le VBA d'AutoCAD sans autre aide ou MSO ? En "natif" AutoCAD 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)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour

-------------------------------------------

@DenisHen

Admettons, je ne suis pas convaincu

-------------------------------------------

@Curlygoth

Je vais être un lecteur assidu, car avec tout ce qu'on dit sur le VBA on va le voir à l'œuvre et c'est une bonne chose.

-------------------------------------------

Amicalement

 

Lien vers le commentaire
Partager sur d’autres sites

Salut @didier.

"Admettons, je ne suis pas convaincu" je n'ai pas compris, j'espère que tu dis du mal de moi... 🤣

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)

Lien vers le commentaire
Partager sur d’autres sites

J'y vais de ce pas...

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)

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir,

 

Les développeurs d'AutoCAD propose une solution pour utiliser la case de dialogue standard d'AutoCAD pour ouvrir un fichier en VBA

https://adndevblog.typepad.com/autocad/2013/03/selecting-file-with-standard-autocad-fileopen-dialog.html

Ah bah oui, il faut utiliser du lisp 😂

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

Ça ressemble à une fuite (en avant ?).
Déjà tu as besoin d'aide pour une boite de dialogue. Mais tout le reste, lire le fichier texte, créer les calques avec les données étendues pour le commentaire, tu sais le faire en VBA AutoCAD, ou tu penses que c'est plus simple qu'en LISP ? Tout ce que tu fais avec le VBA AutoCAD peut être fait avec Visual LISP qui peut acccéder à la même interface COM/ActiveX.

J'aurais continué à t'aider en essayant de te pousser à être plus méthodique  (décomposer le problème en problèmes plus simples et les résoudre avec des fonctions séparées) mais si tu penses que changer de route est mieux pour toi...

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Bonjour @Curlygoth

J'étais déjà allé jeter un œil sur ces vidéos lors des dernières discussions à ce sujet, ça a l'air de bien fonctionner, rien à dire, mais lorsque je parlais de lecteur assidu, je parlais de code, car la preuve de l'efficience (ou simplement la différence) par rapport au lisp est le sujet du jour.

-------------------------

@Olivier Eckmann

C'est ce dont je parlais en parlant de "bidouille" en trois lignes de code

Amicalement


 

Lien vers le commentaire
Partager sur d’autres sites

Quote

J'étais déjà allé jeter un œil sur ces vidéos lors des dernières discussions à ce sujet, ça a l'air de bien fonctionner, rien à dire, mais lorsque je parlais de lecteur assidu, je parlais de code, car la preuve de l'efficience (ou simplement la différence) par rapport au lisp est le sujet du jour.

a par rapport à l'efficience ? j'en sais rien du tout je connais pas le lisp... je connais le VBA .. quand je connaitrais les deux et surtiout quand j'aurais votre excellent niveau je jugerais... pour l'instant je connais le vba je fais avec ^^

Je cherche un gagner des heures de travail pas des secondes... mais je vous rejoins totalement le vba est peut etre pas le plus rapide mais pour moi le plus abordable pour l'instant ^^

Lien vers le commentaire
Partager sur d’autres sites

Dans le lien donné par @Olivier Eckmann la réponse du grand (de l'immense) Tony Tanzillo est sans appel :

Quote

It's truly shameful that VBA programmers must resort to this sort of kludgery to solve a simple problem like this.

But, if they have to, then VL.Application would be a better way to go about it.

PS : VL.Application = Application Visual LISP

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à toute la communauté.

@(gile), je ne ferais jamais ö grand jamais faire quoique ce soit pour cherché à te vexer, tu nous a tellement appris à tous, même aux plus grands... Je me suis juste aperçu que j'ai essayé le Lisp, mais je ne peux pas aller plus loin, j'ai bien appris, grâce à toi, à vous, membre de CaxXP (je pense à didier, Tramber, BonusCAD, RebCAO, Patrick...)... J'en suis désolé, mais j'ai essayer, n'ayant pas l'aide appropriée (vous m'avez tellement apporté, mais peut-être était-ce insuffisant, je veux dire que tout le monde ne né pas pédagogue, ni élève... C'est très difficile d'apprendre à quelqu'un... Malgré votre aide à tous...Mais Diriger systématiquement les demandeurs vers Google, je serais le faire pour les demandeurs de Cobol... Tu cherche un code : Google est ton ami, tu pisse bleu Google est ton ami, ton père te viole tous les jours à 23 heure depuis tes 9 ans ? Google est ton ami...) 

Il y en a marre de "Google est ton ami", si on poste une demande, croyez-vous que nous n'avons pas cherché au moins un minimum ?

Ici, on cherche des réponses, pas des leçons de Dieu Google...

Soyez serviables les amis (es) vous avez le savoir, partagez-le, c'est ce qu'ont vient chercher ici, une petite phrase, un indice, un conseil, une astuce (@didier, si tu me lis, une pensée pour toi), c'est tous ce que l'on cherche, une direction, et pas... "Google et ton ami".

J'en ai fais la piètre expérience aujourd'hui, je cherchais des réponses, des conseilles, mais j'ai eu le droit à, attention, c'est du lord... : "Google est ton ami"...

Et tu fais quoi avec ça ? Je cherchais en VBA une boite de dialogue pour ouvrir un fichier depuis le VBA d'AutoCAD... Je pensais que l'auteur du "Google est ton ami" savait que j'allais trouver ce que je cherchais... Mais non, Il a juste dis : "Google est ton ami"... Et je n'ai absolument rien trouvé en deux heures de recherche, et après, il ne m'a pas plus aidé... Donc, maintenant, dès qu'il y aura un Topic, un message, une question, devrai-je répondre systématiquement : "Google est ton ami" ? Ou vais-je l'aider réellement ?

Qu'est-ce que je cherche quand je pose une question sur ce forum ? Une réponse ou "Fais pas chier et cherche dans Google" (même si tu as déjà cherché pendant des heures) je m'en branle, je fais mon intéressant pour me sentir au dessus des autres... Donc ma réponse est : Cherche connard... Mais je ne ferais rien. Je ne partage pas ma connaissance et je ne t'aiderais pas... Ma réponse, tu la connais : démerde-toi... Ici, je ne t'aiderais pas...

Ce n'est pas la politique de CadXP, que je connais depuis 2005 (il me semble), ici on partage, on aide, on dirige, on oriente... On est les uns avec les autres... Je n'ai jamais renié de l'aide quand je pouvais le faire... C'est l'esprit Socrate : "La connaissance s'accroît quand on la partage". 7Mais je vois que certains l'on oublié...

Je n'en veux à personne, je ne regrette rien, je connais juste des être extraordinaire via ce site (je ne citerais pas de non, mais ils savent qu'ils sont là)...

Mais s'i vous plaît, plus de "Google est ton ami", PUTAIN, vous croyez quoi, que nous n'avons pas cherché un minimum avant de s'abaisser à vous demander de l'aide ? ? ?

Un Denis énervé après un "Google est ton ami"...

Bon Week-end à la communauté...

 

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)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

il me semble, comme je te l'ai dit précédemment, que getfiled en autolisp, me semble convenir a ta demande.

Après, pour importer des calques, il existe un outil déjà intégré à Autocad

qui s’appelle le gestionnaire d'état de calques

tu enregistre un état, tu obtient un .lay

que tu importe avec le même outil

Lien vers le commentaire
Partager sur d’autres sites

je ne contredit pas fraid...

(même si j'avoue avoir un moteur de génération de calque, je trouve ça plus dynamique mais bon c'est que mon point vu sur les calques)

pour revenir a ton "coup de gueule" je pense qu'on a

(chacun d'entre nous) et surtout que les meilleurs (que je me permets de cité haut et fort !  ( @didier, @Fraid, @(gile),@Olivier Eckmann )

ont répondu pour te répondre avec chacun une solution !

Prend celle qui te convient 😉

PS : Je rejoins (Gile) sur la réponse d'Olivier Eckmann... pour écrire du sendcommand ou du lisp en vba autant faire du lisp XD

 

 

Lien vers le commentaire
Partager sur d’autres sites

Salut Fraid.

Mes calques sont tous dans un ou plusieurs .csv, mais lors de leur création, je les renommes "en partie", exemple, le calque "ECPS_000_BATI" devient "ECPS_00_000BATI", car le "00" est une variable pris sur un XData qui est le niveau courant du dessin...
Exemple, le niveau courant est "01" (premier étage déclaré dans un XData), j'insert le calque "ECPS_000_BATI" et le renomme en "ECPS_01_000_BATI", et ça, aucun gabarit ou aucun DesignCenter ne le fera...

Merci pour ton intervention, mais je m'y attendais 😛

Denis...

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)

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é