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 :

[XL-2007] Fermeture automatique Userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Points : 48
    Points
    48
    Par défaut [XL-2007] Fermeture automatique Userform
    Bonjour,

    Mon problème est le suivant, j'ai récupérer sur le net qui me permet d'éteindre mon Userform au bout de 15 min. le but était de voir si la personne utilisée ou non le logiciel pour pouvoir l'éteindre.

    Voici le code :
    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 arretProg()
        'Affichage du temps restant avant fermeture
        userfCourant(0).Caption = "Fermeture dans : " & cmptArret & " secondes"
             If cmptArret = 0 Then
                'Sauvegarde du classeur
                ActiveWorkbook.Save
                'Puis fermeture du fichier
                ActiveWorkbook.Close
                Exit Sub
            End If
        'pagination du temps en seconde et lancement de la procèdure
        Application.OnTime temps + TimeValue("00:00:01"), procedure:="arretProg"
        'On décrémente le compteur
        cmptArret = cmptArret - 1
    End Sub
    La macro fonctionne, cependant quand je change de userform, donc userfCourant(0) devient le userform actif et on remet cmptArret à 900.

    Voici le code type au sein de l'ensemble de mes Userforms :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    cmptArret = 900
     Set userfCourant(0) = Identification
    'lancement de la procdure de vérification d'inactivité
        arretProg
    Et bien le programme au lieu de descendre les secondes 1 par une 1. Il me les fait descendre 2 par 2 ou 3 par 3.

    Je ne comprend vraiment pas le problème. Du coup au lieu d'avoir 900 secondes soit 15 minutes. il se ferme au bout de même pas 3 minutes.

    Merci de m'aider.

    Cordialement,
    Fyejumpy

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    que représente la variable temps et quel est sa valeur?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Application.OnTime Now + TimeValue("00:00:01"), procedure:="arretProg"

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Points : 48
    Points
    48
    Par défaut
    Et bien la variable temps représente l'heure actuelle je suppose. Et chaque seconde on rappel la fonction arretProg.

    Cependant j'ai essayer de créer une variable "temps" de type date. Je lui affecte le temps de la première ouverture du fichier au lieu de la rafraîchir à chaque. Cependant le temps ne défile plus.

    Code dans le userform:
    Code dans la fonction arretprog:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OnTime temps + TimeValue("00:00:01"), procedure:="arretProg"
    Cordialement,

    Fyejumpy

  4. #4
    Invité
    Invité(e)
    Par défaut
    utilises Application.OnTime Now + TimeValue("00:00:01"), procedure:="arretProg"

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Points : 48
    Points
    48
    Par défaut
    Au départ je l'utilisé et on rencontre le même soucis. J'ai juste changer avec la variable temps. Cependant, on arrive au problème que le temps ne défile pas.

    En clair :
    Avec Now : problème d'incrémentation au niveau des secondes lors d'un changement de userForms.
    Avec temps : le temps défile d'une seconde puis s'arrête.


    Cordialement,
    Fyejumpy

  6. #6
    Invité
    Invité(e)
    Par défaut
    Temp n'est pas utile!
    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
    Sub arretProg()
        'Affichage du temps restant avant fermeture
        userfCourant(0).Caption = "Fermeture dans : " & cmptArret & " secondes"
             If cmptArret = 0 Then
                'Sauvegarde du classeur
                ActiveWorkbook.Save
                'Puis fermeture du fichier
                ActiveWorkbook.Close
                Exit Sub
             else
                    'pagination du temps en seconde et lancement de la procèdure
                    Application.OnTime now + TimeValue("00:00:01"), procedure:="arretProg"
            End If
     
        'On décrémente le compteur
        cmptArret = cmptArret - 1
    End Sub
    accessoirement le probème vient de cmptArret =900 mais pas de arretProg

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Points : 48
    Points
    48
    Par défaut
    J'ai tester ta version et même soucis quand je change de Userform, mes secondes passe de 1 en 1 à 2 en 2. Si je rechange encore je passe de 3 en 3 et ainsi de suite :/ je comprend pas comment régler ce soucis ..

    Cordialement,

    Fyejumpy

  8. #8
    Invité
    Invité(e)
    Par défaut
    Place ton fichier!

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Points : 48
    Points
    48
    Par défaut
    Le truc c'est que je rappel arretprog à chaque ouverture d'un nouvel userform. Cependant, entre temps "Now" change et je pense que le décalage vient de la du coup non ? Ou peut être le "+ TimeValue" qui a chaque ouverture fais + 1s ?

    Voilà j'ai fais un fichier d'exemple tout bête.

    merci encore de ton aide,

    Cordialement,
    Fyejumpy
    Fichiers attachés Fichiers attachés

  10. #10
    Invité
    Invité(e)
    Par défaut
    la routine arretProg se lance automatiquement, pas besoin de la lancer plusieurs fois!
    Code Module arret : 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
    Option Explicit
    Option Private Module
    '//Partie Macro
    'Durée
    Public cmptArret As Integer
    Public Start As Boolean
    Public userfCourant As UserForm
    
    '//Partie macros pour fermeture automatique
    
    Sub arretProg()
        'Affichage du temps restant avant fermeture
        userfCourant.Caption = "Fermeture dans : " & cmptArret & " secondes"
             If cmptArret = 0 Then
                'Sauvegarde du classeur
                ActiveWorkbook.Save
                'Puis fermeture du fichier
                ActiveWorkbook.Close
                Exit Sub
             Else
                    'pagination du temps en seconde et lancement de la procèdure
                    Application.OnTime Now + TimeValue("00:00:01"), procedure:="arretProg"
                     cmptArret = cmptArret - 1
            End If
        'On décrémente le compteur
       
    End Sub
    Code UserForm1 : 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
    Private Sub Quit_Click()
        Application.Quit
    End Sub
     
    Private Sub USF2_Click()
        Unload Me
        UserForm2.Show
    End Sub
    Private Sub UserForm_Initialize()
        'On met le compteur sur 3 min pour le menu principal
        cmptArret = 120
        'on prend le bon usf
        Set userfCourant = Me
     If Start = False Then arretProg: Start = True
        'On lance arretProg
    End Sub

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2014
    Messages : 45
    Points : 48
    Points
    48
    Par défaut
    Parfait ! c'est pile le résultat que j'attendais !
    Merci beaucoup !


    Cordialement,
    Fyejumpy

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

Discussions similaires

  1. [XL-2007] Fermeture d'UserForm
    Par MidoCESI dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2014, 15h37
  2. [XL-2007] Fermeture automatique
    Par s.gallauziaux dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 10/11/2009, 10h22
  3. fermeture automatique d'un userform
    Par dodo28 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 28/03/2009, 01h08
  4. fermeture automatique pc a distance
    Par Chromatic dans le forum Windows XP
    Réponses: 10
    Dernier message: 15/05/2006, 19h04
  5. Menu déroulant à fermeture automatique
    Par michelsylv dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/10/2005, 16h35

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