Extra Personal Client Manager et Excel

Tagged:

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 Function

Voici 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 Function

La 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