Salut, Je ne peux pas tester parce que je n'ai pas installé le module VBA (et que je ne compte pas le faire). Mais à lire le code, je dirais que le résultat est stocké dans la variable (globale) valtxt. Si tu veux que la fonction retourne cette valeur, appelle la variable à la fin de la routine: (defun inputbox (titre message defaut / *acad* users1 valtxt) ; de Patrick_35
(setq *acad* (vlax-get-acad-object)
users1 (getvar "users1")
) ;_ Fin:setq
(acad-push-dbmod)
(vla-eval *acad*
(strcat "ThisDrawing.SetVariable \"USERS1\","
"InputBox (\"" message
"\", \"" titre
defaut "\")"
) ;_ Fin:strcat
;_ Fin:strcat
) ;_ Fin:vla-eval
(setq valtxt (getvar "users1"))
(setvar "users1" users1)
(acad-pop-dbmod)
valtxt
) ;_ Fin:defun Sinon, tu peux aussi utiliser la routine ci-dessous (qui n'a pas besoin du VBA) extraite de Dialog.lsp en bas de cette page. ;; InputBox (gile)
;; Ouvre une boite de dialogue pour récupérer une valeur
;; sous forme de chaine de caractère
;;
;; Arguments
;; tous les arguments sont de chaines de caractère (ou "")
;; box : titre de la boite de dialogue
;; msg : message d'invite
;; val : valeur par défaut
;;
;; Retour
;; une chaine ("" si annulation)
(defun InputBox (box msg val / subr temp file dcl_id ret)
;; Retour chariot automatique à 50 caractères
(defun subr (str / pos)
(if (and
(< 36 (strlen str))
(setq pos (vl-string-position 32 (substr str 1 36) nil T))
)
(strcat ":text_part{label=\""
(substr str 1 pos)
"\";}"
(subr (substr str (+ 2 pos)))
)
(strcat ":text_part{label=\"" str "\";}")
)
)
;; Créer un fichier DCL temporaire
(setq temp (vl-filename-mktemp "Tmp.dcl")
file (open temp "w")
ret ""
)
;; Ecrire le fichier
(write-line
(strcat
"InputBox:dialog{key=\"box\";initial_focus=\"val\";spacer;:paragraph{"
(subr msg)
"}spacer;:edit_box{key=\"val\";edit_width=36;allow_accept=true;}spacer;ok_cancel;}"
)
file
)
(close file)
;; Ouvrir la boite de dialogue
(setq dcl_id (load_dialog temp))
(if (not (new_dialog "InputBox" dcl_id))
(exit)
)
(set_tile "box" box)
(set_tile "val" val)
(action_tile
"accept"
"(setq ret (get_tile \"val\")) (done_dialog)"
)
(start_dialog)
(unload_dialog dcl_id)
;;Supprimer le fichier
(vl-file-delete temp)
ret
)