Bonjour à tous,
Je ne sais pas si j’ai posté au bon endroit mais mon problème porte sur la communication entre deux applications (dont une est Excel) à l’aide de macro Excel VBA.
Je vous explique :
Au boulot, je travaille avec un logiciel de base de données que nous appellerons « Gamma ».
Ce logiciel contient des macros en Extra ! Basic.
Son interface est très simple puisqu’elle restitue les informations de la base de données sur des pages de 40 lignes sur l00 colonnes. On peut déplacer le curseur de sélection sur une page à l’aide des flèches de direction du clavier ou bien en utilisant la touche TAB.
Voilà pour la présentation de Gamma.
D’un autre côté, j’ai un fichier Excel de travail dans lequel j’ai mis des informations en relations avec celles de Gamma. Par exemple, dans la colonne NOM, on trouve le nom des clients et dans la colonne PRENOM, vous aurez deviné leur prénom. Ces informations sont également présentes dans la base de données Gamma.
Mon but est de copier une chaîne de caractères contenue dans une cellule Excel pour venir ensuite la coller à un endroit précis sur la page de Gamma.
Actuellement, une macro Excel VBA est déjà utilisée pour effectuer l’opération inverse, c'est-à-dire copier une chaîne de caractère sur une page de Gamma et soit la coller dans une cellule Excel, soit la comparer à une autre chaîne de caractère à l’aide d’une condition If… Then…EndIf. Pour cela, il suffit juste d’avoir les deux applications (Gamma et Excel) ouvertes.
Cette fonction est : Gamma.getstring (Row, Col, Len) avec Row le numéro de la ligne, Col le numéro de la colonne et Len la longueur de la chaîne de caractère.
Exemple : Cell(2, 3) = Gamma.getstring(10, 57, 3)
Bien sûr, avant de pouvoir exécuter cette fonction dans la macro Excel VBA, un certain nombre d’objet sont créés et initialisés en début de macro. Voici les lignes de code VBA :
Pour info : Gamma-APPL-EXTRA! Personal Client est le nom que l’on trouve tout en haut de la fenêtre de l’application. Dans Word au même endroit, on a « le nom du fichier ouvert » - Microsoft Word.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Dim Gamma As Object Dim extra As Object Set extra = GetObject(, "EXTRA.System") Set Gamma = extra.ActiveSession.Screen AppActivate "Gamma-APPL - EXTRA! Personal Client"
En cherchant dans l’éditeur de macro Extra! Basic de Gamma, j’ai trouvé les fonctions suivantes :
…qui correspond étrangement à la fonction utilisée dans la macro VBA :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 objScreen.GetString iRow, iCol, iLen
Gamma.getstring (Row, Col, Len).
J’ai donc tenté d’utiliser la syntaxe de la fonction « PutString » dans ma macro VBA Excel pour écrire BONJOUR sur une page de Gamma à l’intersection entre la ligne 13 et la colonne 24 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 objScreen.PutString szText, iRow, ICol
La macro VBA tourne sans erreur de compilation mais rien n’est écrit dans Gamma à l’endroit déterminé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Gamma.putstring (« BONJOUR », 13, 24)
Voilà où j’en suis actuellement…
Si vous voulez plus de précision, dites-le moi !
D’avance merci pour vos réponses et pour votre aide.
A+
Partager