EDV dans Microsoft Excel

Vous pouvez facilement synchroniser les cellules d'Excel et les variables EDV.

La macro complémentaire EDVariables.xla fournit des fonctions simples :

Paramètre Commentaire
edvConnect([psAddress],[pPort],[psUser],[psPassword])

Connexion au serveur

edvDisconnect()

Déconnexion du serveur

edvConnected()

Etat de la connexion

edv(varName, [params])

Retourne la valeur d'une variable EDV

edvcode(varName, [params])

Retourne l'interprétation d'une variable de type Code

edvConnected(), edv() et edvcode() sont utilisables dans les formules de calcul des cellules.

Le rafraîchissement de ces cellules, et donc l'envoi de requêtes au serveur EDV, dépend d'Excel et de l'interprétation qu'il a de la nécessité du rafraîchissement des cellules.

Paramètres

Des cellules du classeur peuvent être nommées pour définir les paramètres de connexion et d'application :

Nom de cellule Type VBA Commentaire
edvClient\Address String

Adresse du serveur. localhost par défaut.

edvClient\Port Long

Port IP du serveur. 46080 par défaut.

edvClient\Connected Boolean

Etat de la connexion au serveur.

edvClient\ConfirmConnect Boolean

Autorisation de connexion demandée à l'utilisateur

edvClient\Root String

Racine des variables. "." par défaut

edvClient\Master Boolean

Utilisation des variables principales ou de session. (edvClient.UseSessionVars)

edvSync\Enabled Boolean

Synchronisation automatique des cellules et des variables

Ces paramètres sont pris en compte à l'ouverture du classeur ou son activation pour certains paramètres.

La macro complémentaire EDVariables.xla contient une feuille de paramètres par défaut. Pour la visualiser et la dupliquer, modifiez la propriété AddIn de ThisWorkBook du projet EDVariables.xla.
Le mot de passe de la macro complémentaire EDVariables.xla est "edv" par défaut.

Noms des cellules

Excel ne tolère pas le point dans le nom des cellules. Il est remplacé par \ et le nom doit commencer par edv\
Seconde contrainte : deux cellules ne peuvent pas avoir le même nom. Les noms peuvent se terminer par _index

Une cellule est nommée edv\\MyDomain\MyVar pour se synchroniser avec la variable .MyDomain.MyVar
Une cellule est nommée edv\MyVar (un seul \) pour se synchroniser avec la variable .MyDomain.MyVar en utilisant edvClient\Root qui vaudrait .MyDomain
Pour synchroniser deux cellules à une même variable, ajoutez _2 au nom de cellule. _i en fin de nom est toujours compris comme un index ne faisant pas partie du nom EDV.
Il est possible qu'Excel interdise des noms trop longs.
Un bouton nommé d'un nom de variable envoie VRAI au serveur si sa macro rattachée est OnEDVButtonClick

Synchronisation

Si vous modifiez une cellule nommée du nom d'une variable, cette variable sera mise à jour sur le serveur. Sauf si elle est ReadOnly, Securized ou de type Code ou Function. Elle sera rafraîchie dans la feuille Excel lorsque sa valeur change côté serveur.

Si vous modifiez une cellule nommée du nom d'une variable et contenant une formule =..., cette variable sera mise à jour sur le serveur mais son affichage dans Excel n'est pas forcément synchrone.

Les variables côté client ont une propriété CallBack qui doit être à True si vous avez besoin de sa synchronisation.

Une cellule nommée edvSync\Enabled permet d'activer ou désactiver la synchronisation.

DataTable

Les données d'une variable DataTable peuvent être intégrées dans une feuille de données. Elles se rafraîchissent automatiquement lors du changement de valeur de la variable du serveur EDV.

Si le nom Excel s'étend sur plus d'une cellule (et moins de 32000), les données sont insérées dans la feuille en insérant des lignes sur la largeur du tableau.
La 1ère ligne contient les noms des champs, les deux dernières lignes sont conservées (même si il n'y a pas de données), elles permettent de maintenir vos choix de format de cellule.

Le tableau défini ainsi voit son nombre de lignes varié en fonction du contenu de la DataTable. Le client bloque parfois sur la transmission d'un grand nombre de données.

Si le nom Excel ne correspond qu'à une seule cellule, les données sont générées à partir de celle-ci et écrase tout ce qui est en dessous et à droite du taleau.

Attention à la suppression de colonne de votre feuille, elle pourrait rendre votre nom Excel référant à une seule cellule.

 

Log

Les données d'une variable Log peuvent être intégrées dans une feuille de données. Elles se rafraîchissent automatiquement lors du changement de valeur de la variable du serveur EDV.

La nouvelle valeur indiquée par le serveur est ajoutée dans la 1ère ligne vide du tableau (testée sur la 1ère cellule uniquement).
Le remplissage ne dépasse jamais en hauteur (nombre de lignes) la plage de cellules définie par le nom. La dernière cellule est mise à jour.

Si le Log contient des tabulations, les colonnes de droite sont remplies.

EDVariables.xla référence la librairie ActiveX EDVClientHttpAx.dll que vous pouvez utiliser librement dans VBA.

 

Le code suivant fonctionne sous VBA et VBScript (?) :

Set EDV = CreateObject("EDVClientHttpAx.EDVClientHttp")
MsgBox EDV.Login("localhost",46080,"vba","")
MsgBox EDV.GetVarValue(".Pesage.RBEW.A")
MsgBox EDV.GetVarCode(".Pesage.RBEW.A.DSD.New")

préférez ajouter la référence à la DLL dans votre projet et utilisez les fonctions globales sans création d'object EDVClientHttpAx.EDVClientHttp

edvLogin(...

Voir aussi

Paramétrage d'Excel