Bonjour à tous,
Pour une appli en VBA sous Excel permettant de lancer des traitements (sur des cubes Essbase pour info), je fais appel à l'API fourni par Hyperion. Tout fonctionne sans problème, sauf que les traitements étant particulièrement long j'aimerai que les utilisateurs puissent garder la main alors que pour l'instant Excel est en attente de l'API et empêche tout travail sous Excel que ce soit sur le fichier avec le script VBA ou sur tout autre fichier.
Actuellement mon code :
Code :
- ' Affichage de la fenêtre de traitement et du curseur en forme de sablier
- Form_Traitement.Show (vbModeless)
- Application.Cursor = xlWait
-
- ' Appel de l'API simplifiée
- Call Esb_ModifierValeurVariable("Phase_Source", Trim(CB_PhaseSource.Value))
- ' On efface la fenêtre et on remet le curseur par défaut
- Form_Traitement.Hide
- Application.Cursor = xlDefault
|
l'API simplifiée sont des fonctions que j'ai créé qui regroupe des commandes de l'API. Par exemple ici ModifierValeurVariable :
Code :
- Public Sub Esb_ModifierValeurVariable(ByVal nom_Variable As String, ByVal valeur_Variable As String)
- ' Modifie la valeur d'une variable de substitution à partir de son nom et de de la valeur que l'on souhaite lui donner en paramètres (2 string)
- Dim sts As Long
- Dim oVariable As ESB_VARIABLE_T
- ' On indique le serveur (l'application et la base ne sont pas renseignées car variables globales au projet)
- oVariable.Server = nom_serveur
- ' On affecte à la variable "nom_variable", la valeur donnée (valeur_Variable)
- oVariable.VarName = nom_Variable
- oVariable.VarValue = valeur_Variable
- sts = EsbCreateVariable(apihctx, oVariable)
- End Sub
|
Mais bon ceci ne doit pas avoir d'importance ici je pense.
Pour info, tout le traitement a lieu sur le serveur donc le poste client est à 0% au niveau charge processeur, il n'y a donc aucun soucis de ce côté là. J'ai pensé à mettre des DoEvents le problème étant que c une ligne unique ("sts = EsbCreateVariable(apihctx, oVariable)" dans l'exemple ci-dessus) sur laquelle il bloque.
Voila si vous pouviez m'aiquiller vers la bonne direction, je vous en serais bien reconnaissant !
Merci !