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 :

fréquence d'une macro


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 18
    Par défaut fréquence d'une macro
    Bonjour,

    ayant récemment débuté la programmation sous vba (mais ayant déjà programmé sous java auparavant), je me suis lancé dans la réalisation d'un Tetris.

    Je rencontre le problème suivant, qui consiste à répéter une macro dans des intervalles de temps inférieurs à une seconde. A ma connaissance, la propriété Ontime ne permet pas de descendre sous uns fréquence inférieure à une seconde.

    Si quelqu'un a déjà rencontré ce problème et a réussi à le résoudre, j'aimerais volontiers une petite aide.

    Merci d'avance.

    Romain.

  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 bonsoir Romain227, le forum
    c'est un problème récurrent avec VBA.

    Il faut passer par une API genre "GetTickCount()".

    Fais une recherche sur cette fonction, il y aura des exemples sur ce forum.


    ESVBA

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2010
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 18
    Par défaut
    merci de ta réponse, malheureusement, tout comme le Timer, cette fonction gettickcount ne repond pas à mon problème que je vais décrire simplement :

    en gros, dans mon tétris, entre le moment où une pièce "stationne" et le moment où elle descend d'un cran (en un intervalle de temps inférieur à la seconde), je n'ai plus la main sur le programme, cad par exemple que je ne peux plus bouger la pièce latéralement.

    La raison à cela c'est cette boucle dans mon programme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    fin = timer + 0.4
     
    while timer < fin
     
    doevents
     
    loop
     
    call descendre()
    la boucle me prive du controle de mon programme et pendant cet intervalle de temps ou la piece est immobile (0.4 secondes), le programme ne me donne pas la main pour l'exécution d'une autre macro (bouger sur les côtés)

    Je ne sais pas si ce problème se contourne facilement, si c'est un "classique" de la programmation sous vba ou non. Toujours est-il que je n'arrive pas à m'en sortir. Il me semble que doevents permet de reprendre la main au sein d'une boucle mais je n'ai pas réussi à l'utiliser à bon escient.

    Si de manière plus générale, quelqu'un s'est déjà lancé dans la réalisation d'un tétris qui a abouti (ce qui je pense doit être le cas, ce jeu étant des plus classiques), j'aimerais savoir comment vous avez réussi à descendre les pièces à une fréquence inférieure à la seconde.

    Dans tous les cas, merci d'avance pour votre aide/conseil/astuce.

Discussions similaires

  1. [VB6] Exécuter une macro Access
    Par Nektanebos dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 22/02/2006, 16h32
  2. Macro utilisant une macro...
    Par Gogoye dans le forum C
    Réponses: 2
    Dernier message: 29/10/2003, 14h22
  3. [VBA-E] [Excel] Lancer une macro à une heure donnée
    Par Lysis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/10/2002, 12h15
  4. Qu'est-ce qu'une macro ?
    Par karli dans le forum Assembleur
    Réponses: 2
    Dernier message: 01/09/2002, 03h38
  5. Réponses: 2
    Dernier message: 22/07/2002, 12h13

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