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 :

Gestion évènements et Application.Ontime


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut Gestion évènements et Application.Ontime
    Bonjour,

    J'ai un code qui a la structure suivante:
    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
     
    sub ma_macro()
     
    'initialisation
     
    i = 1
    Do While IsEmpty(Cells(i,1)) = False
     
        Application.OnTime t(i), "ma_sub"
        'Gestion évènement ?
        i = i + 1
     
    Loop
     
    End Sub
    Avec en colonne 1 les heures t(i).

    Je souhaite donc exécuter "ma_sub" aux heures t(i).

    Mais en fait, quand je lance la macro, elle s'exécute jusqu'à la fin et il n'y a pas d'arrêt dans la boucle while, pour attendre que ma_sub se soit exécutée (avant de passer à la suivante).

    Il faudrait que je mette un sleep juste après le application.Ontime mais alors à ce moment là, je n'ai plus d'intérêt à garder le Application.Ontime.

    J'avais donc pensé à un wait.nextevents (complètement inventé), c'est-à-dire une fonction qui gère les évènements, afin de na pas utiliser de sleep ..

    Existe-t-il cela en VBA, ou une manière de s'en approcher ?

    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut
    bon visiblement ça a l'air compliqué puisque y'a pas eu de réponses.

    j'ai cru comprendre qu'il faut inclure du code dans ThisWorkbook et pas seulement dans un module, en mettant l'option schedule de application.Ontime sur False

    mais c'est pas clair du tout cette histoire, surtout à cause de la boucle que je veux faire et l'intervalle d'exécution variable

  3. #3
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    t(i) ne renvoit rien comme valeur, essaye ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sub ma_macro()
    'initialisation
    i = 1
    Do While IsEmpty(Cells(i,1)) = False
        Application.OnTime Cells(i, 1).Value, "ma_sub"
        'Gestion évènement ?
        i = i + 1
    Loop
    End Sub
    Code testé

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut
    arf désolé, t(i) était une vulgarisation de mon code; c'était bien cells(i,1) que je mettais ; c'était pour la compréhension, car le problème ne vient pas de là mais de l'utilisation incrémentale de Application.Ontime

    je crois bien que l'utilisation du while n'est pas possible dans ce cas là;

    il faut "boucler" sur soi-même, c'est à dire que la structure serait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sub ma_macro()
    (...)
    application.ontime t, "ma_macro"
    (...)
    end sub

  5. #5
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    perso j'ai testé le code et il fontionne

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2007
    Messages
    172
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 172
    Par défaut
    Citation Envoyé par fring Voir le message
    perso j'ai testé le code et il fontionne


    bon je savais depuis ce matin que j'étais pas dans un bon jour mais là ...

    bon aller, je verrai ça après une bonne nuit de sommeil.

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

Discussions similaires

  1. [JSF + ADF]Gestion d'un application module
    Par bertlef dans le forum JSF
    Réponses: 2
    Dernier message: 13/03/2009, 12h15
  2. L'événement Application.OnTime Sous VBA
    Par SubObjectif dans le forum Access
    Réponses: 14
    Dernier message: 04/08/2006, 12h00
  3. [Visual Studio][MFC] Gestions évènements
    Par Mic75 dans le forum MFC
    Réponses: 6
    Dernier message: 07/06/2006, 20h03
  4. [VBA-E] Comment annuler un appel planifié avec Application.OnTime ?
    Par Efpoint dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/05/2006, 14h24
  5. [MFC][VC++.NET]gestion évènement clavier
    Par Rafoo dans le forum MFC
    Réponses: 2
    Dernier message: 14/12/2005, 09h29

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