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 :

Inactivité et macro en cours [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 222
    Par défaut Inactivité et macro en cours
    Bonjour,

    Dans un module et dans This Workbook, j'ai mis une macro qui en cas d'inactivité sur mon fichier Excel, ce dernier s'enregistre puis se ferme automatiquement.
    Mon souci est que j'ai une macro qui lorsque je la déclenche dure plus longtemps, (entre 1 et 15 mn) selon certains choix, que le timer (5mn) que j'ai mis en cas d'inactivité.

    Comment faire pour y remédier sans changer la durée du Timer

    Voici mon code :

    ThisWorkbook :
    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
    Private Sub Workbook_Open()
        Call SetTimer
    End Sub
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Call StopTimer
    End Sub
    Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
        Call StopTimer
        Call SetTimer
    End Sub
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, _
      ByVal Target As Excel.Range)
        Call StopTimer
        Call SetTimer
    End Sub
    Dans un module :
    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
    Option Explicit
    Dim DownTime As Date
    Sub SetTimer()
        DownTime = Now + TimeValue("00:05:00")
        Application.OnTime EarliestTime:=DownTime, _
          Procedure:="ShutDown", Schedule:=True
    End Sub
    Sub StopTimer()
        On Error Resume Next
        Application.OnTime EarliestTime:=DownTime, _
          Procedure:="ShutDown", Schedule:=False
        On Error GoTo 0
     End Sub
    Sub ShutDown()
        ThisWorkbook.Save
        Application.Quit
     
    End Sub
    Cordialement

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Bonjour !
    Est-ce que lorsque tu appelles cette fonction qui dure éventuellement plus de 5 min, tu ne pourrais pas désactiver les évènements du classeur?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Application.EnableEvents = False
    'puis ne pas oublier à la fin du code
    Application.EnableEvents = True

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,

    peut etre mettre une variable Boolean qui interdit le blocage. Tu la mettrais a True au debut des macros susceptibles d'etre lancees et a False a la fin.

    Dans le code ShutDown, tu ajoutes la condition qu'aucune macro ne tourne =]
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Membre éprouvé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 222
    Par défaut
    Citation Envoyé par Jean-Philippe André Voir le message
    Salut,

    peut etre mettre une variable Boolean qui interdit le blocage. Tu la mettrais a True au debut des macros susceptibles d'etre lancees et a False a la fin.

    Dans le code ShutDown, tu ajoutes la condition qu'aucune macro ne tourne =]
    Bjr et merci a toi met je ne touche pas ma bille en VBA et ta reponse reste un mystere pour moi.
    Peux tu m'expliquer plus en détail en me mettant des codes ?

    Cordialement

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Bien sur,

    dans le dernier module dans ton exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Dim DownTime As Date
    Public bBlockShutDown As Boolean
    '...
    Sub ShutDown()
        If Not bBlockShutDown Then
            ThisWorkbook.Save
            Application.Quit
         End If
    End Sub
    Dans le ThisWorkbook
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Workbook_Open()
        bBlockShutDown  =False
        Call SetTimer
    End Sub
    Dans les macros pouvant justifier un blocage de la fermeture

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub TaMacroBloquante()
    bBlockShutDown  = True
    'le contenu de ton code
    bBlockShutDown  = False
    End Sub
    En esperant que tu comprends l'idee =]

    Et pour la formation, les cours et tutoriels pour apprendre Excel : https://excel.developpez.com/cours/
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre éprouvé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 222
    Par défaut
    MErci Jean-Philippe,
    maintenant c'est beaucoup lus claire. J'ai tout compris. Je teste tout çà et encore merci

  7. #7
    Membre éprouvé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 222
    Par défaut
    Bjr RIAOLLE et merci pour ta reponse.
    Ou faut il mettre ton code ?
    Dans ThisWorkbook, dans mon module (Timer) ou dans le module de la macro qui peut durer plus longtemps que la duree du timer ?

    Cordialement.

  8. #8
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 703
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 703
    Par défaut
    Citation Envoyé par graphikris Voir le message
    Bjr RIAOLLE et merci pour ta reponse.
    Ou faut il mettre ton code ?
    Dans ThisWorkbook, dans mon module (Timer) ou dans le module de la macro qui peut durer plus longtemps que la duree du timer ?

    Cordialement.

    Le code se place dans la macro qui peut durer plus longtemps que la durée du timer. Il faut mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = False
    au début du code est l'équivalent avec True à la fin du code. Cela empêchera les évènements de se déclencher.

  9. #9
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Dans un module et dans This Workbook, j'ai mis une macro qui en cas d'inactivité sur mon fichier Excel, ce dernier s'enregistre puis se ferme automatiquement.
    J'ai personnellement une question :
    Comment détermines-tu exactement cette "inactivité" ?
    Pour moi, par exemple, l'inactivité ne se résume pas à une non-intervention de l'utilisateur.
    La réponse à cette question est importante.

  10. #10
    Membre éprouvé Avatar de graphikris
    Homme Profil pro
    Pas tres doué
    Inscrit en
    Décembre 2012
    Messages
    1 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Pas tres doué
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 222
    Par défaut
    Bjr Unparia,

    En fait mon fichier est sur un serveur, nous sommes 4 a l'utiliser mais pas en partage. Si l'un de nous ouvre le fichier puis s'absente pour aller en reunion par exemple, nous ne pouvons pas ouvrir le fichier car ie serveur nous dit : ce fichier est en cours d'utilisateur par XXXXX.

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

Discussions similaires

  1. arreter une macro en cours d'execution.
    Par scons dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/06/2014, 10h49
  2. Problème accès macro en cours d'utilisation
    Par Petru16 dans le forum Macro
    Réponses: 4
    Dernier message: 19/03/2010, 08h56
  3. Réponses: 1
    Dernier message: 12/02/2009, 11h55
  4. A quel classeur appartient la macro en cours d'exécution ?
    Par Oliv- dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/07/2008, 12h59
  5. [VBA-E]Nom du classeur contenant la macro en cours
    Par repié dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/02/2006, 10h24

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