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 :

Problème avec Application.ontime [XL-2007]


Sujet :

Macros et VBA Excel

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

    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 90
    Points
    90
    Par défaut Problème avec Application.ontime
    Bonsoir, j'ai un souci avec les évènements Application.Ontime
    c'est à dire que quand je programme une tâche à une heure donnée, si je ferme le classeur l'évènement se produit quand même et j'aimerais que cela ne soit pas le cas.

    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
     
    Option Explicit
     
    Dim DansXSecondes As String
     
    Sub VerifMessage()
       DansXSecondes = TimeSerial(Hour(Time), Minute(Time), Second(Time) + Feuil2.Range("CY4").Value)
     Feuil2.Range("CY6").Value = DansXSecondes
       Application.OnTime DansXSecondes, "CompteLignes"
    End Sub
     
    Sub StopMessage()
     DansXSecondes = Feuil2.Range("C64").Value
     On Error Resume Next
     Application.OnTime DansXSecondes, "CompteLignes", , False
    End Sub
    Merci de votre aide

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 99
    Points : 141
    Points
    141
    Par défaut
    bonjour Xce ss le forum
    c'est quoi ton affaire, comment la macro peut se dérouler avec un classeur fermé?? si ton classeur est fermé ta macro ne s'exécutera pas.
    Explique nous voir un peu cette sorcellerie??
    a+
    papou

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Il te suffit de déprogrammer l’événement à la fermeture du classeur:

    Dans Thisworkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     DansXSecondes = Feuil2.Range("C64").Value
     On Error Resume Next
     Application.OnTime DansXSecondes, "CompteLignes", , False
    End Sub

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 345
    Points : 539
    Points
    539
    Par défaut
    Bonjour,

    Dans ThisWorkbook

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        StopMessage
    End Sub
    Cordialement

    ctac

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 90
    Points
    90
    Par défaut
    bonjour, malheureusement j'ai déjà essayé ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        call StopMessage
    End Sub
    cela ne change rien, le classeur se réouvre après le temps spécifié du ontime si d'autres classeurs sont ouverts dans cette session excel

    sachant que dans ce module j'ai une fonction aussi mais j'ai pas toutes les données là, je mettrais ça une fois au taff ce soir car c'est pour le boulot

  6. #6
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Je pense que le problème vient de la cellule qui garde la valeur (erreur de frappe?)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Feuil2.Range("CY6").Value = DansXSecondes
     DansXSecondes = Feuil2.Range("C64").Value
    Pour pouvoir désactiver la programmation DansXSecondes doit être identique donc essaye de corriger et mettre la même référence de cellule sauf si il y a une bonne raison pour ça... mais dans ce cas C64 doit être égal à CY6

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 90
    Points
    90
    Par défaut
    c'est une erreur de frappe de ma part , c'est la même cellule

    j'ai même essayé avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public DansXsecondes as variant
    Voici mon module standard modifié mais toujours même problème :

    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
    Option Explicit
     
    Dim TxtLignes()
    Public cRunWhen As Variant
    Public Const cRunIntervalSeconds = 60
    Public Const cRunWhat = "CompteLignes"
     
    Public Sub VerifMessage()
       'Définit l 'intervalle avec l'heure actuelle + x secondes
       cRunWhen = TimeValue(Now + TimeSerial(0, 0, cRunIntervalSeconds))
       Application.OnTime cRunWhen, cRunWhat
    End Sub
     
    Public Sub StopMessage()
     On Error Resume Next
     Application.OnTime cRunWhen, cRunWhat, , False
    End Sub
     
    Public Function CompteLigne(Fichier As Integer) As Integer
       Dim texte As String
       Dim NbLignes As Integer
       Dim i As Integer
       While Not EOF(Fichier)
          Line Input #Fichier, texte
          ReDim Preserve TxtLignes(i)
          TxtLignes(i) = texte
          i = i + 1
          NbLignes = NbLignes + 1
       Wend
       CompteLigne = NbLignes
    End Function
     
    Public Sub CompteLignes()
       Dim Fichier As String
       Fichier = Feuil2.Range("CY2").Value
       Dim Lignes As Integer
       Dim h As Integer
       h = FreeFile
       Open Fichier For Input As #h
      'compte le nombre de lignes dans le fichier
       Lignes = CompteLigne(h)
      'ferme le fichier
       Close #h
       If Lignes <> 0 Then
        Message.Show 0
       End If
       Call VerifMessage
    End Sub
    Dans Thisworkbook

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
     ActiveWorkbook.Saved = True
     Application.DisplayAlerts = False
     If Application.Workbooks.Count = 1 Then
      Application.Quit
     Else
      ThisWorkbook.Close
     End If
     Call StopMessage
    End Sub
    Merci de votre aide

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 90
    Points
    90
    Par défaut
    re, merci de vos lecture, j'ai trouvé la réponse

    Kenavo

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

Discussions similaires

  1. [XL-2002] Problème avec Application.OnTime Now() + TimeValue
    Par coklin dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 21/08/2009, 14h15
  2. Problème avec Application.OnTime
    Par Uopip dans le forum VBA Outlook
    Réponses: 14
    Dernier message: 09/07/2007, 15h14
  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. [VBA-E] Problème avec Application.StatusBar
    Par laloune dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/03/2006, 16h44
  5. problème avec Application->ProcessMessages()
    Par petitours dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/08/2005, 10h27

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