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 :

Tâche répétitive inférieure à la seconde [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut Tâche répétitive inférieure à la seconde
    Bonjour,

    Je souhaiterais effectuer une tâche toutes les X dixièmes de secondes.
    Je n'ai pas réussi à faire la synthèse de tous les posts sur le sujet sur le net...

    En fait, j'arrive facilement à faire un Timer en centièmes de seconde ou à effectuer une tâche toutes les secondes avec Application.OnTime Now + TimeValue("00:00:01"), "ma_macro" mais je n'arrive pas à mixer les deux...

    Quelqu'un aurait-il la solution ?

    Je vous remercie par avance en restant à votre disposition pour tout complément !
    Kimy

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur Industrialisation
    Inscrit en
    Mai 2015
    Messages
    222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur Industrialisation
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2015
    Messages : 222
    Par défaut
    Tu ne pourrais pas utiliser l'api Sleep du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    Sub LanceurDeTaches()
     
    Do Until [TA CONDITION D'ARRÊT]
        Call TaProcédure
        Sleep 100 'millisecondes
        Doevents
    Loop
     
    End Sub
     
    Sub TaProcédure
    Debug.Print "Procédure lancée à " & time
    End Sub
    C'est peut-être nul, je sais pas Je propose ce qui me passe par la tête...

  3. #3
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour

    Tu vas trouver ici quelques exemples de
    m_TimerID = SetTimer(0, 0, Duration, AddressOf TimerEvent)

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour à tous,

    @Quentin77170 : en fait, je ne peux pas utiliser Sleep car je dois faire un DoEvents pendant les moments "off" de ma macro.
    Ton idée est bonne, mais je n'ai pas donné tous les détails !

    @Docmarti : Merci pour le lien. Je crois que je vais tester plusieurs choses. J'ai trouvé un truc de mon côté et ce lien là que tu m'as donné semble réponse parfaitement à ma demande.

    Je reviens vers vous !
    Merci !

    Cordialement,
    Kimy

  5. #5
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Sinon, avec l'Api "GetTickCount " :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Declare Function GetTickCount Lib "Kernel32" () As Long
     
    Sub Minuterie(Milliseconde As Long)
     
        Dim Arret As Long
     
        Arret = GetTickCount() + Milliseconde
     
        Do While GetTickCount() < Arret
            DoEvents
        Loop
     
    End Sub
     
    Sub Test()
        Dim Debut As Long
     
        Debut = GetTickCount
        Minuterie 100
     
        'la différence entre la valeur affichée et les 100 ms est due à l'appel de la fonction "GetTickCount"
        'pour le Debug Print, chez moi 10 ms --> 110
        Debug.Print GetTickCount - Debut
     
    End Sub
    Hervé.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    je te propose une solution, un contrôle timer!

    vue qu'il n'est pas possible d'utiliser le contrôle timer, j'en est créé un avec le contrôle time!

    oui mon contrôle est un passe plat et vue qu'il à été développé avec vb6 correctement licencier tu peux t'en servir dans Excel!

    une seconde est égal à 1500 interval !
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 14/03/2016, 12h05
  2. Automatiser les tâches répétitives
    Par nitch01 dans le forum Débuter
    Réponses: 1
    Dernier message: 01/11/2011, 17h24
  3. Réponses: 0
    Dernier message: 23/02/2011, 11h58
  4. [QBasic] Temporisation inférieure à 1 seconde
    Par djedje-08 dans le forum Basic
    Réponses: 0
    Dernier message: 20/09/2009, 18h26
  5. [Batch] Cron Expression Tâche répétitive Spring
    Par bj304075 dans le forum Spring
    Réponses: 2
    Dernier message: 30/06/2009, 11h28

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