none
Erreur de type #GETTING_DATA excel vba RRS feed

  • Question

  • Bonjour à tous,

    Je travail actuellement sur un prototype Excel permettant de publier des rapports issu d'un pivot table. je génère autant de rapport que de membre d'un niveau d'une dimension. La construction des rapports se fait à l'aide des fonction Cube dans Excel depuis la version 2007 (cubeset, cubemember, cubevalue ...)

    Par exemple, lorsque la fonction CUBEMEMBER produit une valeur, elle affiche temporairement le message « #GETTING_DATA… » dans la cellule avant que toutes les données soient récupérées.

    #Getting_data equivaut à l'erreur 2043

    Une cellule pointe sur la cellule avec la fonction cubemember pour récupérer la valeur de celle-ci, cependant comme mon traitement boucle sur les membres de ma dimension, parfois la données n'est pas encore disponible ce qui provoque une erreur.
    Est-il possible de mettre en attente le process jusqu'à la disponibilité des données pour poursuivre les traitements.

    J'ai essayé plusieurs méthodes mais sans succès, en effet par exemple je boucle sur la cellule contenant le fonction cubemember et tant que la cellule est à #getting_data, ne pas passer à l'étape suivante , seulement la cellule ne veut pas se synchroniser, la valeur reste à #Getting_data.
    Faut-il peut être libérer de la mémoire pour pouvoir rafraichir les données?

    Ex : la cellule A1 contient cette fomule :
    Code :

     =cubeset(cube;([Date].[2010],[country].children);"test")

    Je vérifie si la données dans la cellule est disponible, si elle ne l'est pas, alors je boucle tant que la données n'est pas disponible

    ex de code :
    Vérification de la dispo des données :
    Code :

    While cstr Range("A1").value) = " error on 2043 "

    loop
    wend)

    next step : (step 2)
        Range("B1").value = Range("A1&).value

    Résultat : La celulle A1 reste sur #GETTING_DATA, et mon traitement ne se poursuis pas car la données n'est pas disponible...

    Si je ne boucle pas, j'aurais alors une erreur au step 2, en effet la données n'étant pas encore disponible, j'aurais une erreur de type de donnée

    Le fait de placer une instruction DoEvents dans ma boucle ne solutionne pas le problème car comme je génère plusieurs rapports de façon dynamique, je ne peut me permettre d'intervenir manuellement dans le processus

    Auriez-vous une idée pour qui me permettrait de poursuivre mes traitements des la disponibilité des données ?

    Merci beaucoup

    Abdeslam
    mardi 24 août 2010 15:45

Toutes les réponses

  • bonjour mpslap,

    peut tu vérifier à quel moment l'événement calculate s'exécute,
    lors de l'apparition du message « #GETTING_DATA… » ou bien après ?

    isabelle
     Le 2010-08-24 11:45, mpslap a écrit :

    Bonjour à tous,

    Je travail actuellement sur un prototype Excel permettant de publier des rapports issu d'un pivot table. je génère autant de rapport que de membre d'un niveau d'une dimension. La construction des rapports se fait à l'aide des fonction Cube dans Excel depuis la version 2007 (cubeset, cubemember, cubevalue ...)

    Par exemple, lorsque la fonction CUBEMEMBER produit une valeur, elle affiche temporairement le message « #GETTING_DATA… » dans la cellule avant que toutes les données soient récupérées.

    #Getting_data equivaut à l'erreur 2043

    Une cellule pointe sur la cellule avec la fonction cubemember pour récupérer la valeur de celle-ci, cependant comme mon traitement boucle sur les membres de ma dimension, parfois la données n'est pas encore disponible ce qui provoque une erreur.
    Est-il possible de mettre en attente le process jusqu'à la disponibilité des données pour poursuivre les traitements.

    J'ai essayé plusieurs méthodes mais sans succès, en effet par exemple je boucle sur la cellule contenant le fonction cubemember et tant que la cellule est à #getting_data, ne pas passer à l'étape suivante , seulement la cellule ne veut pas se synchroniser, la valeur reste à #Getting_data.
    Faut-il peut être libérer de la mémoire pour pouvoir rafraichir les données?

    Ex : la cellule A1 contient cette fomule :
    Code :

      =cubeset(cube;([Date].[2010],[country].children);"test")

    Je vérifie si la données dans la cellule est disponible, si elle ne l'est pas, alors je boucle tant que la données n'est pas disponible

    ex de code :
    Vérification de la dispo des données :
    Code :

    While cstr Range("A1").value) = " error on 2043 "

    loop
    wend)

    next step : (step 2)
         Range("B1").value = Range("A1&).value

    Résultat : La celulle A1 reste sur #GETTING_DATA, et mon traitement ne se poursuis pas car la données n'est pas disponible...

    Si je ne boucle pas, j'aurais alors une erreur au step 2, en effet la données n'étant pas encore disponible, j'aurais une erreur de type de donnée

    Le fait de placer une instruction DoEvents dans ma boucle ne solutionne pas le problème car comme je génère plusieurs rapports de façon dynamique, je ne peut me permettre d'intervenir manuellement dans le processus

    Auriez-vous une idée pour qui me permettrait de poursuivre mes traitements des la disponibilité des données ?

    Merci beaucoup

    Abdeslam

    • Proposé comme réponse EhJoe samedi 28 août 2010 10:37
    vendredi 27 août 2010 19:35
  • Bonjour Isabelle,

    Comment puis-je tracer l'exécution de cet évènement ?

    Par ailleurs dans ma boucle j'avais déja essayé de recalculer la cellule, cependant la valeur restait toujours à #Getting_Data.

    J'avais fais quelque chose du genre :

    While cstr(Range("A1").value) = " error on 2043 "

    Range("A1").Calculate

    DoEvents

    loop
    wend

    Mais sans succès.

    Aurais-tu une piste sur la gestion de traitement ?

    Merci pour ton aide

     

    Abdeslam

     

    lundi 30 août 2010 12:54