IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[Excel] - Connection à des données externes


Sujet :

Macros et VBA Excel

  1. #1
    Invité
    Invité(e)
    Par défaut [Excel] - Connection à des données externes
    Bonjour à tous,

    J'ai dans un fichier Excel une feuille qui se connecte par l'intermédiaire de MicrosoftQuery à une base Oracle.

    Dans la majorité des cas pas de soucis.
    Cependant je travaille sur une ferme Citrix, c'est un Excel (2003) serveur.

    De temps en temps nous avons un ralentissement des serveurs, lorsque je met à jour les données (Resfresh), j'ai un temps d'attente trop long, et excel plante (pas de réponse).

    Je ne sais pas comment intercepter le fait que mon appli plante. Où qu'il y'a un soucis.

    Voici le code qui lance la mise à jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ' ***** extraction octal des données de production *****
        Call DeclarationVariables
        Set wks = wkb.Worksheets("Extract_Octal")
        wks.Select
        'wkb.RefreshAll
        Selection.QueryTable.Refresh BackgroundQuery:=True
     
        Set wks = Nothing
        DoEvents
    Quelqu'un a t-il une idée

    Starec

  2. #2
    Membre éclairé Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Par défaut
    Je crois que le fait que l´appli plante ne peut pas vraiment être intercepté par l´appli elle-même, vu qu´elle est un peu trop occupée ... à planter justement.
    Un de mes collègues avait un problème identique et il utilise pour cela un compteur de temps: il sait que quand sa requète tourne "correctement", elle génère ses résultats en mettons 10 sec, 15 maximum, donc, si le compteur de temps dépasse 15 secondes et que rien n´est sorti, il fait interrompre la requète par le code et quitte excel après sauvegarde.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Re

    Pas bête ton truc, as-tu un bout de code.

    Starec

  4. #4
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Oui j'aimerai bien savoir comment on fait un compteur de temps aussi, pour ma culture personnelle

    Parce que, a part avec l'application OnTime, je vois pas trop
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  5. #5
    Expert confirmé Avatar de illight
    Homme Profil pro
    Analyste décisionnel
    Inscrit en
    Septembre 2005
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Analyste décisionnel
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 344
    Par défaut
    Un truc de ce genre la :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure"
    Pris dans l'aide de l'application On Time..
    1. Avant de poster, et http://www.developpez.com/sources/
    2. Lors du post, n'oubliez pas, si besoin les balises CODE => voir ici pour l'utilisation
    3. N'oubliez pas le
    4. N'oubliez pas le si la réponse vous a été utile !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Re

    Pour le timer j'ai fait des tests, cela ne fonctionne pas, car en fait ma mise à jour est sur une seule ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Selection.QueryTable.Refresh BackgroundQuery:=True
    Une fois lancé je ne peux faire autre chose

    D'autres solutions ?

    Starec

  7. #7
    Membre éclairé Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Par défaut
    Malheureusement, le collègue en question est en vacances et il est le seul à utiliser ce truc.
    Cette discussion sur un chronomètre fournit toutefois de bons éléments de départ:
    http://www.developpez.net/forums/showthread.php?t=289798&highlight=temps
    Mon souci est que je suis pas un expert sur les dll et que je ne connais pas les propriétés et arguments exigés dans GetTickCount...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Public Declare Function GetTickCount& Lib "kernel32" ()
    '...
    Sub chrono()
    Dim depart As Double
    Dim actuel As Double
    depart = Now()
    actuel = GetTickCount&
    Loop Until depart - actuel < 0.0015
    Exit Sub
    End Sub

  8. #8
    Invité
    Invité(e)
    Par défaut
    Re

    Merci de tes recherches, je connais cette API.

    Je ne pense pas que cela résoud mon problème, le timer va déclencher une action, ce que je veux savoir c'est comment détecter le temps passé.

    Car ma ligne rafraichissant les données ne donne pas la main au system, donc on ne peut tester de temps.

    Starec

  9. #9
    Membre éclairé Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Par défaut
    Sinon, tu peux tenter de vérifier l´état du serveur préalablement à la requète de rafrachissement et de ne procéder au rafraichissement que si les données récupérées ne dépassent pas certaines valeurs limites.
    Des idées en l´air:
    - j´ai oui dire qu´il était possible via VB ou VBA de récupérer les données relatives à l´état de la machine, notamment celles qui apparaissent dans le gestinnaire des tâches de windows (activité du processeur,utilisation de la RAM...), peut-être est il possible de réaliser cela sur un serveur distant...
    - tu peux aussi "pinger" le serveur avant ta requète. Le temps de réaction du serveur en millisecondes (réponse au ping) fournit une indication indirecte sur son état et sa charge de travail et tu peux lá encore n´exécuter le rafraichissement que si le délai de réponse est inférieur à une certaine valeur.
    En espérant que cela soit utile.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Re

    Bonne idée, mais impossible

    Nous avons une configuration lié à une ferme citrix, quand on se connecte on ne sait pas sur quel serveur on va à l'avance, c'est ce serveur qui nous pilote, et les fichiers sont sur d'autres serveurs. Pas simple.

    De plus les utilisateurs n'ont pas de PC, mais des Neoware (c'est juste des connecteurs au réseau). Moi j'ai un PC car je développe, mais je me lie à la ferme Citrix.

    Starec

  11. #11
    Invité
    Invité(e)
    Par défaut
    Bonjour

    J'ai résolu mon problème d'une autre manière en faisant directement une récupération des données par ADO connecté à Oracle. Malgré les ralentissements cela fonctionne à 100 %

    Starec

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [E-07] activer automatiquement des données externes excel
    Par ciel_ dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/11/2008, 12h33
  2. Exposition d'un objet en utilisant des données externes
    Par ocroquette dans le forum OpenGL
    Réponses: 2
    Dernier message: 21/11/2005, 22h49
  3. [EXCEL] Formatage des données
    Par Cupidon dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 02/11/2005, 22h32
  4. [Excel] Récupérer des données d'une base Access
    Par FoxDeltaSierra dans le forum Excel
    Réponses: 8
    Dernier message: 03/09/2005, 11h22
  5. Réponses: 3
    Dernier message: 25/07/2005, 10h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo