Aller au contenu

Exemple de VBA ...


didier

Messages recommandés

Bonjour à Toutes et à Tous.

Il semble que beaucoup de personnes soient intéressées par le VBA, dans AutoCad ...

Ce soir je donne un exemple de ce qu'on peut réaliser, ce n'est pas vraiment utile ni productif, c'est juste un exercice de style.

Le fichier que je propose au téléchargement contient déjà le code des "Subs".

C'est ce qui permet de ne pas avoir à lancer une macro, avec les habituelles erreurs de chemin.

 

Il est possible qu'à l'ouverture du fichier, le message sur la sécurité des macros apparaîsse, vous pouvez activer les macros en me faisant confiance, je n'ai rien écrit de vicieux, mais c'est possible, méfiez vous de l'origine des macros. C'est un autre sujet, qui peut être developpé le cas échéant.

 

A l'écran va apparaître un dessin ne contenant qu'un ARC, tapez "ALT + F8", la liste des macros disponibles apparaît, choisissez la première et cliquez sur le bouton "EXECUTER".

c'est parti.

 

Mais revenons à mon fichier, il s'agit via des "Userforms" d'obtenir tous les renseignements possibles sur une entité "ARC". Au début, je vous conseille d'utiliser tous les boutons et autres cases de dialogue,

tous les renseignements se recalculent "à la volée" lorsque vous changez les options, vous pouvez volontairement entrer des données erronées dans les cases de la feuille "Calculs",

j'ai mis un peu d'humour dans les messages d'erreur, ça manque souvent au milieu informatique...

ensuite vous pourrez aller lire le code en tapant "Alt+F11" ou ligne de commande : VBAIDE.

Vous avez maintenant accès au code proprement dit, à vous de décortiquer.

A votre disposition pour discuter des méthodes employées et peut être une explication des formules.

 

Il doit être présent à votre esprit que :

JE NE SUIS PAS UN PROFESSEUR, et donc mes méthodes fonctionnent mais ce n'est pas un expert qui a écrit ces lignes, donc je supporte les critiques, si elles sont constructives.

 

Si quelque chose ne fonctionne pas, c'est là que çà m'intéresse, car étant isolé, je n'ai pas moyen de tout débugger, par contre si ça fonctionne un clin d'oeil à l'auteur fait toujours plaisir.

 

Je souhaite que ce fichier serve d'exemple, mais vous pouvez utiliser les formules, je n'en suis pas propriétaire,

bien amicalement :D

Cliquez sur le lien qui suit pour télécharger le fichier

Téléchargez le fichier

 

 

Lien vers le commentaire
Partager sur d’autres sites

Didier,

 

Dommage que ma machine de navigation d'Autocad ne soit pas équipé ce soir pour que je puisse essayer.

 

J'ai fait beaucoup d'arc dans mon petit chemin de vie, mais jamais en VBA !

 

Je suis impatient :cool:

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Ah, voila une chose intéressante, je le télécharge et je vois ça dès que je peux, mais une question me trotte en tête, retrouve t-on le basic (voir du qbasic) de ma jeunesse des instructions, syntaxes (style gosub, goto, for next, etc...) et autres dans le vba ? Est-ce tout simplement un "clone" de l'ancien basic avant de s'orienter vers la programmation objet avec une dose de pascal ?

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Je commence à regarder ton prog et ça n’a pas l’air simple , mais est-on obligé de laisser sa macro dans un dessin, ne peut-on pas l’écrire dans un fichier et la charger quand on en à besoin et quelle que soit le dessin ?

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Bonsoir à Toutes et à Tous

En réponse à Patrick_35 :

Bien sûr que les "subs" peuvent être individuelles

et appellées de n'importe quel dessin.

C'est même leur principale finalité,

comme un Lisp, çà peut devenir des programmes

annexes à AutoCad et devenir des nouvelles commandes.

Si j'ai fait comme çà dans mon exemple,

c'est pour que néophite ne s'emberlificote pas les touches du clavier

pour charger les macros avec les "VBALOAD"

et tous les problèmes éventuels de chemin de recherche des fichiers

inhérents à chaque configuration.

Voilà l'explication, sinon çà fonctionne ?

amicalement

 

