Bonjour à tous,
Malgré de nombreuses recherches dans les bons cours ou les forums de ce site et d'encore plus nombreux essais. Je me résous a vous demander de l'aide. J'en profite pour vous remercier par avance.
J'ai un petit projet de créer une petite interface en vb permettant de :
- Récupérer le chemin complet d'un fichier sélectionné par l'utilisateur
- Ouvrir une petite application permettant de traiter les données du fichier sélectionné et copier les données
- Coller les données dans Excel et lancer une macro
Les points N°1 et N°3 sont réalisés et fonctionne.
Le point bloquant est le point N°2 :
L'application est un freeware sous la forme d'un fichier .exe
Je parviens à l’exécuter sans problèmes. Ensuite je parviens à ouvrir un fichier en utilisant les méthodes Sendkeys.send puisque l'application n'ouvre pas le fichier en utilisant la classe Process et en lui affectant un .StartInfo.FileName.
Du coup je me retrouve avec un code bancal et pas du tout "esthétique" qui fonctionne de manière aléatoire :
Le plus gros problème est l'envoi des données vers le presse papier avec le Ctrl C car la sélection précédente n'est pas bonne. J'ai réalisé de nombreux essais en manuel afin de chercher une méthode a appliquer dans le code. Mais la plus pertinente que j'ai trouvé est la sélection à la souris. Mais j'ai fait des recherches et les solutions me paraissait encore plus bancale que les Sendkeys.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Dim Appli As New Process() Process.Start(Chemin_fichier) Clipboard.SetDataObject(Chemin_fichier, True) System.Threading.Thread.Sleep(3500) SendKeys.Send("^(p)") 'Ctrl-p System.Threading.Thread.Sleep(1000) SendKeys.Send("^(v)") 'Ctrl-v System.Threading.Thread.Sleep(500) SendKeys.Send("~") 'Entrée System.Threading.Thread.Sleep(500) SendKeys.Send("~") 'Entrée My.Computer.Clipboard.Clear() 'Vide le presse papier afin de pouvoir vérifier plus tard la présence des données du .pri System.Threading.Thread.Sleep(500) SendKeys.Send("{TAB}") System.Threading.Thread.Sleep(500) SendKeys.Send("^(a)") System.Threading.Thread.Sleep(500) SendKeys.Send("^(c)") 'Ctrl-c Appli.Close()
J'ai cherché plusieurs méthodes dans les cours vb.net mais pas de solutions.
Merci à tous et bonne journée...
Partager