Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème simulation frappes clavier multiples

Bastien chez smoc

XLDnaute Nouveau
Bonjour,

Je suis étudiants en école d'ingé d'informatique et mathématiques appliquées et je suis actuellement en stage. On me demande pour la première fois de travailler en VBA pour communiquer avec une application externe.

N'ayant aucune idée de comment faire ça proprement et n'ayant personne pour m'aider dans l'entreprise je me tourne vers vous.

Le but de mon script et de remplir automatiquement un formulaire proposé par l’application externe. Pour cela je copie mes string dans le clipboard (fonction trouvée sur internet), et simule une pression sur CTRL+V puis ENTREE pour remplir le formulaire (non, s'il vous plait, ne vomissez pas). Je réalise cette opération 4 fois avec des strings différentes mais en pratique, seule la dernière string est collée, et est collée 4 fois.

Après pas mal de recherche, il semblerait que les frappes clavier soient réalisées seulement à la toute fin, et donc 4 fois de suite.

Vous trouverez ci-joint un fichier contenant l'entièreté du code, qui n'est vraiment pas très long

Je vous remercie par avance et votre aide sera grandement appréciée.

Bastien
 

Pièces jointes

  • script vba.txt
    1.8 KB · Affichages: 19

Dranreb

XLDnaute Barbatruc
Bonjour.
Je pense qu'il vaudrait mieux tout préparer en amont dans un tableau String et copier sa recomposition en un seul String, les éléments y étant séparés par des CrLf, et passer une seule fois la main au bloc notes tout à la fin.
En tout cas cet exemple à l'air de bien marcher :
VB:
Sub test()
Dim DOt As New MSForms.DataObject
DOt.SetText Join(Array("A", "B", "C", ""), vbCrLf)
DOt.PutInClipboard
AppActivate "Bloc-notes"
SendKeys "^V"
End Sub
 

Bastien chez smoc

XLDnaute Nouveau
Bonjour,
Je vous remercie pour votre réponse.

En réalité, l'appui sur la touche ENTREE sert à "appuyer" sur le bouton "suivant" du formulaire. J'active Bloc-notes pour mes tests ce qui pouvait porter à confusion. Je n'ai donc pas réussi à faire fonctionner ce que vous m'avez envoyé.

Cependant, en bidouillant un peu j'ai finalement réussi à faire fonctionner le programme initial. Je ne saurais expliquer pourquoi mais en changeant SendKeys "^v" en SendKeys "^v", 5 tout marche !

Merci encore.
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…