Piloter un logiciel via VBA

Okey Si je n'ai besoin que de google ca devrait aller. Autre point. Le logiciel tiers se presente sous la forme de formulaire sur plusieurs pages. Avec cette methode serait il possible dinclure des raccourcis ou des sendkeys avec latence ? Histoire de valider une page et de laisser le logiciel passer a la suivante?

Pour le version QRCode, s'il y a plusieurs onglets il faudra un QRCode par onglet à mon sens.

Cela peut paraître long, mais une fois les QRCode créés, c'est ultra-rapide, et surtout sans recopie, donc sans aucune erreur de saisie et ça c'est important quand on sait qu'une saisie manuelle engendre 5% de défauts !

Je te prépare une démo avec AutoIt, j'ai vérifié, le logiciel compilé en .exe ne nécessite aucune implémentation, il tourne tout seul sur un PC qui n'a jamais eu AutoIt chargé et implémenté.

Entendu, la methode QRCODE doit etes surement plus efficace sur des formulaires consequents, qui nest pas le cas pour moi. En effet, les miens sont courts mais avec une dizaine d onglet par cas. Peut etre vaudrait il que je me concentre sur autoit ?

VERSION AUTOIT

Le fichier auto_formulaire.exe lit le presse papier toutes les 2 secondes

S'il rencontre un texte du genre auto_formulaire|titre de la fenêtre|texte1;texte2;texte3;...|, alors il envoie à la fenêtre considérée une suite de caractères texte1 TAB texte2 etc... le point virgule étant remplacé par la tabulation

Pour arrêter le processus mettre STOP dans le presse papier par Ctrl + C; celui-ci s'arrête néanmoins après 20 mn d'inactivité


Le fichier auto_formulaire.xlsm permet de structurer l'information envoyée au presse papier

colonne 1 = nom de la fenêtre (il faut qu'elle soit ouverte)

colonne 2 = nombre de champs à envoyer, chacun étant séparé par un ;

colonne 3 à n = les champs à envoyer au formulaire (même vides)

Un double clic en colonne A envoie au presse papier le contenu des champs séparés par ;


Donc voici un exemple simple :

1- ouvrir le pseudo formulaire de saisie de l'identité d'un employé

10fichier-personnel.zip (970.00 Octets)

2- ouvrir le fichier excel qui va permettre de renseigner les champs du formulaire

3- si nécessaire, identifier le nom de la fenêtre windows du formulaire

11liste-fenetres.zip (413.06 Ko)

4- lancer la passerelle autoit

15auto-formulaire.zip (413.22 Ko)

5- double cliquer colonne A du fichier excel

Avec cette methode serait il possible dinclure des raccourcis ou des sendkeys avec latence ? Histoire de valider une page et de laisser le logiciel passer a la suivante?

Y a t'il retour au serveur entre chaque page ?

Incroyable, je teste la procedure aujourdhui et fais un retour !

D'ailleurs il n'y a aucun retour au serveur entre les pages. Ce dernier est effectué une fois pas mois.

VERSION EXCEL

Tu me vend du rêve là xD

Oh mais je crois que c'est toi qui m'en vends ... in fine, même si j'aime bien les QRCode et AutoIt, il n'y a pas de raison qu'on ne puisse pas faire cela avec excel !!

Toujours ma pseudo-appli "personnel"

14fichier-personnel.zip (970.00 Octets)

Et un simple fichier excel

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then

        ' sauf ligne de titre et ligne vide
        If Target.Row = 1 Then Exit Sub
        If Target.Value = "" Then Exit Sub

        For i = 2 To Cells(Target.Row, Columns.Count).End(xlToLeft).Column
            copie = copie & Cells(Target.Row, i).Value & ";"
        Next i

        copie = Replace(copie, ";", "{TAB}")

        On Error GoTo fin
        AppActivate Target.Value
        Application.SendKeys (copie)

        Cells(Target.Row, 2).Select

    End If
    Exit Sub

fin:
    MsgBox "L'application """ & Target.Value & """ n'est pas lancée !"
    Cells(Target.Row, 2).Select

End Sub

Steelson,

Mais c'est génial tout sa :0

Faut que je m'y plonge xD

... et in fine, plus simple que je l'imaginais au départ !

Je me demandais si je n'allais pas faire un "module" standard pour faciliter la tâche avec des aides aux choix des combinaison de touche !

Re Steelson!

Avec les fichiers que tu nous a partagé (Cf ton message du 11/02/2019 de 8:29) je me suis senti l'envie de m'initier aux HTML et aux JAVAScript (vive notepad++) !

Maintenant je me demande comment je pourrais mettre tout sa en commun (VBA, VBS, HTML et Java) pour piloter un .exe ?

Est-ce que tu a une piste supplémentaire à me donner, ou dois je me tourner vers un nouveau code ?

Parmis les appli présente de base sur nos PC j'ai vue que j'avais un éditeur SQL!

Encore merci pour tes conseils !

Cdt

Hi Juice !

Ce n'est plus un jus de fruit que tu nous prépares, mais un véritable cocktail ...

Maintenant je me demande comment je pourrais mettre tout sa en commun (VBA, VBS, HTML et Java) pour piloter un .exe ?

Attention, java et javascript, ce n'est pas du tout du tout la même chose. Mais je pense que tu le sais. On parle bien de javascript.

HTML, javascript sont des langages interprétés par le navigateur, ils sont écrits en mode texte et donc on peut en effet générer le code, enregistrer une page html et la lancer à partir d'excel VBA. Comme en php.

C'est très pratique par exemple pour :

ou tout simplement mettre en forme un texte ici sur ce forum en remplaçant les <> par []

envoyer un mail formaté exemple tout récent https://forum.excel-pratique.com/viewtopic.php?f=2&t=120794&p=736964#p736964
envoyer un fichier de convocation ics cf https://forum.excel-pratique.com/viewtopic.php?p=518270#p518270
lancer une page html comme ici https://forum.excel-pratique.com/viewtopic.php?p=698222#p698222 mais cette solution n'est plus d'actualité avec google

Dans l'autre sens, il y a plusieurs méthodes pour remonter des informations d'une page web, depuis un simple traitement du texte, jusqu'à l'interprétation d'un script.

Maintenant je ne suis pas certain d'avoir bien compris ce que tu voulais dire quand tu écris "pour piloter un .exe ".

Re~ !

Attention, java et javascript, ce n'est pas du tout du tout la même chose. Mais je pense que tu le sais. On parle bien de javascript.

Je parle bien de JAVAScript : je sais même pas à quoi ressemble Java xD

Maintenant je ne suis pas certain d'avoir bien compris ce que tu voulais dire quand tu écris "pour piloter un .exe ".

Bah en faite, au vue de tout ce que tu m'a dit et de ce que j'ai compris, l'HTML c'est un code qui permet juste de faire une page (comme un UserForm) pour afficher des données sans pouvoir les traiter ou intéragir avec d'autre applications ? C'est donc peut-être pas le code qui va m'aider pour "piloter un .exe"

Mais sa reste un truc quand même sacrément cool, et sa me rajoute une corde à mon arc

Maintenant je ne suis pas certain d'avoir bien compris ce que tu voulais dire quand tu écris "pour piloter un .exe ".

Par exemple dire via un code (HTML, VBA, VBScript, JAVASript ou un code que je connais pas encore) que je veux que sur notre logiciel comptable (.exe) d'aller chercher le numéro de facture "xxx" sur l'onglet "Intérogation des factures"

Donc l'utilisateur rempli un champ (numéro de fact), et clicl sur un bouton pour lancé cette action!

Mais je commence à douter que se soit réalisable x)

Merci pour tes bons conseils!

Je regarde tout les liens que tu m'a envoyé !

Par exemple dire via un code que je veux que sur notre logiciel comptable (.exe) d'aller chercher le numéro de facture "xxx" sur l'onglet "Intérogation des factures"

Est-ce que le logiciel comptable se présente sous une interface web ? si oui et si les codes d'accès ne sont pas trop contraignant, alors oui, il y a différentes méthodes pour en récupérer des valeurs.

  • soit avec PowerQuery
  • soit si le site est bien structuré par getelementbyid ou similaire
  • soit en décodant un éventuel json inclus dans un script javascript
  • soit de façon plus basique mais souvent, très souvent, plus efficace en découpant la page-texte reçue

Il y a pas mal d'exemples ici

https://forum.excel-pratique.com/viewtopic.php?f=2&t=97736

https://forum.excel-pratique.com/viewtopic.php?f=2&t=107253&start=20

https://forum.excel-pratique.com/viewtopic.php?f=2&t=93832&start=30

Re~

Merci pour ton retour rapide!

Tout ces codes sont très impressionnant et je n'y comprend quasiment rien (encore de nouvelle chose à apprendre ♥) xD

Je vais essayé de voir tout ce que cela propose, et si je peux en utiliser un pour mon projet, en commencant par :

- soit de façon plus basique mais souvent, très souvent, plus efficace en découpant la page-texte reçue

Après je pense pas qu'il s'agisse d'une interface web :/

J'aimerais bien te faire une copie screen de notre logiciel mais je vais me faire taper sur les doigts x)

Je reviens vers toi

Est-ce qu'il est possible de faire Ctrl+A puis Ctrl+C dans la page du logiciel et faire Ctrl+V dans une feuille excel ? Est-ce que tu obtiens des choses même pas formatées ?

Non pas possible :/

Tu peux selectionner plusieurs lignes du logiciel pour ensuite Ctrl C + Crtl V comme tu le ferais avec une plage défini sur Excel, mais le Ctrl A ne fonctionne pas

Le format du collage lui par contre est très propre : Un champ du logiciel est égal à une cellule sur Excel!

Et si tu tabules avant de faire Ctrl+A ? bon ben je pense que cela ne va pas le faire !! pfttt, je ne vois pas trop alors comment capter l'information.

Et si tu tabules avant de faire Ctrl+A ?

Nop! Fonctionne pas non plus :/

bon ben je pense que cela ne va pas le faire !! pfttt, je ne vois pas trop alors comment capter l'information.

Je pense pas non plus :/

Va falloir que j'essaye de me dépatouner avec des clic automatiques mais comme je le disais plus tôt : On est pas à l'abri d'une erreur en fesant comme sa :

'x & y donnent les positions de la souris avant le clique
'x = Horizontale -> Plus on s'approche de zéro et plus on va vers la gauche
'y = Verticale -> Plus on s'approche de zéro et plus on va vers le haut
'MOUSE LEFT DOWN = Simule un clique gauche --> Pression sur la souris
'MOUSE LEFT UP   = Simule un clique gauche --> Fin de la pression sur la souris

Private Function OpenEncaissement()
SetCursorPos 100, 25
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
SetCursorPos 100, 50
mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Function

Bon bah en tout cas, merci de m'avoir initier à l'HTML et pour le temps consacré à répondre à mes questions

VERSION EXCEL

Tu me vend du rêve là xD

Oh mais je crois que c'est toi qui m'en vends ... in fine, même si j'aime bien les QRCode et AutoIt, il n'y a pas de raison qu'on ne puisse pas faire cela avec excel !!

Toujours ma pseudo-appli "personnel"

fichier personnel.zip

Et un simple fichier excel

Init Fichier Personnel via excel vba.xlsm

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then

        ' sauf ligne de titre et ligne vide
        If Target.Row = 1 Then Exit Sub
        If Target.Value = "" Then Exit Sub

        For i = 2 To Cells(Target.Row, Columns.Count).End(xlToLeft).Column
            copie = copie & Cells(Target.Row, i).Value & ";"
        Next i

        copie = Replace(copie, ";", "{TAB}")

        On Error GoTo fin
        AppActivate Target.Value
        Application.SendKeys (copie)

        Cells(Target.Row, 2).Select

    End If
    Exit Sub

fin:
    MsgBox "L'application """ & Target.Value & """ n'est pas lancée !"
    Cells(Target.Row, 2).Select

End Sub

Rebonjour

Encore merci pour ton code il fonctionne super bien, j'aimerai toutefois savoir s'il était possible de lier celui ci avec un userform. Mon objectif serait d'exporter via une listbox certaines informations sur une nouvelle feuille de calcul et d'appliquer à cette feuille le worksheet_change. Est ce possible ? car avec le code suivant l'exportation a bien lieu mais worksheet_change non.

'Procédure pour exporter via mon formulaire

Private Sub CommandButtonCarte00_Click()

Dim NumLigne As Integer

Dim NbLigne As Integer

NumLigne = Me.ListVACATAIRES.ListIndex

NbLigne = Me.ListVACATAIRES.ListCount

'La nouvelle feuille d'exportation

Sheets.Add

ActiveSheet.Name = "PEC " & Me.ListVACATAIRES.Column(2, NumLigne) & "" & Me.ListVACATAIRES.Column(4, NumLigne)

MsgBox "Exportation effectuée"

Range("A1") = "Application"

Range("B1") = "Nom"

Range("C1") = "Prénom"

Range("A2") = "Bloc-notes"

Range("B2") = Me.ListVACATAIRES.Column(2, NumLigne)

Range("C2") = Me.ListVACATAIRES.Column(4, NumLigne)

Unload Me

'J'aimerai appliquer l'event sur la nouvelle feuille

Call Worksheet_BeforeDoubleClick(Selection, True)

Encore merci pour ton code il fonctionne super bien, j'aimerai toutefois savoir s'il était possible de lier celui ci avec un userform. Mon objectif serait d'exporter via une listbox certaines informations sur une nouvelle feuille de calcul et d'appliquer à cette feuille le worksheet_change. Est ce possible ? car avec le code suivant l'exportation a bien lieu mais worksheet_change non.

Oui c'est tout à fait possible ... as-tu un exemple de userform (je ne vais pas en créer un car je n'aime pas trop ce truc !)
Rechercher des sujets similaires à "piloter logiciel via vba"