Netparty Posté(e) le 18 septembre 2022 Posté(e) le 18 septembre 2022 Bonjour à tous J'ai créé une petite macro dans mon fichier DWG qui me permet d'ouvrir Onenote pour y indiquer toutes les modifications que j'apporte à mon plan. Mais est-il possible que cette macro s’exécute directement que j'ouvre mon fichier. Merci d'avance pour votre aide. Bonne journée
Luna Posté(e) le 19 septembre 2022 Posté(e) le 19 septembre 2022 Coucou, C'est pas du VBA mais bon, si jamais cela peut t'aider : (startapp "C:\\Program Files\\Microsoft Office\\root\\Office16\\OneNote.exe") ; Dans le cas d'Office 2016 Citation startapp (AutoLISP) Starts a Windows application (startapp appcmd[file]) Arguments appcmd A string that specifies the application to execute. If appcmd does not include a full path name, startapp searches the directories in the PATH environment variable for the application. file A string that specifies the file name to be opened. Return Values An integer greater than 0, if successful; otherwise nil. Examples The following code starts Windows Notepad and opens the acad.lsp file. Command: (startapp "notepad" "acad.lsp") 33 If an argument has embedded spaces, it must be surrounded by literal double quotes. For example, to edit the file my stuff.txt with Notepad, use the following syntax: Command: (startapp "notepad.exe" "\"my stuff.txt\"") 33 Il suffit ensuite d'enregistrer le fichier sous le nom acaddoc.lsp dans le dossier C:\Users\...\AppData\Roaming\Autodesk\AutoCAD 20##\R24.1\fra\Support (évidemment, remplacer "..." par le nom d'utilisateur et "##" par la version d'AutoCAD installée). Ce fichier est chargé automatiquement à chaque ouverture de fichier (nouveau ou existant). Il existe évidemment d'autres moyen pour charger un fichier .lsp automatiquement à l'ouverture d'un fichier (cf. le cours de (gile) >>ici<<). N'utilisant pas OneNote personnellement, je ne sais pas s'il y a des fichiers associés et donc s'il est possible d'ouvrir OneNote directement sur le bon fichier (avec un (getvar "DWGNAME") par exemple si tu nommes tes OneNote avec le nom du .dwg) en utilisant l'argument facultatif [file]. Bisous, Luna 1
Curlygoth Posté(e) le 19 septembre 2022 Posté(e) le 19 septembre 2022 J'utilise ça : ça appelle le shell pour ouvrir un fichier et donc ouvre le fichier suivant l'application par défault de celui - ci et tu veux l'ouvrir quand ? edit : MonFichier est le chemin du fichier Public Function OuvrirFichier(MonFichier As String) On Error GoTo OuvertureFichierErreur 'vérifie si le fichier existe If Len(Dir(MonFichier)) = 0 Then OuvrirFichier = False Exit Function Else End If 'ouvre le fichier dans son application associée Dim MonApplication As Object Set MonApplication = CreateObject("Shell.Application") MonApplication.Open (MonFichier) OuvrirFichier = True Set MonApplication = Nothing Exit Function OuvertureFichierErreur: Set MonApplication = Nothing OuvrirFichier = False End Function Mon site Web (en cours de construction) : Site DA-CODE de @didier
Netparty Posté(e) le 19 septembre 2022 Auteur Posté(e) le 19 septembre 2022 Il y a 1 heure, Curlygoth a dit : J'utilise ça : ça appelle le shell pour ouvrir un fichier et donc ouvre le fichier suivant l'application par défault de celui - ci et tu veux l'ouvrir quand ? edit : MonFichier est le chemin du fichier Public Function OuvrirFichier(MonFichier As String) On Error GoTo OuvertureFichierErreur 'vérifie si le fichier existe If Len(Dir(MonFichier)) = 0 Then OuvrirFichier = False Exit Function Else End If 'ouvre le fichier dans son application associée Dim MonApplication As Object Set MonApplication = CreateObject("Shell.Application") MonApplication.Open (MonFichier) OuvrirFichier = True Set MonApplication = Nothing Exit Function OuvertureFichierErreur: Set MonApplication = Nothing OuvrirFichier = False End Function Bonjour J'aimerais que le code s’exécute quand j'ouvre un fichier dwg spécifique Bonne journée
Curlygoth Posté(e) le 19 septembre 2022 Posté(e) le 19 septembre 2022 il faut juste que tu verifies : thisdrawing.name = [NOM_DE_TON_FICHIER] dans le module thisdrawing Private Sub AcadDocument_Activate() if thisdrawing.name = [NOM_DE_TON_FICHIER] then call Ouvrirfichier([NOM_DE_TON_FICHIER]) End Sub attention se simple code executera a chaque fois que ton dessin sera actif ! tu devrais je pense le compléter pour vérifié si le fichier à ouvrir est en lecture seul ou non. 1 Mon site Web (en cours de construction) : Site DA-CODE de @didier
Netparty Posté(e) le 19 septembre 2022 Auteur Posté(e) le 19 septembre 2022 Bonjour @Curlygoth, @Luna Merci à vous deux pour votre aide Bonne journée
Netparty Posté(e) le 20 septembre 2022 Auteur Posté(e) le 20 septembre 2022 Re-bonjour @Curlygoth@Luna J'ai encore une petite question J'ai adapté mon code est cela fonctionne super bien. J'ai placé dans Thisdrawing Private Sub AcadDocument_Activate() '' MON CODE End Sub Mais j'aimerai que cela fonctionne sur une version Lt Y a t-il une possibilité de le faire ? Merci d'avance Bonne journée
Curlygoth Posté(e) le 20 septembre 2022 Posté(e) le 20 septembre 2022 Malheureusement les versions LT ne prennent pas en compte les langages de programmation.... Seulement les scrpit mais vu que tu dois lancer un scrpit à l'ouverture il te faut à minima le déclenchement par "évenement" (ouverture d'un DWG) et ça c'est unqiuement par programmation et non en script 1 Mon site Web (en cours de construction) : Site DA-CODE de @didier
Netparty Posté(e) le 20 septembre 2022 Auteur Posté(e) le 20 septembre 2022 il y a 38 minutes, Curlygoth a dit : Malheureusement les versions LT ne prennent pas en compte les langages de programmation.... Seulement les scrpit mais vu que tu dois lancer un scrpit à l'ouverture il te faut à minima le déclenchement par "évenement" (ouverture d'un DWG) et ça c'est unqiuement par programmation et non en script Merci
Netparty Posté(e) le 20 septembre 2022 Auteur Posté(e) le 20 septembre 2022 @Curlygoth Et avec un script est-il possible d’exécuter une macro ? Bonne journée
Curlygoth Posté(e) le 20 septembre 2022 Posté(e) le 20 septembre 2022 je t'avouerais que c'est pas mon domaine de compétence. mais ça me parait compliquer... Mon site Web (en cours de construction) : Site DA-CODE de @didier
DenisHen Posté(e) le 2 février 2023 Posté(e) le 2 février 2023 Bonjour la communauté. Je suis tombé sur ces messages, voici ce que j'utilise régulièrement en VBA pour ouvrir n'importe-quel fichier : Private Declare PtrSafe Function ShellExecute Lib "shell32.dll" _ Alias "ShellExecuteA" (ByVal hWnd As Long, _ ByVal lpOperation As String, ByVal lpFile As String, _ ByVal lpParameters As String, ByVal lpDirectory As String, _ ByVal nShowCmd As Long) As Long Document = "C:Exemple\.....\Fichier.ext" Result = ShellExecute(0&, vbNullString, Document, vbNullString, vbNullString, vbNormalFocus) Pour les macros, seul le DIESEL fonctionne sous LT. Les autres (Lisp, VBA...) ne fonctionneront pas, même si elle sont lancées par un script. 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)
Curlygoth Posté(e) le 4 février 2023 Posté(e) le 4 février 2023 au plus simple et doinc sans verif et en natif : Dim MonApplication As Object Set MonApplication = CreateObject("Shell.Application") MonApplication.Open (MonFichier) L'avantage de mon psot haut : c'est qu'il te retourne s'il code a réussi ou non ! pratique pour la suite d'une execution plus complexe Mon site Web (en cours de construction) : Site DA-CODE de @didier
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