Lien vers le commentaire
Partager sur d’autres sites

Excuse moi Didier si certaines de mes questions peuvent paraître idiotes, mais connaissant très mal le vba, je regarde d'abord ce qu'il est capable de faire et comment, avant d'apprendre une fois encore un nouveau langage (et le célibat n'étant plus, ça devient plus hard de se coller à son pc)

 

Tu n'a pas répondu à ma première interrogation, mais peut-être que tu n'a jamais fais du basic auparavant

 

Je viens de lancer ...ARC_DEFINITION.dwg!Module1.AA_SelEntite et ça plante avec comme message d'erreur

 

Erreur de compilation:

Type ActiveX non géré dans Visual Basic

 

C'est dans Label79 en BeforeDragOver

 

Encore une question, décidément j'ai du mal à évoluer avec vba, est-il possible de voir notre code comme avec du lisp, c'est à dire en un seul listing plutôt qu'avec plusieurs fenêtres, et que ce soit aussi valable avec le paramétrage des fenêtres (comme avec du dcl)

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Excuse moi Didier si certaines de mes questions peuvent paraître idiotes, mais connaissant très mal le vba, je regarde d'abord ce qu'il est capable de faire et comment, avant d'apprendre une fois encore un nouveau langage (et le célibat n'étant plus, ça devient plus hard de se coller à son pc)

 

Tu n'a pas répondu à ma première interrogation, mais peut-être que tu n'a jamais fais du basic auparavant

 

Je viens de lancer ...ARC_DEFINITION.dwg!Module1.AA_SelEntite et ça plante avec comme message d'erreur

 

Erreur de compilation:

Type ActiveX non géré dans Visual Basic

 

C'est dans Label79 en BeforeDragOver

 

Encore une question, décidément j'ai du mal à évoluer avec vba, est-il possible de voir notre code comme avec du lisp, c'est à dire en un seul listing plutôt qu'avec plusieurs fenêtres, et que ce soit aussi valable avec le paramétrage des fenêtres (comme avec du dcl)

 

Amicalement

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Excuse moi Didier si certaines de mes questions peuvent paraître idiotes, mais connaissant très mal le vba, je regarde d'abord ce qu'il est capable de faire et comment, avant d'apprendre une fois encore un nouveau langage (et le célibat n'étant plus, ça devient plus hard de se coller à son pc)

 

Tu n'a pas répondu à ma première interrogation, mais peut-être que tu n'a jamais fais du basic auparavant

 

Je viens de lancer ...ARC_DEFINITION.dwg!Module1.AA_SelEntite et ça plante avec comme message d'erreur

 

Erreur de compilation:

Type ActiveX non géré dans Visual Basic

 

C'est dans Label79 en BeforeDragOver

 

Encore une question, décidément j'ai du mal à évoluer avec vba, est-il possible de voir notre code comme avec du lisp, c'est à dire en un seul listing plutôt qu'avec plusieurs fenêtres, et que ce soit aussi valable avec le paramétrage des fenêtres (comme avec du dcl)

 

Amicalement

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

bonjour

c'est bizarre que çà plante là

mais désactive la sub

en mettant un apostrophe

devant les cinq lignes de la :

Private Sub Label79_BeforeDragOver :casstet:

si çà continue de planter, fais moi signe

a bientôt, pour de bonnes nouvelles

 

Lien vers le commentaire
Partager sur d’autres sites

Salut Didier, décidément, il y a quelque chose, j'ai bien passé en rem les cinq lignes que tu m'a indiquées, mais rebelote cette fois ci en Private Sub Label90_BeforeDragOver. Je les passe aussi en rem et ça à l'air de fonctionner cette fois-ci. (je suis sur une version 2000 sous NT)

Ca m'a l'air vachement bien ton prog avec plusieurs onglets, reste maintenant à approfondir

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

Bon, plus je regarde ton prog, plus je me pose des questions

1) Peut-tu nous donner la démarche la plus facile à suivre pour créer un prog (faire d’abord la boite de dialogue avec sa mise en forme par exemple, et comment récupérer les valeurs au fur à mesure du développement)

2) A quoi sert l'explorateur de projet

3) Pourquoi une feuille générale avec des déclarations de variables, de fonctions, etc...

