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 :

probleme de procedure bloqué par un timer


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Par défaut probleme de procedure bloqué par un timer
    Bonjour
    Afin de fermer un classeur au bout d'un certain temps d'inactivité, j'ai declaré une procedure au niveau Workbook du type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Dim PauseTime, Start
        PauseTime = 60  ' Définit la durée.
        Start = Timer    ' Définit l'heure de début.
        Do While Timer < Start + PauseTime
            DoEvents    ' Donne le contrôle à d'autres processus.
        Loop
        ThisWorkbook.Save
       ThisWorkbook.Close
    End Sub
    Le probleme est que cela me bloque une procedure au niveau worsheet qui me permettait de declencher une procedure par un double clic sur une feuille du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Instruction 
    End Sub
    Merci d'avance pour une explication de mon erreur.

  2. #2
    Membre Expert

    Homme Profil pro
    Spécialiste progiciel
    Inscrit en
    Février 2010
    Messages
    1 747
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Loire (Auvergne)

    Informations professionnelles :
    Activité : Spécialiste progiciel
    Secteur : Service public

    Informations forums :
    Inscription : Février 2010
    Messages : 1 747
    Par défaut
    Bonjour,

    Doevents donne le contrôle à d'autres processus mais pas aux évènements Excel, il me semble.

    Il faudrait recréer un évènement public à initialiser et remettre à Nothing.

    Quelque chose de ce genre à adapter peut-être
    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
     
    Public WithEvents monevenement As Application
     
    Private Sub monevenement_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
    Instruction
    End Sub
     
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Dim PauseTime, Start
    Set monevenement= Application
        PauseTime = 60  ' Définit la durée.
        Start = Timer    ' Définit l'heure de début.
        Do While Timer < Start + PauseTime
            DoEvents    ' Donne le contrôle à d'autres processus.
        Loop
        ThisWorkbook.Save
       ThisWorkbook.Close
       Set monevenement= Nothing
    End Sub

  3. #3
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Je pense que ton idée de boucle sur le Timer n'est pas bonne. Il serait préférable d'utiliser OnTime.

    dans un module standard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub subQuitte
    ThisWorkbook.Close True
    End sub

    dans le module ThisWOrkbook :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
    Application.OnTime Now + TimeValue("00:05:00"), "subQuitte"
    End sub
    A chaque nouvelle sélection, l'exécution de subQuitte est planifiée dans 5 mn. EN attendant, Excel peut travailler normalement.
    Si une nouvelle sélection survient, on passe de nouveau dans la procédure de planification. Comme Excel ne peut gérer qu'une planif, la première est perdue. C'est reparti pour 5 mn.

    Cordialement,

    PGZ

  4. #4
    Futur Membre du Club
    Inscrit en
    Janvier 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 4
    Par défaut
    merci pour les réponses
    La solutions de carden752 semble fonctionner.

    Serait il possible d'avoir quelques explications sur l'instruction "withevents" dans la declaration de "monevenement", je ne la trouve pas dans l'aide VBA.

    Je fais des essais avec ces nouvelles procédures, et si je ne rencontre pas d'autres problemes je passe à l"état résolu ce post.

    Merci encore pour ces réponses aussi rapide.

Discussions similaires

  1. Reinstall directx 11 bloque par un probleme de droits
    Par bigbernie dans le forum Windows 7
    Réponses: 3
    Dernier message: 08/04/2015, 18h01
  2. [Timer] timer bloqué par une boucle for?
    Par Jidefix dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 18/09/2006, 17h12
  3. Probleme d'enregistrement bloqué par utlisateur !
    Par FilipeVV dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/03/2006, 14h32
  4. Probleme Oracle + Procedure Stockee
    Par ForumWWW dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/07/2004, 16h00
  5. probleme avec une division par zéro
    Par jcharleszoxi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/03/2003, 18h14

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