Bonjour à tous.
C'est un sujet que j'essaie de creuser depuis longtemps mais qui n'est que très peu documenté sur le web: Comment contrôler une application tierce a MS Office sous windows via VBA?

L'objectif est de créer un lien (pont-connexion) d'un outil Office (Excel/Access) afin d'effectuer des manipulation sur une application windows, par exemple coller le clipboard dans paint ou dans notepad. Par soucis d'efficacité, je ne souhaite pas utiliser la commande sendkeys à laquelle nous ne pouvons pas faire confiance.

A ma connaissance il existe une methode DDE qui le permettrait mais il semble qu'elle soit obsolète. Pouvez-vous confirmer ?

Voici un code utilisant DDE afin de se connecter à Word et de lui envoyer la commande Impression
"
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
channelNumber = Application.DDEInitiate( _
    app:="WinWord", _
    topic:="C:\FORMLETR.DOC")
Application.DDEExecute channelNumber, "[FILEPRINT]"
Application.DDETerminate channelNumber
En essayant de le modifier afin de coller notre clipboard sur paint, voici le code qui ne fonctionne pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
channelNumber = Application.DDEInitiate( _
    app:="mspaint", _
    topic:="C:\Test.png")
Application.DDEExecute channelNumber, "[PASTE]"
Application.DDETerminate channelNumber
Resultat:
J'ai une erreur "Run time error '13': Type missmatch" à la première ligne bien que le fichier s'ouvre.

Essayons avec le notepad:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
Sub DDEtoBlocNotes()
Dim Datarange As Range
chan = Application.DDEInitiate(app:="NOTEPAD", topic:="C:\Users\User1\Documents\Access\Test.txt")
Set Datarange = ThisWorkbook.Worksheets("Sheet1").Range("A1")
Datarange.Copy
Application.DDEExecute chan, "[EDITIONCOLLER]"
Application.DDETerminate chan
End Sub
Resultat: même erreur que précédement malgré l'ouverture du document.
"Run time error '13': Type missmatch"


Pouvez-vous m'aider à résoudre ce problème svp ?
Avez vous de la documentation sur les attributs des commandes DDE?
Connaissez vous une autre façon de se connecter à une application tierce afin de lui envoyer des commandes ? (OLE/ODBC/ADO) ?

Merci d'avance pour vos réponses.