4) A quoi correspond les UserFormn, Autocad Object, Modules... et Module de classe

5) Dans le Module 1 (Code) , pourquoi une liste défilante (Général) et à quoi elle sert

6) Quelle est le principe de déclaration des variables et leurs type

7) Aurai-tu un lien indiquant les principales fonctions du vba en français avec leurs syntaxe

 

Ca fait un paquet de questions et je te remercie par avance de ton aide, mais c'est pour mieux comprendre le principe de fonctionnement du vba, après, ce n'est plus que du vocabulaire

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

bonsoir

En réponse à Patrick_35 :

mais mon pauvre ami, si je savais répondre à toutes tes questions,

il y a longtemps que j'aurai des résultats en VBA.

je commence à balbutier, alors que çà fait plus d'un an que j'applique

une méthode qui me servit naguère à apprendre à marcher :

LES ESSAIS ET LES ERREURS ...

je suis maintes fois tombé sur les genoux, et maintenant çà boite un peu

mais çà marche.

tout çà pour dire que je "sens" la façon dont çà tourne mais je ne suis

pas un théoricien, et ne saurai répondre à tes questions,

sans pour autant vouloir faire de la rétention d'info, je ne serai pas ici sinon,

mais je suis DEBUTANT, donc il serait MAUVAIS que je fasse un "cours", au risque

de balancer de fausses informations qui seraient prises pour argent comptant.

 

Si j'ai mis ce truc à dispo, c'est pour le décortiquer, c'est ce que j'ai fait avec

les exemples que j'ai trouvé ici et là...

je suis "responsable" des formules employées, c'est de la géométrie,

la mise en forme, les déclarations et tout le reste c'est du VBA.

les seules "vraies" aides existantes, portent sur le VBA appliqué à "Excel".

le bouquin de "Albert M THALHEIM" est aussi un point de départ.

amicalement en te souhaitant de la ténacité

Lien vers le commentaire
Partager sur d’autres sites

Salut Didier, au vu de ton prog, tu m'a l'air de quelqu'un qui maîtrise bien le vb. Comme tu te proposais gentiment de faire bénéficier de ton expérience sur ce sujet, ça m’aurait sûrement évité de tâtonner afin de comprendre les bases du vba et évité les erreurs. Je pense que le plus simple est de faire une appli et de poser les questions quand je suis bloqué. Merci de ta bienveillance et à une prochaine

 

Amicalement

 

Ps : Tu es un crack en géométrie ?, si oui, pourrait tu me donner un coup de main pour calculer la nouvelle position en coordonnées en absolue à partie d’un point de base (en absolue) puis de coordonnées relatives avec un angle. Je suis bien passé par cal, mais je ne trouve pas ça top

 

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

bonjour Patrick_35

pas de problème pour tes coordonnées,

qu'as tu comme données de départ ?

veux tu un programme, ou bien les formules

de transformation de polaires en rectangulaires ?

amicalement

ami cal le mans

ami k allemand ;)

Lien vers le commentaire
Partager sur d’autres sites

Merci de ton aide

C'est juste des formules dont j'ai besoin, l'école c'est très loin

En un peut plus clair, j'ai un point en coordonnées absolue, je le déplace en relatif par exemple en faisant @10,20 ou encore @5<145, quelles sont les nouvelles cordonnées absolue

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Lien vers le commentaire
Partager sur d’autres sites

bonjour

en réponse à Patrick_35 :

dans le premier cas que tu cites :

@10,20

là il n'y a aucune difficulté,

cette façon de parler à AutoCad est deltaX,DeltaY

donc les coordonnées absolues du point d'arrivée sont :

X du point de départ + 10

Y du point de départ + 20

 

dans le second cas, tu utilises des coordonnées polaires,

@5

là il faut se souvenir que :

deltaX = sinus de l'angle multiplié par la distance

deltaY = cosinus de l'angle multiplié par la distance

donc les coordonnées absolues du point d'arrivée sont :

X du point de départ + ( 5 x sinus de 145 )

Y du point de départ + ( 5 x cosinus de 145 )

sachant que l'angle est donné par rapport à l'axe des Y .

si tu as besoin d'explications complémentaires,

je suis à ta disposition.

amicalement :yltype:

 

 

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é