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 :

Détails sur Application.OnTime


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut Détails sur Application.OnTime
    Bonjour à tous,

    J'ai une petite question relative à l'utilisation de Application.OnTime :

    • J'aimerais savoir s'il est possible de récupérer des informations sur les macros en attentent de lancement après l'utilisation de Application.OnTime?
      Information basique comme les noms des procédures et les heures de lancement prévues.


    Merci d'avance

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Re bonjour tout le monde,

    J'ai encore deux petites questions pour vous :

    • Après l'utilisation de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OnTime Heure1, "Test"
    Si je veux annuler le lancement de la procédure Test a l'heure Heure1, je vais utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OnTime Heure2, "Test", ,False
    Faut-il que Heure1 et Heure2 soit exactement identiques ? (il me semble que oui mais je voudrais confirmation ^^)


    • J'ai trouvé dans Excel la bibliothèque TaskScheduler, pensez-vous qu'elle pourrait permettre d'explorer les macros planifiées via Application.OnTime ou fais-je fausse piste ? Si possible des infos sur l'utilisation de cette bibliothèque me seraient très utiles.



    Encore merci d'avance

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut
    re
    bonjour Antony
    pour la 2 ° il me semble que l'heure devrait être la le même mais tu met une sub vide
    du moins je crois je sais pas si on peut supprimer un ontime programmé alors on peut peut-être reprogrammer la sub de la demande

    exemple
    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 tache()
    application.ontime heure1,test
    end sub 
     
    sub suptache()
    application.ontime heure1,annule
    end sub 
     
    sub test()
    balablablabla
    end sub 
     
    sub annule
    'rien ici
    end sub
    après pour shtasksheduler je suis intéressé si il y a cela dans excel je voudrais bien savoir ou je bricole justement en ce moment sur les taches planifiés Windows avec excel pour sebphyto
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Patrick

    Merci pour la réponse.

    Avec ton explication, ça voudrait dire qu'on ne peut pas planifier deux tâches différentes à la même. Cela s'emblerais étonnant, non ?


    Apres quelques tests, je crois comprendre qu'une tache planifier via .OnTime est identifier par le nom de la Proc ET l'heure.


    Pour ce qui est de la référence TaskScheduler, je suis sur Office 2010 et elle se nomme TaskScheduler 1.1 Type Library mais même une fois activée, je dois avouer que je ne sais pas trop comment déclarer les variables et encore moins les affecter pour ensuite explorer ces dernières.




    Je te fais confiance pour mener l'enquête
    Si tu sais me faire avancer dans mes questionnements on va vraiment de faire une rubrique dédiée


    Peux-tu m'indiquer la discussion avec sebphyto dont tu fais référence ?

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    non en fait dans mon exemple je reonrient latache vers une sub vide ce qui a pour effet d'annuler la premiere et rien faire
    maintenant pour ton object TaskScheduler 1.1 Type Library
    comme je suis un récalcitrantnt du earlybinding

    voila une demo avec cet object en LATEBINDING que j'ai adapté a vba et traduite en Français

    cet exemple d'éclanche Notepad exe 1 minute après que tu est lancer l'inscription dans la liste des tache

    je tiens a te remercier!!!! car jusqu'à présent je le faisait avec un CMD dynamique pour lancer la tache malheureusement pour reprogrammer la tache j'avais une action a faire alors que les paramètre était en invisibles

    visiblement en essayant de résoudre les problèmes des autres je résout les miens

    hier c'était pour OLIV+ avec son object update et aujourd'hui c'est toi avec les taches planifiées


    donc cet exemple fait la même chose sauf que je n'ai pas besoins de taper O et entrer pour confirmer que je veux modifier la tache
    teste ce code attend une minute et vois la lumière
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
     
    '------------------------------------------------------------------
    ' Cet exemple programme une tâche pour lancer Notepad.exe 60 secondes
    ' à partir du moment où la tâche est enregistrée.
    '------------------------------------------------------------------
    ' Une constante qui spécifie un déclencheur basé sur le temps.
    Const TriggerTypeTime = 1
    ' Une constante qui spécifie une action exécutable.
    Const ActionTypeExec = 0
    Sub test()
    '********************************************************
    ' Créer l'objet TaskService.
    Set service = CreateObject("Schedule.Service")
    Call service.Connect
    '********************************************************
    ' Obtenez un dossier pour créer une définition de tâche.
    Dim rootFolder
    Set rootFolder = service.GetFolder("\")
    ' La variable tâche Définition est l'objet de la définition des tâches.
    Dim taskDefinition
    ' Le paramètre flags est 0 car il est pas pris en charge.
    Set taskDefinition = service.NewTask(0)
    '********************************************************
    ' Définir des informations sur la tâche.
    ' Définir les informations d'enregistrement de la tâche par
    ' la création de la Registration Info objet.
    Dim regInfo
    Set regInfo = taskDefinition.RegistrationInfo
    regInfo.Description = "Start notepad at a certain time"
    regInfo.Author = "Author Name"
    '********************************************************
    ' Définir l'entité pour la tâche
    Dim principal
    Set principal = taskDefinition.principal
    ' Définissez le type de connexion à l'ouverture de session interactive
    principal.LogonType = 3
     
    ' Réglez la tâche d'info réglage pour le Planificateur de tâches par
    ' création d'un objet Paramètres des tâches.
    Dim settings
    Set settings = taskDefinition.settings
    settings.Enabled = True
    settings.StartWhenAvailable = True
    settings.Hidden = False
    '********************************************************
    ' Créer un déclencheur basé sur le temps.
    Dim triggers
    Set triggers = taskDefinition.triggers
    Dim trigger
    Set trigger = triggers.Create(TriggerTypeTime)
    ' Déclencher variables qui définissent lorsque le déclencheur est actif.
    Dim startTime, endTime
    Dim time
    time = DateAdd("s", 60, Now)  'start time = 30 seconds from now
    startTime = XmlTime(time)
    time = DateAdd("n", 5, Now) 'end time = 5 minutes from now
    endTime = XmlTime(time)
    MsgBox "startTime :" & startTime & vbCrLf & "endTime :" & endTime
     
    trigger.StartBoundary = startTime
    trigger.EndBoundary = endTime
    trigger.ExecutionTimeLimit = "PT5M"    'Five minutes
    trigger.ID = "TimeTriggerId"
    trigger.Enabled = True
    '***********************************************************
    ' Créer l'action pour la tâche à exécuter ..
    ' Ajouter une action à la tâche à exécuter notepad.exe.
    Dim Action
    Set Action = taskDefinition.Actions.Create(ActionTypeExec)
    Action.Path = "C:\Windows\System32\notepad.exe"
    MsgBox "définition tâche créée . enregistrement de la tâche ..."
    '***********************************************************
    ' Inscrire (créer) la tâche.
    Call rootFolder.RegisterTaskDefinition( _
        "Test TimeTrigger", taskDefinition, 6, , , 3)
    MsgBox "Tâche programée"
    End Sub
    '------------------------------------------------------------------
    ' Permet d'obtenir le temps de la détente
    'startBoundary et à la fin des limites.
    ' Retourne le temps dans le format correct:
    ' YYYY-MM-DDTHH:MM:SS.
    '------------------------------------------------------------------
    Function XmlTime(t)
        Dim cSecond, cMinute, CHour, cDay, cMonth, cYear
        Dim tTime, tDate
        cSecond = "0" & Second(t)
        cMinute = "0" & Minute(t)
        CHour = "0" & Hour(t)
        cDay = "0" & Day(t)
        cMonth = "0" & Month(t)
        cYear = Year(t)
        tTime = Right(CHour, 2) & ":" & Right(cMinute, 2) & _
            ":" & Right(cSecond, 2)
        tDate = cYear & "-" & Right(cMonth, 2) & "-" & Right(cDay, 2)
        XmlTime = tDate & "T" & tTime
    End Function
    tu la vois la lumière
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Re Patrick,

    Merci pour cette démo ! (Tu vas encore croire que je me moque mais cette fois je ne me suis pas fait avoir j'ai tout de suite enlevé Option Explicit :p)


    Je vais essayer de comprendre en détail le fonctionnement.
    J'ai déjà pu voir que cette fois la tâche était bien présente dans le planificateur de tâche Windows. Ce n'était pas le cas avec Application.OnTime.

    Sais tu ou est stockée la tâche a venir avec l'utilisation de .OnTime ?

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

Discussions similaires

  1. Application.OnTime qui bloque avec du code validé sur d'autres topic
    Par tmlpqsdpmdlc dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/04/2015, 14h11
  2. Windows 8 : des détails sur la galerie d'applications révélés
    Par Hinault Romaric dans le forum Windows 8
    Réponses: 297
    Dernier message: 25/07/2012, 18h16
  3. [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
  4. Conseils sur Application client/serveur
    Par MICHELBORLAND dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/05/2006, 15h58
  5. [QuickReport] Entete de groupe + détail sur la même page
    Par portu dans le forum Bases de données
    Réponses: 3
    Dernier message: 11/06/2005, 10h15

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