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 :
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"
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.

En cherchant dans l’éditeur de macro Extra! Basic de Gamma, j’ai trouvé les fonctions suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
objScreen.GetString iRow, iCol, iLen
…qui correspond étrangement à la fonction utilisée dans la macro VBA :
Gamma.getstring (Row, Col, Len).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
objScreen.PutString szText, iRow, ICol
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
 
Gamma.putstring (« BONJOUR », 13, 24)
La macro VBA tourne sans erreur de compilation mais rien n’est écrit dans Gamma à l’endroit déterminé.

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+