scromania
Messages postés452Date d'inscriptiondimanche 20 août 2006StatutMembreDernière intervention11 janvier 20139 1 oct. 2009 à 10:31
bonjour ,
j'aimerais savoir si quelqu'un pourrais m'expliquer car
je parviens à ouvrir autocad 2008.
je souhaite soit faire un coller de tout le texte directement dans autocad
ex:
point 378558.968,179006.34
point 378188.651,179309.202
point 378174.173,179327.315
point 366429.476,176386.49
point 366418.707,176390.232
point 350390.902,184772.049
point 350348.219,184820.23
point 350161.756,185483.88
point 378558.968,179006.34
point 377790.191,179407.567
point 376992.888,178768.69
point 375989.401,178733.442
point 375049.05,178507.076
J'arrrive juste a ouvrir l'api autocad .
Private Sub Bouton1_Click()
Dim MyAppID
MyAppID = Shell("C:\Program Files\AutoCAD 2008\acad.exe", 1)
application.Doevents()
End Sub
Pouvez vous m'aiguillet
merci
allopeck
Messages postés23Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 3 décembre 2007 6 déc. 2007 à 10:32
Bonjour,
Avez vous eu mon message?
Bonne journée
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 4 déc. 2007 à 17:47
je vous ai oublié pardon. Ce que vous indiquez semble correct.
contactez moi directement par message privé en cliquant mon profil, je vous ferez parvenir le fichier access, et s'il fonctionne chez vous, je le publierai sur vbfrance.
allopeck
Messages postés23Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 3 décembre 2007 4 déc. 2007 à 16:06
Bonjour,
Alors est ce que pour vous ça marche ?
merci
allopeck
Messages postés23Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 3 décembre 2007 25 nov. 2007 à 07:08
Au fait c bien ça pour le 2006 ?
chan = DDEInitiate("AutoCAD.r16.DDE", "System")
merci
allopeck
Messages postés23Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 3 décembre 2007 25 nov. 2007 à 07:06
Bonjour,
Non il ne fallait pas changer de nom de variable pour régler le problème. C'est juste que cmd apparait avant la déclaration. Mais maintenant un autre porblème apparait : "Erreur d'excution 13 Incompatibilité de type. Set obj = Text1"
Est ce que ça marche avec la base que vous avez recrée? Si oui pouvez vous me l'envoyer par mail?
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 24 nov. 2007 à 15:49
au risque de dire une bétise, il semblerait qu'il y a déjà un objet qui s'appelle cmd dans ton projet. un formulaire, une variable, une macro ...
essaye de changer dans ton code la variable "cmd" par un autre nom
allopeck
Messages postés23Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 3 décembre 2007 24 nov. 2007 à 15:44
Bonjour,
merci pour ce conseil en effet, le problème a disparu! Par contre sur la commande excuter j'ai toujours le même problème ::"erreur de compilation déclaration existante dans la portée en cours : cmd As String " que signifie cela ?
merci P.F
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 22 nov. 2007 à 21:39
je viens de reconstruire mon mdb.
je suis arrivé à la même erreur que toi, je ne sais pas trop pourquoi.
Tout ce que je peux dire, c'est que AppActivate MyAppID, True n'est pas indispensable .
donc si ça plante, supprime cette ligne ...
allopeck
Messages postés23Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 3 décembre 2007 22 nov. 2007 à 15:41
Bonjour,
merci pour cette explication. Cela fonctionne trés bien. Mais une autre erreur est survenu : " Erreur d'excution '5'Argument ou appel de procédure incorrect" AppActivate MyAppID, True;
et le bouton éxcuter me mets toujours la même erreur :"erreur de compilation déclaration existante dans la portée en cours : cmd As String " cela vient-il de l'erreur ci dessus ?
Merci beaucoup
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 22 nov. 2007 à 14:11
bonjour,
le probleme est le nom du fichier .exe qui est appelé
verifiez le dossier ou se trouve votre autocad2006, et corrigez le chemin MyAppID = Shell("C:\----------à modifier ici---------------\acad.exe",1)
dans tous les cas, il ne s'agit pas de aclt.exe, mais acad.exe !
allopeck
Messages postés23Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 3 décembre 2007 22 nov. 2007 à 09:17
Bonjour,
Tout d'abord je vous dit un grand merci pour votre réponse. Mais j'aurai une autre question ! excusez moi mais je suis trés nul en VB et j'ai decouvert ce logiciel avec access il n'y a pas trés longtemps. J'ai modifié le code comme vous pouvez le voir ci dessus mais il ne me lance pas autocad erreur suivante :" MyAppID = Shell("C:Program FilesAutoCAD 2006 Fraaclt.exe", 1) ' Exécute AutocadLT" erreur d'excution '53' fichier introuvable.
et quand je lance excuter il met erreur de compilation déclaration existante dans la portée en cours : cmd As String
Voila si vous pouviez me dire quel est le problème ?
merci
code dans access :
Option Compare Database
'liste des library nom fichier référence
'v Microsoft DAO 3.6 Object library : (DAO) dao360.dll (methode ancienne)
'
'v visual basic for applications : (VBA) vbe6.dll
'Import Microsoft Access 9.0 Object library : (Access) MSACC9.olb
'v Ole Automation : (stdole) stdole2.tld
'v Microsoft Office 9.0 Object Library : (Office) MSO9.dll
'
'#########################################################
'cet exemple fonctionne avec une table "TableCommandesAcad"
'contenant 2 champs
'champs1 : ID (numauto)
'champs2 : CommandesAcad (string)
'#########################################################
'et un formulaire contenant 3 boutons
'Bouton1 : LancerAcad
'Bouton2 : Executer
'Bouton3 : Fermer
'#########################################################
'les enregistrements de la table:
'1 : proxynotice 0 'elimine boite de dialogue indésirable au démarrage. Les autres se désactivent par Outils / Option dans autocad
'2 : filedia 0 'demande ouverture de fichier en ligne
'3 : _open 'ouverture
'4 : c: oto.dwg 'nom du fichier
'5 : filedia 1 'fin du mode ouverture de fichier en ligne
'6 : z et 'zoom etendu
Private Sub executer_Click()
'Ouverture table en "DAO"
Set obj = Text1
obj.LinkMode = 0
obj.LinkTopic = "AutoCAD.r16.DDE|System"
obj.LinkMode = 2
obj.LinkTimeout = 500
obj.LinkExecute cmd
Dim nom_de_la_table_a_ouvrir As String
nom_de_la_table_a_ouvrir = "TableCommandesAcad"
'Ouverture champ correspondant à table en "DAO"
Dim nom_du_champs_a_ouvrir As String
nom_du_champs_a_ouvrir = "CommandesAcad"
Set db = CurrentDb()
Set rs = db.OpenRecordset(nom_de_la_table_a_ouvrir)
'###lire une table "DAO"
rs.MoveFirst
Do Until rs.EOF
'###execute commande puis ferme et ouvre liaison
'###avant de passer à suivante
cmd = RTrim(rs(nom_du_champs_a_ouvrir)) + Chr(13)
DDEExecute chan, cmd
DoEvents
DDETerminate chan
'chan = DDEInitiate("AutoCAD.r15.DDE", "System") 'Acad2000
chan = DDEInitiate("AutoCAD.r16.DDE|System") 'Acad LT
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
'###ferme liaison Autocad
DDETerminate chan
End Sub
End Sub
Private Sub Fermer_Click()
On Error GoTo Err_Fermer_Click
DoCmd.Close
Exit_Fermer_Click:
Exit Sub
Err_Fermer_Click:
MsgBox Err.Description
Resume Exit_Fermer_Click
End Sub
Private Sub LancerAcad_Click()
'3lignes pour lancer l'application DDE
Dim MyAppID
'MyAppID = Shell("C:Program FilesAutodesk Map 5 - Fraacad.exe", 1) ' Exécute Autocad2000
MyAppID = Shell("C:Program FilesAutoCAD 2006 Fraaclt.exe", 1) ' Exécute AutocadLT
'
DoEvents
AppActivate MyAppID, True
End Sub
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 21 nov. 2007 à 19:22
allopeck
Messages postés23Date d'inscriptionlundi 16 janvier 2006StatutMembreDernière intervention 3 décembre 2007 21 nov. 2007 à 10:06
Bonjour,
voila j'ai repris ton code je l'ai collé dans un module.
J'ai crée les trois butons dans un formulaire. Et j'ai rempli le 2 champ de la table avec " circle 4,4 1.1" mais le problème c que j'ai le 2006 je ne sais pas ou vous trouvez les DDE .
Pouvez vous m'aider s'il vous plait ?
merci
rahhal_ii
Messages postés6Date d'inscriptionlundi 25 décembre 2006StatutMembreDernière intervention 5 juillet 2007 28 janv. 2007 à 17:32
slt
tu peux utiliser createobject
tu verra que c'est plus facile et plus pratique
il y'a un exemple dans l'aide d'autocad
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 12 déc. 2003 à 18:28
voila enfin le code pour lire une suite d'"instructions Autocad" inscrites dans une table et les envoyer par liaison dde à Autocad depuis Access.
;-)
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 12 déc. 2003 à 18:25
Option Compare Database
'liste des library nom fichier référence
'v Microsoft DAO 3.6 Object library : (DAO) dao360.dll (methode ancienne)
'
'v visual basic for applications : (VBA) vbe6.dll
'v Microsoft Access 9.0 Object library : (Access) MSACC9.olb
'v Ole Automation : (stdole) stdole2.tld
'v Microsoft Office 9.0 Object Library : (Office) MSO9.dll
'
'#########################################################
'cet exemple fonctionne avec une table "TableCommandesAcad"
'contenant 2 champs
'champs1 : ID (numauto)
'champs2 : CommandesAcad (string)
'#########################################################
'et un formulaire contenant 3 boutons
'Bouton1 : LancerAcad
'Bouton2 : Executer
'Bouton3 : Fermer
'#########################################################
'les enregistrements de la table:
'1 : proxynotice 0 'elimine boite de dialogue indésirable au démarrage. Les autres se désactivent par Outils / Option dans autocad
'2 : filedia 0 'demande ouverture de fichier en ligne
'3 : _open 'ouverture
'4 : c: oto.dwg 'nom du fichier
'5 : filedia 1 'fin du mode ouverture de fichier en ligne
'6 : z et 'zoom etendu
'Ouverture table en "DAO"
Dim nom_de_la_table_a_ouvrir As String
nom_de_la_table_a_ouvrir = "TableCommandesAcad"
'Ouverture champ correspondant à table en "DAO"
Dim nom_du_champs_a_ouvrir As String
nom_du_champs_a_ouvrir = "CommandesAcad"
Set db = CurrentDb()
Set rs = db.OpenRecordset(nom_de_la_table_a_ouvrir)
'###lire une table "DAO"
rs.MoveFirst
Do Until rs.EOF
'###execute commande puis ferme et ouvre liaison
'###avant de passer à suivante
cmd = RTrim(rs(nom_du_champs_a_ouvrir)) + Chr(13)
DDEExecute chan, cmd
DoEvents
DDETerminate chan
'chan = DDEInitiate("AutoCAD.r15.DDE", "System") 'Acad2000
chan = DDEInitiate("AutoCAD LT.DDE", "System") 'Acad LT
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
'###ferme liaison Autocad
DDETerminate chan
End Sub
Private Sub Fermer_Click()
On Error GoTo Err_Fermer_Click
DoCmd.Close
Exit_Fermer_Click:
Exit Sub
Err_Fermer_Click:
MsgBox Err.Description
Resume Exit_Fermer_Click
End Sub
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 11 déc. 2003 à 20:04
j'ai fait quelques tests access>autocad 2002 qui fonctionnent bien, mais avec autocad LT 2002, je reste bloqué sur un problème:
-une boite de dialogue s'ouvre à chaque ouverture de fichier et interfère avec les ordres qui sont envoyés depuis access (boite information externe).
En mettant le code au point, j'ai observé deux choses:
-je fais suivre chacune des instructions de +chr(13) pour que les commandes s'executent dans Autocad
-je ferme et rouvre le lien entre access et autocad apres chaque instruction envoyée.
ex:
DDETerminate chan
doevents
chan = DDEInitiate("AutoCAD LT.DDE","System")
En bref: j'arrive à lancer autocad 2002, ouvrir un fichier et faire un zoom étendu, Mais je bloque sur Autocad LT à cause de cette satanée boite de dialogue qui attend que l'on clique OK
pieloult
Messages postés1Date d'inscriptionmercredi 10 décembre 2003StatutMembreDernière intervention10 décembre 2003 10 déc. 2003 à 14:41
bonjour,
je suis très intéressé par le code mais j'ai du mal à le mettre en pratique
l'idée c'est une base de données dans access qui peu envoyer des infos en les écrivants dans autocad LT??????
quelqu'un peu t il m'envoyer un exemple concret et complet?
merci d'avance
ld40
Messages postés336Date d'inscriptionjeudi 30 janvier 2003StatutMembreDernière intervention22 février 20191 21 oct. 2003 à 16:46
Voici quelques observations par rapport au code Autocad LT DDE (qui m'a bien servi merci!).
On notera que le nom de l'application DDE varie selon la version Autocad (14,2000,2002,LT)
Selon les vb utilisés le code peut varier:
Dans Word on utilisera l'objet textbox pour saisir la commande et le script suivant pour envoyer la commande Autocad
Private Sub CommandButton1_Click()
Dim cmd As String
cmd = Me.TextBox1.Text
Set obj = Me.TextBox1
'3lignes pour lancer l'application DDE
'Dim MyAppID
'MyAppID = Shell("C:Program FilesAutodesk Map 5 - Fraacad.exe", 1) ' Exécute Microsoft Word.
'AppActivate MyAppID, True
1 oct. 2009 à 10:31
j'aimerais savoir si quelqu'un pourrais m'expliquer car
je parviens à ouvrir autocad 2008.
je souhaite soit faire un coller de tout le texte directement dans autocad
ex:
point 378558.968,179006.34
point 378188.651,179309.202
point 378174.173,179327.315
point 366429.476,176386.49
point 366418.707,176390.232
point 350390.902,184772.049
point 350348.219,184820.23
point 350161.756,185483.88
point 378558.968,179006.34
point 377790.191,179407.567
point 376992.888,178768.69
point 375989.401,178733.442
point 375049.05,178507.076
J'arrrive juste a ouvrir l'api autocad .
Private Sub Bouton1_Click()
Dim MyAppID
MyAppID = Shell("C:\Program Files\AutoCAD 2008\acad.exe", 1)
application.Doevents()
End Sub
Pouvez vous m'aiguillet
merci
6 déc. 2007 à 10:32
Avez vous eu mon message?
Bonne journée
4 déc. 2007 à 17:47
contactez moi directement par message privé en cliquant mon profil, je vous ferez parvenir le fichier access, et s'il fonctionne chez vous, je le publierai sur vbfrance.
4 déc. 2007 à 16:06
Alors est ce que pour vous ça marche ?
merci
25 nov. 2007 à 07:08
chan = DDEInitiate("AutoCAD.r16.DDE", "System")
merci
25 nov. 2007 à 07:06
Non il ne fallait pas changer de nom de variable pour régler le problème. C'est juste que cmd apparait avant la déclaration. Mais maintenant un autre porblème apparait : "Erreur d'excution 13 Incompatibilité de type. Set obj = Text1"
Est ce que ça marche avec la base que vous avez recrée? Si oui pouvez vous me l'envoyer par mail?
24 nov. 2007 à 15:49
essaye de changer dans ton code la variable "cmd" par un autre nom
24 nov. 2007 à 15:44
merci pour ce conseil en effet, le problème a disparu! Par contre sur la commande excuter j'ai toujours le même problème ::"erreur de compilation déclaration existante dans la portée en cours : cmd As String " que signifie cela ?
merci P.F
22 nov. 2007 à 21:39
je suis arrivé à la même erreur que toi, je ne sais pas trop pourquoi.
Tout ce que je peux dire, c'est que AppActivate MyAppID, True n'est pas indispensable .
donc si ça plante, supprime cette ligne ...
22 nov. 2007 à 15:41
merci pour cette explication. Cela fonctionne trés bien. Mais une autre erreur est survenu : " Erreur d'excution '5'Argument ou appel de procédure incorrect" AppActivate MyAppID, True;
et le bouton éxcuter me mets toujours la même erreur :"erreur de compilation déclaration existante dans la portée en cours : cmd As String " cela vient-il de l'erreur ci dessus ?
Merci beaucoup
22 nov. 2007 à 14:11
le probleme est le nom du fichier .exe qui est appelé
verifiez le dossier ou se trouve votre autocad2006, et corrigez le chemin MyAppID = Shell("C:\----------à modifier ici---------------\acad.exe",1)
dans tous les cas, il ne s'agit pas de aclt.exe, mais acad.exe !
22 nov. 2007 à 09:17
Tout d'abord je vous dit un grand merci pour votre réponse. Mais j'aurai une autre question ! excusez moi mais je suis trés nul en VB et j'ai decouvert ce logiciel avec access il n'y a pas trés longtemps. J'ai modifié le code comme vous pouvez le voir ci dessus mais il ne me lance pas autocad erreur suivante :" MyAppID = Shell("C:Program FilesAutoCAD 2006 Fraaclt.exe", 1) ' Exécute AutocadLT" erreur d'excution '53' fichier introuvable.
et quand je lance excuter il met erreur de compilation déclaration existante dans la portée en cours : cmd As String
Voila si vous pouviez me dire quel est le problème ?
merci
code dans access :
Option Compare Database
'liste des library nom fichier référence
'v Microsoft DAO 3.6 Object library : (DAO) dao360.dll (methode ancienne)
'
'v visual basic for applications : (VBA) vbe6.dll
'Import Microsoft Access 9.0 Object library : (Access) MSACC9.olb
'v Ole Automation : (stdole) stdole2.tld
'v Microsoft Office 9.0 Object Library : (Office) MSO9.dll
'
'#########################################################
'cet exemple fonctionne avec une table "TableCommandesAcad"
'contenant 2 champs
'champs1 : ID (numauto)
'champs2 : CommandesAcad (string)
'#########################################################
'et un formulaire contenant 3 boutons
'Bouton1 : LancerAcad
'Bouton2 : Executer
'Bouton3 : Fermer
'#########################################################
'les enregistrements de la table:
'1 : proxynotice 0 'elimine boite de dialogue indésirable au démarrage. Les autres se désactivent par Outils / Option dans autocad
'2 : filedia 0 'demande ouverture de fichier en ligne
'3 : _open 'ouverture
'4 : c: oto.dwg 'nom du fichier
'5 : filedia 1 'fin du mode ouverture de fichier en ligne
'6 : z et 'zoom etendu
Private Sub executer_Click()
'Ouverture table en "DAO"
Set obj = Text1
obj.LinkMode = 0
obj.LinkTopic = "AutoCAD.r16.DDE|System"
obj.LinkMode = 2
obj.LinkTimeout = 500
obj.LinkExecute cmd
Dim nom_de_la_table_a_ouvrir As String
nom_de_la_table_a_ouvrir = "TableCommandesAcad"
'Ouverture champ correspondant à table en "DAO"
Dim nom_du_champs_a_ouvrir As String
nom_du_champs_a_ouvrir = "CommandesAcad"
Dim cmd As String
Dim chan
'initialisation DDE Autocad v.14
'chan = DDEInitiate("AutoCAD.r14.DDE", "System")
'initialisation DDE Autocad LT
chan = DDEInitiate("AutoCAD.r16.DDE|System")
'initialisation DDE Autocad 2000, 2002 ou MAP
'chan = DDEInitiate("AutoCAD.r15.DDE", "System")
Dim db As Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset(nom_de_la_table_a_ouvrir)
'###lire une table "DAO"
rs.MoveFirst
Do Until rs.EOF
'###execute commande puis ferme et ouvre liaison
'###avant de passer à suivante
cmd = RTrim(rs(nom_du_champs_a_ouvrir)) + Chr(13)
DDEExecute chan, cmd
DoEvents
DDETerminate chan
'chan = DDEInitiate("AutoCAD.r15.DDE", "System") 'Acad2000
chan = DDEInitiate("AutoCAD.r16.DDE|System") 'Acad LT
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
'###ferme liaison Autocad
DDETerminate chan
End Sub
End Sub
Private Sub Fermer_Click()
On Error GoTo Err_Fermer_Click
DoCmd.Close
Exit_Fermer_Click:
Exit Sub
Err_Fermer_Click:
MsgBox Err.Description
Resume Exit_Fermer_Click
End Sub
Private Sub LancerAcad_Click()
'3lignes pour lancer l'application DDE
Dim MyAppID
'MyAppID = Shell("C:Program FilesAutodesk Map 5 - Fraacad.exe", 1) ' Exécute Autocad2000
MyAppID = Shell("C:Program FilesAutoCAD 2006 Fraaclt.exe", 1) ' Exécute AutocadLT
'
DoEvents
AppActivate MyAppID, True
End Sub
21 nov. 2007 à 19:22
Set obj = Text1
AppActivate "AUTOCAD LT", True
obj.LinkMode = 0
obj.LinkTopic = "AutoCAD LT.DDE|System"
obj.LinkMode = 2
obj.LinkTimeout = 500
obj.LinkExecute cmd
'------------------------AUTOCAD 2000 à 2002
Set obj = Text1
obj.LinkMode = 0
obj.LinkTopic = "AutoCAD.r15.DDE|System"
obj.LinkMode = 2
obj.LinkTimeout = 500
obj.LinkExecute cmd
'------------------------AUTOCAD 2004 à 2006
Set obj = Text1
obj.LinkMode = 0
obj.LinkTopic = "AutoCAD.r16.DDE|System"
obj.LinkMode = 2
obj.LinkTimeout = 500
obj.LinkExecute cmd
'------------------------AUTOCAD 2007 à 2008
Set obj = Text1
obj.LinkMode = 0
obj.LinkTopic = "AutoCAD.r17.DDE|System"
obj.LinkMode = 2
obj.LinkTimeout = 500
obj.LinkExecute cmd
21 nov. 2007 à 10:06
voila j'ai repris ton code je l'ai collé dans un module.
J'ai crée les trois butons dans un formulaire. Et j'ai rempli le 2 champ de la table avec " circle 4,4 1.1" mais le problème c que j'ai le 2006 je ne sais pas ou vous trouvez les DDE .
Pouvez vous m'aider s'il vous plait ?
merci
28 janv. 2007 à 17:32
tu peux utiliser createobject
tu verra que c'est plus facile et plus pratique
il y'a un exemple dans l'aide d'autocad
12 déc. 2003 à 18:28
;-)
12 déc. 2003 à 18:25
'liste des library nom fichier référence
'v Microsoft DAO 3.6 Object library : (DAO) dao360.dll (methode ancienne)
'
'v visual basic for applications : (VBA) vbe6.dll
'v Microsoft Access 9.0 Object library : (Access) MSACC9.olb
'v Ole Automation : (stdole) stdole2.tld
'v Microsoft Office 9.0 Object Library : (Office) MSO9.dll
'
'#########################################################
'cet exemple fonctionne avec une table "TableCommandesAcad"
'contenant 2 champs
'champs1 : ID (numauto)
'champs2 : CommandesAcad (string)
'#########################################################
'et un formulaire contenant 3 boutons
'Bouton1 : LancerAcad
'Bouton2 : Executer
'Bouton3 : Fermer
'#########################################################
'les enregistrements de la table:
'1 : proxynotice 0 'elimine boite de dialogue indésirable au démarrage. Les autres se désactivent par Outils / Option dans autocad
'2 : filedia 0 'demande ouverture de fichier en ligne
'3 : _open 'ouverture
'4 : c: oto.dwg 'nom du fichier
'5 : filedia 1 'fin du mode ouverture de fichier en ligne
'6 : z et 'zoom etendu
Private Sub LancerAcad_Click()
'3lignes pour lancer l'application DDE
Dim MyAppID
'MyAppID = Shell("C:Program FilesAutodesk Map 5 - Fraacad.exe", 1) ' Exécute Autocad2000
MyAppID = Shell("C:Program FilesAutoCAD LT 2002 Fraaclt.exe", 1) ' Exécute AutocadLT
'
DoEvents
AppActivate MyAppID, True
End Sub
Private Sub executer_Click()
'Ouverture table en "DAO"
Dim nom_de_la_table_a_ouvrir As String
nom_de_la_table_a_ouvrir = "TableCommandesAcad"
'Ouverture champ correspondant à table en "DAO"
Dim nom_du_champs_a_ouvrir As String
nom_du_champs_a_ouvrir = "CommandesAcad"
Dim cmd As String
Dim chan
'initialisation DDE Autocad v.14
'chan = DDEInitiate("AutoCAD.r14.DDE", "System")
'initialisation DDE Autocad LT
chan = DDEInitiate("AutoCAD LT.DDE", "System")
'initialisation DDE Autocad 2000, 2002 ou MAP
'chan = DDEInitiate("AutoCAD.r15.DDE", "System")
Dim db As Database
Dim rs As DAO.Recordset
Set db = CurrentDb()
Set rs = db.OpenRecordset(nom_de_la_table_a_ouvrir)
'###lire une table "DAO"
rs.MoveFirst
Do Until rs.EOF
'###execute commande puis ferme et ouvre liaison
'###avant de passer à suivante
cmd = RTrim(rs(nom_du_champs_a_ouvrir)) + Chr(13)
DDEExecute chan, cmd
DoEvents
DDETerminate chan
'chan = DDEInitiate("AutoCAD.r15.DDE", "System") 'Acad2000
chan = DDEInitiate("AutoCAD LT.DDE", "System") 'Acad LT
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
'###ferme liaison Autocad
DDETerminate chan
End Sub
Private Sub Fermer_Click()
On Error GoTo Err_Fermer_Click
DoCmd.Close
Exit_Fermer_Click:
Exit Sub
Err_Fermer_Click:
MsgBox Err.Description
Resume Exit_Fermer_Click
End Sub
11 déc. 2003 à 20:04
-une boite de dialogue s'ouvre à chaque ouverture de fichier et interfère avec les ordres qui sont envoyés depuis access (boite information externe).
En mettant le code au point, j'ai observé deux choses:
-je fais suivre chacune des instructions de +chr(13) pour que les commandes s'executent dans Autocad
-je ferme et rouvre le lien entre access et autocad apres chaque instruction envoyée.
ex:
DDETerminate chan
doevents
chan = DDEInitiate("AutoCAD LT.DDE","System")
En bref: j'arrive à lancer autocad 2002, ouvrir un fichier et faire un zoom étendu, Mais je bloque sur Autocad LT à cause de cette satanée boite de dialogue qui attend que l'on clique OK
10 déc. 2003 à 14:41
je suis très intéressé par le code mais j'ai du mal à le mettre en pratique
l'idée c'est une base de données dans access qui peu envoyer des infos en les écrivants dans autocad LT??????
quelqu'un peu t il m'envoyer un exemple concret et complet?
merci d'avance
21 oct. 2003 à 16:46
On notera que le nom de l'application DDE varie selon la version Autocad (14,2000,2002,LT)
Selon les vb utilisés le code peut varier:
Dans Word on utilisera l'objet textbox pour saisir la commande et le script suivant pour envoyer la commande Autocad
Private Sub CommandButton1_Click()
Dim cmd As String
cmd = Me.TextBox1.Text
Set obj = Me.TextBox1
'3lignes pour lancer l'application DDE
'Dim MyAppID
'MyAppID = Shell("C:Program FilesAutodesk Map 5 - Fraacad.exe", 1) ' Exécute Microsoft Word.
'AppActivate MyAppID, True
'initialisation DDE Autocad v.14
'chan = DDEInitiate(App:="AutoCAD.r14.DDE", Topic:="System")
'initialisation DDE Autocad LT
'chan = DDEInitiate(App:="AutoCAD LT.DDE", Topic:="System")
'initialisation DDE Autocad 2000, 2002 ou MAP
chan = DDEInitiate(app:="AutoCAD.r15.DDE", topic:="System")
DDEExecute Channel:=chan, Command:=cmd
DDETerminate Channel:=chan
End Sub
Dans Access on utilisera l'objet texte (qui a pour nom ici cmdtxt)
et le code suivant sur un bouton pour lancer la commande Autocad
Private Sub Commande50_Click()
Dim cmd As String
Dim obj
Dim chan
cmd = Me.cmdtxt
Set obj = Me.cmdtxt
'3lignes pour lancer l'application DDE
'Dim MyAppID
'MyAppID = Shell("C:Program FilesAutodesk Map 5 - Fraacad.exe", 1) ' Exécute Microsoft Word.
'AppActivate MyAppID, True
'initialisation DDE Autocad v.14
'chan = DDEInitiate(App:="AutoCAD.r14.DDE", Topic:="System")
'initialisation DDE Autocad LT
'chan = DDEInitiate(App:="AutoCAD LT.DDE", Topic:="System")
'initialisation DDE Autocad 2000, 2002 ou MAP
chan = DDEInitiate("AutoCAD.r15.DDE", "System")
DDEExecute chan, cmd
DDETerminate chan
End Sub