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 :

capture

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

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.

pas gagné avec la DSI !

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 ecran 449

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)
Le tout non pas en aveugle, mais sous l’œil averti du gestionnaire mais qui n'avait pas à copier manuellement les données.

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 :

  • 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)
Le tout non pas en aveugle, mais sous l’œil averti du gestionnaire mais qui n'avait pas à copier manuellement les données.

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 :

  • 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)
Le tout non pas en aveugle, mais sous l’œil averti du gestionnaire mais qui n'avait pas à copier manuellement les données.

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
43liste-fenetres.zip (413.06 Ko)

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


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.

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 clavier

lecteur qrcode

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 Cependant j aime apprendre donc ca ne membete pas de rechercher.

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 :

30fichier-personnel.zip (970.00 Octets)

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 ).

Rechercher des sujets similaires à "piloter logiciel via vba"