Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

J'ai un problème que j'ai posté en premier ici : http://www.cadxp.com/sujetXForum-15751.htm

[surligneur]

Mais il semblerait que le problème viennent en fait du lancement LISP de la macro VBA.

En effet, le texte d'information à destination de l'utilisateur se répète: si je lance la commande sans le lisp, j'ai dans la ligne de commande et la ligne dynamique (acad2006) ce que je désire à savoir : "Veuillez entrer la largeur de la réservation :". [/surligneur]

Mais si je lance avec le lisp, j'ai dans la ligne de commande : "Veuillez entrer la largeur de la réservation :", et en ligne dynamique j'ai "Veuillez entrer la largeur de la réservation :Veuillez entrer la largeur de la réservation :" .

Je vous livre donc le code de lancement LISP en espérant que vous puissiez m'aider:

 

(defun c: DMN()
(setvar "cmdecho" 0)
(command "-vbarun" "PROJET.DVB!INSAUTO.DMN")
(setvar "cmdecho" 1)
(princ)
)

 

et le code VBA même si pour certains c'est du charabia (comme l'est le lisp pour moi...)

 

Sub DMN()
Dim Largeur As String
Largeur = ThisDrawing.Utility.GetString(True, "Veuillez entrer la largeur de la réservation :")

Largeur = ThisDrawing.Utility.GetString(True, "(princ)")
MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr
End Sub

 

 

 

Un certain winfield m'a suggeré ça :

 

Je crois qu'il faut jouer avec une variable AutoCAD (un truc simple comme en MSDOS "ECHO OFF" ... je n'ai plus le nom de cette variable en tête) mais je n'en suis pas sûr.
[Edité le 9/9/2007 par sechanbask]

 

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

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

  • 1 mois après...
Posté(e)

Je vous préviens tant que je serais de ce monde, je rafraichirais ce message jusqu'à l'obtention d'une solution...

 

j'en fous je suis fou...

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Salut,

et si tu lances ta macro VBA avec AutoCAD et non pas avec le LISP, est-ce que le problème se produit également ?

 

parce que dans ce cas, il faudrait voir du coté de ta macro....

Posté(e)

Si tu pose cette question, c'est que j'ai pas été super clair ou tu n'as bien lu mon poste : voir le texte surligné du sujet... mais je vais quand même refaire l'explication pour ceux qui vont me dire mais pourquoi tu lances ta commande avec du LISP...

Si je lance mon VBA sans le lisp, une seule invite à l'utilisateur apparait... C'est le Lisp + VBA qui plante mais je suis obligé de procéder ainsi pour pour relancer du VBA d'un clic droite rapide ou ESPACE ou ENTRER selon les configurations...

Il quand même à noter qu'une partie de mes collègues vont déjà être contents car le problème est résolu pour ceux qui n'utilise que la ligne de commande classique car le texte n'apparait qu'une seul fois, mais j'ai pas de solution pour ceux qui utilisent la ligne dynamique... y'a un gros problème aussi c'est que je suis super nul en LISP... et que je ne me vois même pas faire en lisp le quart de ce que je fais en VBA...

 

le code VBA pour que quelqu'un puisse me confirmer que ça ne vienne pas de là:

Sub DMN()
Dim Largeur As String
Dim texte As String
Largeur = ""
texte = ""
texte = "Veuillez entrer la largeur de la réservation :"
Largeur = ThisDrawing.Utility.GetString(True, texte)
texte = ""
MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr
Largeur = ""
End Sub

 

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

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

  • 3 semaines après...
  • 11 mois après...
Posté(e)

toujours en quète si quelqu'un sait comment résoudre ce problème...

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

tu as déjà lancé du VBA avec un lisp ?

 

si oui est-ce que ton VBA agissait avec le prompt ? si oui est-ce que tu as des textes en double

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Pour ma part, je lances directement les macro VBA depuis un bouton du menu

Dans la personnalisation du bouton, au niveau de la macro je place le code suivant:

 

-vbarun "NETTOYEUR.Lancer_choix"

 

Attention, pas de C^C^

 

Posté(e)

c'est pas pratique pour nous car on utilise tous les alias pour gagner de l'espace écran et du temps !!

 

voir l'erreur ci joint :

http://www.cijoint.fr/cjlink.php?file=cj200809/cijq2a9GsH.jpg

 

 

[Edité le 8/9/2008 par sechanbask]

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

  • 4 semaines après...
Posté(e)

Merci à didier :

 

La solution est la suivante :

 

 

il faut mettre

vbCrLf &

 

dans l'argument du texte visible à l'utilisateur. Ainsi, on force autocad à sauter une ligne avec la commande. comme c'est uen erreur entre Lisp+VBA, il écrit son erreur, puis on saute une ligne et il écrit le texte qui nous intéresse !!! c'est presque transparent pour l'utilisateur lambda. Bon moi j'ai un collègue qui va le voir car il regarde souvent la ligne de commande sur plusieurs lignes.....

 

voici mon exemple corrigé :

 

Sub DMN()
Dim Largeur As String
Dim texte As String
texte = ""
Largeur = ""

[b]Largeur = ThisDrawing.Utility.GetString(True, vbCrLf & "Veuillez entrer la largeur de la réservation en cm :")[/b]

MsgBox "La largeur de la réservation est de : " & Largeur & " cm." & vbCr

End Sub

 

Merci beaucoup à tous d'avoir cherché...

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

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é