Vincent P. Posté(e) le 14 février 2022 Posté(e) le 14 février 2022 Bonjour bonjour, Je viens vous embêter car je me confronte à un problème que je ne comprend pas. J'ai fait quelque LISP que j'ai mis à disposition de mes collègues de travaille, le tous rangé dans un menu déroulant, et j'ai fait un fichier sous Word donnant le explications de fonctionnement de chaque commandes. (certain étant à l'aise dans leur routine sont peut ouvert au nouveau). Je me suis dit pour faire simple que j'allais faire une commande à la fin de mon menu déroulant qui ouvrirais cette aide (plus besoin de la chercher sur le serveur de la boite). Et là, tous vas bien, j'ai fait un PDF pour qu'il n'y est pas de bêtises de faites, et bam : (startapp "C:\\Program Files (x86)\\Adobe\\Acrobat Reader DC\\Reader\\AcroRd32.exe" "M:\\FR\\***********\\Lisp\\Aide-Lisp.pdf") (j'ai changé une partie du lien sur le serveur par quelque * pour plus de confidentialité) Et ca fonctionne !! Sur mon PC ca marche super bien ... Mais que sur mon PC ... Chez mes collègues la fonction STARTAPP renvoi nil et donc n'ouvre aucun fichier ... Et je sais pas pourquoi. On a la même version de Acrobat (même lien pour l'appli) ils ont aussi accès au PDF sur le serveur. Quelqu'un à une piste ? Il y a ptet moyen pour simplifier le choix du logiciel ? Des bisous distancielle Vinent P. Lispeur éternel débutant! Autocad Map3D 2023 Covadis-Autopist 18.2
Curlygoth Posté(e) le 14 février 2022 Posté(e) le 14 février 2022 peut etre que tes collegue n'ont pas "C:\\Program Files (x86)\\Adobe\\Acrobat Reader DC\\Reader\\AcroRd32.exe" au meme endroit toi ? Du coup en vba, tu n'a pas besoin de "déclarer" le logiciel à l'ouverture c'est plus simple d'utilisation : ça ouvre avec le programme par défault de windows 'MonFichier est le chemin complet du fichier à ouvrir ! Public Function OuvrirFichier(MonFichier As String) Dim MonApplication As Object Set MonApplication = CreateObject("Shell.Application") MonApplication.Open (MonFichier) Set MonApplication = Nothing Exit Function End Function Je conseil juste de vérifier que le fichier existe avant au cas où ^^ Mon site Web (en cours de construction) : Site DA-CODE de @didier
(gile) Posté(e) le 14 février 2022 Posté(e) le 14 février 2022 Salut, On parle bien de LISP ? Pour ouvrir un fichier avec l'application par défaut en spécifiant le chemin complet ou juste le nom du fichier s'il est dans les chemins de recherche (avec gestion d'erreur). (defun OpenFileWithDefaultApp (filename / shellApp) (and (setq filename (findfile filename)) (setq shellApp (vlax-create-object "Shell.Application")) (vl-catch-all-apply 'vlax-invoke (list shellApp 'Open filename)) (vlax-release-object shellApp) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Luna Posté(e) le 14 février 2022 Posté(e) le 14 février 2022 Coucou, Peut-être n'ont-ils pas les mêmes droits d'accès au fichier sur ton serveur. J'ai essayé vite fait sur mon PC et bien que je puisse ouvrir les fichiers PDF sur mon serveur, lorsque j'utilise StartApp j'ai une erreur pour "Accès refusé" au document... >w< Par contre, StartApp renvoi 33 et non nil, donc le soucis est sûrement différent.. D'un point de vu programmation, cela me semble correct donc le problème ne peut venir que des droits d'accès au fichier (ou éventuellement tu peux essayer d'ajouter le chemin d'accès à ton fichier dans les chemins de supprt approuvé) ? Bisous, Luna
Vincent P. Posté(e) le 15 février 2022 Auteur Posté(e) le 15 février 2022 @Curlygoth j'ai vérifié chez 3 collègues qui ont bien le même .exe au même endroit. Et le VBA je ne m'y suis jamais penché donc ton code est bien obscure à mes yeux 🤯 @Luna Ils ont bien accès au fichier PDF que je pointe (qui existe bien sur le serveur), il est dans un dossier de travaille qu'on utilise tous. @(gile) C'est bien en Lisp que je cherche ma solution, et ton code comble mes attentes! Pour gérer une éventuelle absence du fichier, j'ai ajouter un IF devant (setq filename (findfile filename)), s'il renvoi nill j'ouvre une pop-up avec (alert), s'il renvoi le chemin du fichier (donc il existe bien), je poursuit le programme. Petite question, à quoi set le (and) en ligne 2? Hormis renvoyer nil en fin de commande, je ne vois pas l'intérêt ...? Merci à vous trois pour l'aide 😄 Lispeur éternel débutant! Autocad Map3D 2023 Covadis-Autopist 18.2
Luna Posté(e) le 15 février 2022 Posté(e) le 15 février 2022 Coucou, Le (and) est une manière détournée de stopper le programme au moindre retour de nil sur l'une des lignes suivantes. Cela permet de s'assurer que le programme est arrivé jusqu'au bout (le (and) renvoie T dans ce cas) ou s'il a échoué à un endroit (le (and) renvoie nil, et sans évaluer les lignes suivantes, évitant ainsi une erreur !). Bisous, Luna
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant