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 :

Application WAIT en VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Billets dans le blog
    1
    Par défaut Application WAIT en VBA
    Bonjour
    j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Wait Now + TimeValue("0:00:01")
    pour attendre 1 seconde dans mon execution de code
    est il possible d'attendre moins d'une seconde ? en centieme de seconde par exemple et comment l'eccrire ??? surtout ...???


    merci et joyeux noel !!!

  2. #2
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Mais bien sûr...
    mais pas forcément avec précision. Il faudra vérifier.

    J'utilisais la fonction API Windows "GetTickCount()" mais il y a parfois des décalages. Petite remarque lors d'acquisitions, il faut absolument éviter de faire des calculs en même temps : le temp des calculs est parfois énorme face au temps d'acquisition (Acquisition toutes les 5ms sans calculs et 35ms avec des calculs simples).

    Il existe de nouvelles fonctions Windows plus fiable.
    Un expert sur le forum en a parlé il y a quelques temps...

    Sinon sous "VB.NET", il y a des fonctions plus précises qui tiennent compte de la fréquence réelle du microprocesseur.

    Voir sur MSDN
    sinon il y a des codes récents sur un site Anglais :http://www.cpearson.com/Zips/modWait.zip

    La question est de savoir quel est votre besoin en précision.

    ESVBA

  3. #3
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour djoumusic ESVBA le forum. une methode 1 dixieme dans l'exemple a adapter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub macro1()
    Dim s, p As Variant
    'ton code1
    p = 0.1: s = Timer: Do While Timer < s + p: DoEvents: Loop
    'ton code2
    End Sub
    joyeux noel a tous

  4. #4
    Membre éclairé

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Billets dans le blog
    1
    Par défaut
    merci alors comment tu ecrirais.. avec ta proposition...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    '1
    Application.Wait Now + TimeValue("0:00:01")
    Application.SendKeys Range("f47").Value
    Application.SendKeys "{TAB}"
    '2
    Application.Wait Now + TimeValue("0:00:01")
    Application.SendKeys Range("g47").Value
    Application.SendKeys "{TAB}"
    MILLE MERCI !!!!!

  5. #5
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut
    Salut à tous,

    si la réponse de laetitia convient, remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Wait Now + TimeValue("0:00:01")
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Do While Timer < s + p: DoEvents: Loop
    sans oublier les déclarations de variables.

    Remarques : "Wait" bloque toutes les opérations ou presque. Il n'y aurait pas besoin ici de mettre la fonction "DoEvents". Mais comme la durée est très courte, ça n'a pas d'importance.

    ESVBA

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour tou(te)s, salut Leti,
    Si tu veux un timer plus précis...
    Coller le code ci-dessous dans un module BAS.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Declare Function GetTickCount Lib "kernel32" () As Long
    Public Const Delais = 600 'Nombre de milli secondes du délais
     
    'Timer milli seconde
    Sub TimerMS()
    Dim TP As Long
        TP = GetTickCount
        Do While TP + Delais > GetTickCount
            DoEvents
        Loop
    End Sub
    et ton code deviendrait...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
        TimerMS
        Application.SendKeys Range("f47").Value
        Application.SendKeys "{TAB}"
        '2
        TimerMS
        Application.SendKeys Range("g47").Value
        Application.SendKeys "{TAB}"
    Joyeux Noël à tous,
    A+
    Edit:
    Pour info : la fonction Timer ne peu fonctionner que par seconde et pas moins.

  7. #7
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut
    bonjour laetitia, djoumusic, LeForestier et ceux que j'oublie.

    J'ai plus simple pour la deuxième question :Voilà.

    Après relecture de la première question et de la réponse de laetitia, j'étais complétement à côté en voulant répondre.
    A-t-on bien répondu à la question ?

    Voyant l'autre post avec les jours de la semaine... Je pense aussi que la solution de l'"offset()" est une bien meilleure solution.

    ESVBA

  8. #8
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re, j'avais pas vu l'autre post .en fin de compte mon code sert a rien il fait pas 26 {TAB} a la suite avec une tempo entre!!!
    d'ailleurs j'ai toujours beaucoup de mal a comprendre la finalite de tout cela
    en fin de compte l'instruction offset na pas de sens non plus!!!

    en voyant la reponse de l'ami ESVBA sur l'autre post trés bonne analyse d'ailleurs.
    "pointer directement sur la cellule concernee"
    eventuellement mettre une tempo pour faire "jolie" supprimer tous ces sendkeys qui peuvent poser probleme de fiabilite l'ami Gorfael a bien resumé tous cela

    ca citation est trés explicite

    La qualité et la précision de la réponse sont proportionnelles à celles de la question

  9. #9
    Membre éclairé

    Homme Profil pro
    Restaurateur
    Inscrit en
    Juin 2008
    Messages
    316
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Restaurateur
    Secteur : Alimentation

    Informations forums :
    Inscription : Juin 2008
    Messages : 316
    Billets dans le blog
    1
    Par défaut
    offset est mieux,
    mais je pilote une page internet explorer..
    et j'ai besoin de faire des "tab"....

    et ce n'est pas un formulaire... sinon, j'aurai pu recuperer le nom de inputname....
    j'ai pas d'autre solution que d'utiliser des tab...

    MERCI

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/08/2010, 23h07
  2. Sleep vs Application.wait
    Par Pierre845 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/04/2008, 13h42
  3. Réponses: 1
    Dernier message: 28/12/2006, 06h59
  4. L'événement Application.OnTime Sous VBA
    Par SubObjectif dans le forum Access
    Réponses: 14
    Dernier message: 04/08/2006, 12h00

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