Extra Personal Client Manager et Excel
naturellement si vous n'utilisez pas ce logiciel ce billet ne sert a rien ...
Précision sur le logiciel: Il sert a interfacer une application TGC (télé gestion clientelle) mais aussi a tout un tas de choses en relation avec des serveurs unix, ibm et compagnie ... en gros c'est un émulateur de ligne de commande pilotable par macro similiVB.
Comme je préfère Excel, je le pilote avec Excel, ça donne une interface supplémentaire à la simple macro ...
J'ai donc créé un paquetage de fonctions me permettant de me servir du logiciel. En voici le détail :
Déclarations de base :
Public Sys As Object, Sess As Object
Voici la fonction censée lancer le logiciel et le mettre au dessus des autres fenêtres ... je dit censé parce que j'ai eu quelque problème à la faire fonctionner de manière stable...
Function LanceTGC() As Boolean
On Error GoTo ERR_XTRA
Set Sys = CreateObject( "EXTRA.System" ): Set Sess = Sys.ActiveSession
TestTGC = False
If Sys Is Nothing Then
MsgBox "Echec lors du lancement de l'émulateur", vbCritical, "- Erreur logiciel -"
End
End If
If Sess Is Nothing Then
MsgBox "Echec lors de la récupération de la session", vbCritical, "- Erreur logiciel -"
End
End if
Sess.WindowState = 0: Sess.WindowState = 1: TestTGC = True
Exit Function
ERR_XTRA:
MsgBox "Le logiciel EXTRA! Personal Client n'est pas installé.", vbCritical, "Erreur ActivX"
End FunctionVoici quelques fonctions qui seront expliquées plus loin :
Sub WaitTGC()
Do While Sess.Screen.OIA.XStatus = 5: Loop
End Sub
Sub Move(ByVal lig%, ByVal col%)
With Sess.Screen
.MoveTo lig, col
If (.Row <> lig And .col <> col) Then .WaitForCursor lig, col
End With
End Sub
Sub PutS(chaine$, ByVal lig%, ByVal col%)
Call Move(lig, col)
With Sess.Screen
.PutString chaine
End With
Call WaitTGC
End Sub
Function GetS(ByVal x%, ByVal y%, ByVal l%) As String
Dim ret$
With Sess.Screen
ret = .GetString(y, x, l)
End With
Call WaitTGC
GetS = ret
End Function
Sub Comm(com$, Optional ByVal lig% = -1, Optional ByVal col% = -1)
With Sess.Screen
If x <> -1 And y <> -1 Then Call Move(lig, col)
.SendKeys ("<" & com & ">")
End With
Call WaitTGC
End Sub
Function Search(Info$) As Boolean
Dim Area As Object
Search = False
With Sess.Screen
Call Move(1, 1)
Set Area = .Search(Info)
.MoveTo Area.Bottom, Area.Right
If Area.Bottom > 1 Or Area.Right > 1 Then Search = True
End With
End FunctionLa fonction WaitTGC attend que la partie conversationnelle soit libérée et que toutes les opérations soient effectuées, une sorte de Join sur un thread ...
Les fonctions Move, PutS et GetS sont des fonctions de simulations... elle permettent de se déplacer sur l'écran, d'écrire une chaine de caractères et de récupérer une chaine de caractères ...
La fonction comm envoie des commandes telles que <HOME>, <ENTER>, <F4> et ainsi de suite ...Ca permet de simuler les actions au clavier
La fonction search permet de vérifier si une information est bien affichée su l'écran actuel ...
Voila si un jour je me ressert de tout ça et que je doit changer des choses je reposterai ;)

Comments
Bonjour,
Notre client nous impose de fonctionner avec Extra!Personnal client. Nous avons un grand nombre d'informations venant de fichier d'Excel à saisir dans Extra!. A ce jour cela se fait manuellement et à l'unité. Pouvez vous, SVP, me fournir des info pour automatiser cette saisie sachant qu'il y un grand nombre de menu et sous-menu, et des codes d'accès de partout ?
Je vous remercie par avance.
Salutation.
Olaaaaa du VB ... bon ...
En fait je peux trop rien faire (enfin moyennant un cheque je peut tout faire hein mais bon ;))
Disons qu'il faut simplement un fichier excel qui drive le tout, vous implémentez les bases du code ci dessus dans une librairie VB que vous mettez avec votre fichier, ensuite ... il faut connaitre/apprendre VB/VBA afin de faire vos automatisations en se servant de ce code (ouverture des classeurs, lecture des infos, interface graphique ...)
Je suis désolé de ne pas vous aider d'avantage mais le travail n'est pas si simple... La seule chose que je peux vous dire c'est que c'est faisable...
Je vous remercie, cela me reconforte dans l'idée que c'est faisable, HOUFFFF......!!
Connaitriez vous des forums ou personnes pouvant m'aider dans ma recherche ? Est ce qu'il suffit de connaitre le VB pour réaliser cette automatisation ?
Bonne journée
1 - www.google.fr c'est un bon site a ce qu'il parait ya tout la dedan :)
2 - VB + VBA enfin surtout VBA puisque finalement la syntaxe du langage est vite apréhendée c'est toutes les fonctions relatives à l'application aux soft office qui mettent un peu de temps ...
Quelle est l'action précise de la fonction "WaitTGC" de ci dessus!
Cette fonction (si je me souvient bien) est nécéssaire du fait que les réponses du serveur ne sont pas immédiates... certains écrans répondent lentement, il est donc nécéssaire de tester s'il est possible ou non d'interagir ...
Au début je m'en passait mais c'était source d'instabilité ...
Bonjour,
Code tres interessant mais je me retrouve toujours en erreur sur le Sess."Screen" qui à l'air de deconner. Je voudrais donc savoir d'une part s'il y a moyen de corriger cette erreur et d'autre la facon dont on appelle les fonctions.
Merci