Piloter un logiciel via VBA
Bonjour, Bonsoir,
Je me lance dans un nouveau projet pour ma boîte : Piloter notre logiciel comptable pour procéder automatiquement aux écritures d'encaissement via un fichier Excel extrait de notre relevé bancaire du jour.
Une tâche qui nous prend facilement 1h / jour en s'y mettant à trois
Pour le coup j'ai réussi à lancer, m'authentifier, et ouvrir notre logiciel, mais je suppose que c'est maintenant la parti difficile qui commence!
Comment donner des directives à un logiciel via VBA ?
Est-ce que vous auriez des liens vers des Tuto expliquant les Appi permettant cela
Merci d'avance pour vos conseils et votre aide!
Bonjour Juice
Si tu as réussi à ouvrir le logiciel, je pense que tu as fait le plus difficile ! Il faudrait jouer maintenant aux sendkeys pour transférer les données mais aussi les validations.
L'expérience que j'ai est tout autre ! J'ai utilisé un outil gratuit, pas si complexe que cela, qui se nomme AutoIt
. C'est fait pour cela justement https://www.autoitscript.com/site/autoit/
Il y a eu divers échanges sur ce point ... https://forum.excel-pratique.com/viewtopic.php?f=2&t=97910
Certains proposaient aussi AutoHotKey
https://autohotkey.com/ mais je n'en ai pas l'expérience
Bonjour,
vérifie si ton logiciel comptable ne permet pas de charger des mouvements via un fichier ou des API's. Il serait très étonnant qu'il ne le permette pas.
Piloter l'introduction de données via une simulation d'actions écran/clavier/souris est (très) aléatoire.
vérifie si ton logiciel comptable ne permet pas de charger des mouvements via un fichier ou des API's. Il serait très étonnant qu'il ne le permette pas.
Piloter l'introduction de données via une simulation d'actions écran/clavier/souris est (très) aléatoire.
Bonjour h2so4
Je ne dirais pas que c'est aléatoire, une fois la séquence mise au point. Par contre, il faut que la transaction comptable reste "simple" sans onglets ... malheureusement, avec SAP, les interfaces avec les anciens systèmes sont fastidieux aussi. Mais tu as sans doute raison quand même sur le chargement de mouvements.
Bonjour,
S'il s'agit de SAP, les 2 options (fichier et APIs) existent me semble-t-il.
Bonjour Steelson,
Bonjour h2so4,
Si tu as réussi à ouvrir le logiciel, je pense que tu as fait le plus difficile ! Il faudrait jouer maintenant aux sendkeys pour transférer les données mais aussi les validations.
C'est bon j'suis trop fier de moi xD
L'expérience que j'ai est tout autre ! J'ai utilisé un outil gratuit, pas si complexe que cela, qui se nomme AutoIt. C'est fait pour cela justement https://www.autoitscript.com/site/autoit/
Il y a eu divers échanges sur ce point ... viewtopic.php?f=2&t=97910
Certains proposaient aussi AutoHotKey https://autohotkey.com/ mais je n'en ai pas l'expérience
Je regarderais tout sa dans la soirée
Le problème d'un logiciel externe à la boîte est qu'il faut qu'il passe d'abord en approbation de nos directeurs des services comptables, informatiques et sox (contrôleur interne pour éviter les fraudes (: Vérifie les saisies; s'occupe des bilans de fin de mois; que les process sont sécurisés etc...)).
Donc autant dire que c'est pas du tout du tout gagné pour que je puisse installer et utiliser ce que je veux sur ce PC :p
vérifie si ton logiciel comptable ne permet pas de charger des mouvements via un fichier ou des API's. Il serait très étonnant qu'il ne le permette pas.
Comment est-ce que je peux vérifier sa :0 ?
Pour vous donner plus d'info, voici le code qui m'a permis d'ouvrir et de m'authentifier sur notre Logiciel :
Sub forumexcel()
Shell ("chemin+nom+extention")
Application.SendKeys "identifiant"
Application.SendKeys "{TAB}"
Application.SendKeys "motdepasse"
Application.Wait Time + TimeSerial(0, 0, 3)
SendKeys "{ENTER}", True
End Sub
Et une fois sur le logiciel, voici où je souhaite aller :
Manuellement, l'onglet Encaissement est inaccessible par un spam du TAB : il faut cliquer dessus
Voilà voilà :p Sa sent pas la simplicité tout sa
Merci à tout les deux pour votre aide!
Bonjour à tous,
Si je ne me trompe pas, SAP stocke ses données sur une base Oracle.
On peut alors créer une liaison Excel-Oracle directement via ADO.
Bien sûr, il faut bien connaitre la structure des tables de données pour ne pas mettre la pagaille dans la base.
Pierre
Pour vous donner plus d'info, voici le code qui m'a permis d'ouvrir et de m'authentifier sur notre Logiciel :
Sub forumexcel() Shell ("chemin+nom+extention") Application.SendKeys "identifiant" Application.SendKeys "{TAB}" Application.SendKeys "motdepasse" Application.Wait Time + TimeSerial(0, 0, 3) SendKeys "{ENTER}", True End Sub
et donc déjà du sendkeys
c'est la même chose avec AutoIt
L'expérience que j'ai est tout autre ! J'ai utilisé un outil gratuit, pas si complexe que cela, qui se nomme AutoIt. C'est fait pour cela justement https://www.autoitscript.com/site/autoit/
Il y a eu divers échanges sur ce point ... viewtopic.php?f=2&t=97910
Certains proposaient aussi AutoHotKey https://autohotkey.com/ mais je n'en ai pas l'expérience
Je regarderais tout sa dans la soirée
Le problème d'un logiciel externe à la boîte est qu'il faut qu'il passe d'abord en approbation de nos directeurs des services comptables, informatiques et sox (contrôleur interne pour éviter les fraudes (: Vérifie les saisies; s'occupe des bilans de fin de mois; que les process sont sécurisés etc...)).
Donc autant dire que c'est pas du tout du tout gagné pour que je puisse installer et utiliser ce que je veux sur ce PC :p
Il ne requiert pas du tout d'installation, juste un enregistrement comme un fichier lambda.
Quelques applis simples que je me suis faites !
Ceci est mon couteau suisse associé à excel
$compteur = 0
do
; capture du presse-papier
$ClipText = clipget()
$ClipTerms = StringSplit($ClipText, "|")
If $ClipTerms[1] = "auto_formulaire" then
if WinExists($ClipTerms[2]) Then
WinActivate($ClipTerms[2], "")
$ClipTerms[3] = StringRegExpReplace($ClipTerms[3],";","{TAB}")
Send($ClipTerms[3])
$compteur = 0
Else
MsgBox(0, "La fenêtre n'est pas ouverte ...", "Ouvrez l'application : " & $ClipTerms[2] & @LF & "et relancez la copie !" & @LF & @LF & "Ce message disparaîtra dans 10 seconds ou sélectionnez OK.", 10)
EndIf
ClipPut("")
EndIf
$compteur = $compteur + 1
sleep(2000) ; 2 secondes
until ($ClipText = "STOP" or $compteur = 600) ; 600 * 2 = 1200 secondes = 20 minutes
Exit
bonsoir,
Comment est-ce que je peux vérifier sa :0 ?
2 pistes :
lire la documentation du logiciel.
poser la question au forunisseur du logiciel.
Bonjour tout le monde!
Pour vous donner plus d'info, voici le code qui m'a permis d'ouvrir et de m'authentifier sur notre Logiciel :
Sub forumexcel() Shell ("chemin+nom+extention") Application.SendKeys "identifiant" Application.SendKeys "{TAB}" Application.SendKeys "motdepasse" Application.Wait Time + TimeSerial(0, 0, 3) SendKeys "{ENTER}", True End Sub
et donc déjà du sendkeys
c'est la même chose avec AutoIt
L'expérience que j'ai est tout autre ! J'ai utilisé un outil gratuit, pas si complexe que cela, qui se nomme AutoIt. C'est fait pour cela justement https://www.autoitscript.com/site/autoit/
Il y a eu divers échanges sur ce point ... viewtopic.php?f=2&t=97910
Certains proposaient aussi AutoHotKey https://autohotkey.com/ mais je n'en ai pas l'expérience
Je regarderais tout sa dans la soirée
Le problème d'un logiciel externe à la boîte est qu'il faut qu'il passe d'abord en approbation de nos directeurs des services comptables, informatiques et sox (contrôleur interne pour éviter les fraudes (: Vérifie les saisies; s'occupe des bilans de fin de mois; que les process sont sécurisés etc...)).
Donc autant dire que c'est pas du tout du tout gagné pour que je puisse installer et utiliser ce que je veux sur ce PC :p
Il ne requiert pas du tout d'installation, juste un enregistrement comme un fichier lambda.
Quelques applis simples que je me suis faites !
Capture d’écran (449).png
Ceci est mon couteau suisse associé à excel
$compteur = 0 do ; capture du presse-papier $ClipText = clipget() $ClipTerms = StringSplit($ClipText, "|") If $ClipTerms[1] = "auto_formulaire" then if WinExists($ClipTerms[2]) Then WinActivate($ClipTerms[2], "") $ClipTerms[3] = StringRegExpReplace($ClipTerms[3],";","{TAB}") Send($ClipTerms[3]) $compteur = 0 Else MsgBox(0, "La fenêtre n'est pas ouverte ...", "Ouvrez l'application : " & $ClipTerms[2] & @LF & "et relancez la copie !" & @LF & @LF & "Ce message disparaîtra dans 10 seconds ou sélectionnez OK.", 10) EndIf ClipPut("") EndIf $compteur = $compteur + 1 sleep(2000) ; 2 secondes until ($ClipText = "STOP" or $compteur = 600) ; 600 * 2 = 1200 secondes = 20 minutes Exit
Du coup j'ai suivie ton lien, cliquer sur télécharger eeeeeeet j'ai eu le droit à une fenêtre qui s'ouvre et qui me demande d'entrer le mdp administrateur car je ne suis pas passé par le logiciel de la boîte pour télécharger quelque chose :/
Mais sa ressemble beaucoup à des Api's tout ces codes non :0 ?
bonsoir,
Comment est-ce que je peux vérifier sa :0 ?
2 pistes :
lire la documentation du logiciel.
poser la question au forunisseur du logiciel.
Concernant la lecture de la documentation du logiciel, j'ai trouvé des fichiers .INI mais rien à l'intérieur qui me permette de te donner une réponse
Je vais tenter une approcher vers notre cher patron du service informatique mais j'appréhende beaucoup :p
Quand il s'agit de toucher à son "bébé" tu peux être sur de te manger un non catégorique.
De mon côté je me documente sur Appi's voir si des choses me permettent de faire ce que je veux.
A+
Du coup j'ai suivie ton lien, cliquer sur télécharger eeeeeeet j'ai eu le droit à une fenêtre qui s'ouvre et qui me demande d'entrer le mdp administrateur car je ne suis pas passé par le logiciel de la boîte pour télécharger quelque chose :/
Je suppose que tu parles du mdp administrateur de ton PC.
Je ne me souviens plus très bien de la manière dont j'avais fait les choses. Probablement que je l'avais chargé sur mon potable personnel, quoique ... j'avais put-être les droits d'administration ! Il n'empêche qu'une fois un petit fichier .exe de mon projet, le résultat était efficace !
Ma procédure était la suivante :
- mettre les données dans un fichier excel, en colonnes, avec une en-tête caractéristique
- copier ligne à ligne dans le presse papier
- le fichier exe scrutait en permanence le presse-papier, dès qu'il trouvait l'en-tête voulue il générait vers l'appli concernée la série de touches nécessaires (y compris les tabulations et validations)
Steelson,
Je suppose que tu parles du mdp administrateur de ton PC.
Je ne me souviens plus très bien de la manière dont j'avais fait les choses. Probablement que je l'avais chargé sur mon potable personnel, quoique ... j'avais put-être les droits d'administration ! Il n'empêche qu'une fois un petit fichier .exe de mon projet, le résultat était efficace !
Ma procédure était la suivante :
Le tout non pas en aveugle, mais sous l’œil averti du gestionnaire mais qui n'avait pas à copier manuellement les données.
- mettre les données dans un fichier excel, en colonnes, avec une en-tête caractéristique
- copier ligne à ligne dans le presse papier
- le fichier exe scrutait en permanence le presse-papier, dès qu'il trouvait l'en-tête voulue il générait vers l'appli concernée la série de touches nécessaires (y compris les tabulations et validations)
Tu me vend du rêve là xD
Mais bon pour le coup je n'ai qu'une seule application que je souhaite piloter actuellement (même si sa pourrais être très intéressant de pouvoir piloter les logiciels comptables et gestionnaire en même temps pour trouver toute les infos dont ont à besoin pour un encaissement)
Sinon j'ai continuer à essayer de piloter le logiciel pour finalement me retrouver à piloter la souris et le clavier :
Sub XXX()
Dim exe As String
exe = Shell("Chemin+Nom+.exe", 1)
If Is_Numerique = True Then SendKeys vbKeyNumlock
If Is_Majuscule = True Then SendKeys vbKeyCapital
Application.SendKeys "ID"
Application.SendKeys "{TAB}"
Application.SendKeys "MdP"
Sleep 2000
SendKeys "{ENTER}", True
Sleep 5000
Call OneClickLeft(100, 25)
Call OneClickLeft(100, 50)
Sleep 10000
Call OneClickLeft(1250, 950)
Sleep 1000
Application.SendKeys "{TAB}"
Application.SendKeys "{TAB}"
Application.SendKeys "31"
Application.SendKeys "{TAB}"
Application.SendKeys "{TAB}"
Application.SendKeys "100"
End Sub
Sa me permet d'aller dans l'onglet saisie des règlements et de saisir une remise, mais c'est pas le plus opti n'est ce pas ?
Du coup j'ai suivie ton lien, cliquer sur télécharger eeeeeeet j'ai eu le droit à une fenêtre qui s'ouvre et qui me demande d'entrer le mdp administrateur car je ne suis pas passé par le logiciel de la boîte pour télécharger quelque chose :/
Je suppose que tu parles du mdp administrateur de ton PC.
Je ne me souviens plus très bien de la manière dont j'avais fait les choses. Probablement que je l'avais chargé sur mon potable personnel, quoique ... j'avais put-être les droits d'administration ! Il n'empêche qu'une fois un petit fichier .exe de mon projet, le résultat était efficace !
Ma procédure était la suivante :
Le tout non pas en aveugle, mais sous l’œil averti du gestionnaire mais qui n'avait pas à copier manuellement les données.
- mettre les données dans un fichier excel, en colonnes, avec une en-tête caractéristique
- copier ligne à ligne dans le presse papier
- le fichier exe scrutait en permanence le presse-papier, dès qu'il trouvait l'en-tête voulue il générait vers l'appli concernée la série de touches nécessaires (y compris les tabulations et validations)
Bonjour,
Ta facon de faire m'interesse. J'explique mon cas: à partir d'une base de donnée sur excel je souhaite effectuer des tabulations et validations automatique sur un logiciel externe. Logiciel de rh appelé Winpaie. Je pensais effectuer ces tabulations via hotkey. Est ce possible? Si oui quelle demarche dois je suivre?
Bonjour
je ne connais pas hotkey
mais je peux te guider avec AutoIt ... essaie de charger le logiciel, ensuite je t’enverrai des codes pour tester.
@Juice et Suetake77
Une autre façon aussi d'initialiser une nouvelle appli : le QRCode (il peut contenir du texte et des caractères spéciaux comme la tabulation). J'ai une interface qui tourne encore toujours sur ce modèle.
Lorsque tu veux dire charger l'appli. Tu veux dire si elle tourne à mon travail? C est vrai quil est possible que jai besoin de l accord de l administrateur.
Au niveau du QRcode je ne vois pas comment cela pourrait fonctionner dans mon cas. En tout cas je nai pas de webcam a mon travail.
Lorsque tu veux dire charger l'appli. Tu veux dire si elle tourne à mon travail? C est vrai quil est possible que jai besoin de l accord de l administrateur.
Je me demande si tu ne pourrais pas charger chez toi l'application https://www.autoitscript.com/site/ écrire le programme et ensuite le compiler pour en faire un .exe sans avoir à implémenter au travail quoi que ce soit.
Pour tester, je te propose d'ailleurs une appli AutoIt qui permet de connaître les fenêtres windows ouvertes. Aucune inquiétude il est safe, d'ailleurs je donne le code source ci-dessous :
Run("notepad.exe")
WinWaitActive("[CLASS:Notepad]")
$titre = WinGetTitle("[ACTIVE]", "")
$var = WinList()
send( "Liste des fenêtres ouvertes :" & @LF & @LF )
For $i = 1 to $var[0][0]
; Only display visble windows that have a title
If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
send( "Titre :{TAB}{TAB}" & $var[$i][0] & @LF & "Handle : {TAB}" & $var[$i][1] & @LF & @LF)
EndIf
Next
Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIf
EndFunc
exit
et si cela fonctionne, je peux te donner des codes, je suis en train de bâtir un démonstrateur simple pour renseigner un formulaire web directement à partir d'un tableau excel
oui, enfin il faut un lecteur de QRCode de ce type (tous les pharmaciens en ont !) à brancher sur port usb, il se comporte comme un clavierAu niveau du QRcode je ne vois pas comment cela pourrait fonctionner dans mon cas. En tout cas je nai pas de webcam a mon travail.
Le fichier excel peut générer des QRCode ligne à ligne (j'ai déjà publié au travers de ce forum).
Et puis, faut pas déconner quand même, si tu veux faire gagner du temps à ton employeur, autant AutoIt je comprends qu'il puisse être réticent, autant un lecteur usb, c'est vite rentabilisé. Et c'est ce que j'ai fait.
Tout d'abord merci pour le temps pris pour me répondre. Je suis débutant dans ce milieu (excel, autoit etc) alors "compiler" pour un faire un .exe
En ce qui concerne le QR Code, si je comprends bien cela fonctionnerait ainsi: une ligne excel (2010) genere un qrcode une fois celui ci créé, je le passe a la machine puis celle ci effectue sur le logiciel tiers le remplissage du formulaire via des caracteres ?
VERSION QRCODE :
En ce qui concerne le QR Code, si je comprends bien cela fonctionnerait ainsi: une ligne excel (2010) genere un qrcode une fois celui ci créé, je le passe a la machine puis celle ci effectue sur le logiciel tiers le remplissage du formulaire via des caracteres ?
Absolument !!
J'ai construit un formulaire web fictif que voici :
et un fichier excel générant les QRCodes ligne par ligne
et j'ai testé ! c'est-à-dire que j'ai lu chaque QRCode avec la page web ouverte et active ... un vrai bonheur ...
bémol : il faut aussi accepter de passer par google pour générer le QR Code (pour ma part, j'ai ma propre appli sur serveur personnel) et disposer d'un lecteur (ou se le faire prêter par une pharmacie