VBA et communication avec AS400 IBM

Airone784

XLDnaute Occasionnel
Bonjour,
Dans le cadre professionnel, je me lance dans la création de macro associée à un outil de gestion sur AS400 (voir capture 1). Pour se faire, j'utilise un langage de communication entre IBM et microsoft excel mais je n'ai trouvé que très peu d'infos sur ce langage. Voici ma seule source que j'ai trouvé : IBM Knowledge Center

J'ai réussi à faire quelque petite chose avec ce fichier comme copier-coller des données de ma session AS400 dans un tableur Excel via une macro.
Avec ma macro sur excel par exemple je lance des combinaisons de touche qui viennent se faire dans ma session AS400.
Exemple de macro :

Code:
Dim Connlist As Object
Dim Session As Object
Set Connlist = CreateObject("PCOMM.autECLConnList")
Set capEcran = CreateObject("PCOMM.autECLPS")
Set Session = CreateObject("PCOMM.autECLSession")
capEcran.SetConnectionByHandle (Connlist(1).Handle)
Session.SetConnectionByHandle (Connlist(1).Handle)

Session.autECLPS.SendKeys "[pf8]"

Dans l'exemple ce code me permet de simuler l'appui sur la touche F8 de mon clavier.

Maintenant, dans ma session AS400, je choisis une option qui n'existe pas (sur ma session j'ai un message en bas à gauche rouge qui s'affiche voir capture 2). Lorsque j'ai un message d'erreur, pour l'enlever sur ma session AS400, je dois appuyer sur la touche ctrl de mon clavier.

Retournons sur excel voici l'exemple de code que j'aimerais utiliser :
Code:
Dim Connlist As Object
Dim Session As Object
Set Connlist = CreateObject("PCOMM.autECLConnList")
Set capEcran = CreateObject("PCOMM.autECLPS")
Set Session = CreateObject("PCOMM.autECLSession")
capEcran.SetConnectionByHandle (Connlist(1).Handle)
Session.SetConnectionByHandle (Connlist(1).Handle)

if message d'erreur sur ma session AS400 then
Session.autECLPS.SendKeys "[reset]"
else
Session.autECLPS.SendKeys "[pf8]"
end if

[reset] correspond à la touche ctrl dans le langage IBM.

Dans mon exemple le problème c'est que je ne sais pas comment faire contrôler à mon code vba excel s'il y a un message d'erreur sur ma session.

Bref, je suis à la recherche de quelqu'un qui connait ce langage et qui pourrait m'aider ou m'aiguiller vers des sources pour mieux appréhender ce langage.

Merci d'avance pour votre aide en espérant que mes explications soient claires.
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    27.6 KB · Affichages: 324
  • Capture2.JPG
    Capture2.JPG
    11.6 KB · Affichages: 178
  • Capture.jpg
    Capture.jpg
    27.6 KB · Affichages: 196
  • Capture2.JPG
    Capture2.JPG
    11.6 KB · Affichages: 165
  • Capture.jpg
    Capture.jpg
    27.6 KB · Affichages: 186
  • Capture2.JPG
    Capture2.JPG
    11.6 KB · Affichages: 149

pyfux

XLDnaute Occasionnel
Re : VBA et communication avec AS400 IBM

Bonjour, Bonjour le Forum,

Je vous propose de vous tourner vers un forum sur les AS400.
Je suppute qu'il existe un évènement sur un des objets proposé pour récupérer cette information.
Désolé. Et courage!
 

NezQuiCoule

XLDnaute Occasionnel
Re : VBA et communication avec AS400 IBM

Bonjour,

D'après le logiciel que vous utilisez pour vous connecter sur AS400 et ayant déjà eu l'opportunité de travailler avec, il me semble (à vérifier) qu'il possède déjà un enregistreur et un éditeur de macro. Celles-ci sont enregistrées en langage Basic.

[ça n'est qu'une hypothèse]
Peut-être pourriez-vous tenter d'en apprendre plus en enregistrant une macro sous le client, en visualisant la structure de cette macro et pourquoi pas écrire du code sous VB qui puisse reproduire une macro en Basic mais en lui insérant les fonctions que vous souhaitez faire.

Pour 2 raisons assez simples :
-Cela vous éviterait d'utiliser .SendKeys qui peut se révéler capricieux et faire des actions non souhaitées
-S'il existe un moyen de faire exécuter une macro au client par VBA, il vous suffira d'enregistrer vos macros pré-définies sur le client

Des pistes à suivre donc, mais sujet intéressant !
Cdt
 

Airone784

XLDnaute Occasionnel
Re : VBA et communication avec AS400 IBM

Merci pour l’intérêt apporté à ce sujet.

@pyfux : effectivement j'ai pensé aussi aller sur un forum AS400 mais comme il y a aussi une partie VBA et que je suis déjà inscrit sur cet excellent forum, j'ai tenté ma chance ;)

@NezQuiCoule : effectivement il y a un enregistreur mais dans mon cas présent, le problème n'est pas tant de savoir qu'elle combinaison de touche je fais et donc quelle programmation faire, mais de faire en sorte que mon VBA puisse identifier qu'en raison d'une mauvaise saisie dans un menu AS400, j'ai un message d'erreur sur cette même session AS400 et donc que je veux le réinitialiser par mon fameux sendkeys [reset] qui fonctionne très bien dans le cadre d'autres macros lancés depuis mon VBA sur d'autres fichiers de travail.

Pour revenir sur l'enregistreur de mon client AS400, je l'utilise déjà pour lancer des macros mais uniquement sur des saisies de zones "fixes" (toujours la même zone au même endroit sur l'écran). Etant donné que je cherche à automatiser la saisie sur des zones variables, je ne vois pas comment faire sans VBA. De plus, ma macro ne saura jamais une erreur de saisie et donc elle se bloquera car j'aurai un message en rouge que je dois ré-initialiser.
exemple de code :


Code:
'VARIABLES
Dim Zone As String, Allee As Integer, compteur as Integer

Do While Range("a2").Offset(i, 0).Value <> ""

    Range("a2").Offset(i, 0).Select

    Zone = Range("a2").Offset(i, 3).Value
    Allee = Range("a2").Offset(i, 4).Value

    Session.autECLOIA.WaitForInputReady
    Session.autECLPS.SendKeys Zone, 8 + compteur, 56
    'Session.autECLPS.SendKeys "[enter]"
    If Allee <> 0 Then Session.autECLPS.SendKeys Allee
    Session.autECLOIA.WaitForInputReady
    If Len(Trim(CStr(Allee))) < 3 Then Session.autECLPS.SendKeys "[field+]"
    Session.autECLOIA.WaitForInputReady


compteur=compteur +1
i=i+1
loop


Merci encore pour l'implication.
 

jerem512

XLDnaute Nouveau
Re : VBA et communication avec AS400 IBM

Bonjour,

Je reviens sur ce sujet qui m’intéresse fortement et notamment le dernier code.
En effet, EXCEL me met un message d'erreur à savoir : "erreur d’exécution 424".

Il doit manquer un bout de code notamment la partie session.autECLOIA.....

En espérant avoir un retour.
Merci
 

Discussions similaires

Réponses
2
Affichages
117

Statistiques des forums

Discussions
312 214
Messages
2 086 309
Membres
103 174
dernier inscrit
OBUTT