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 :

[VBA-E] surveillance avec compteur Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de melodyyy
    Inscrit en
    Octobre 2006
    Messages
    401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 401
    Par défaut [VBA-E] surveillance avec compteur Excel
    Bonjour,

    Je souhaiterais savoir si il est possible de surveiller un fichier excel avec un compteur. C'est à dire qu'a chaque ouverture du fichie un compteur se déclenche et à chaque fermeture il s'arrete.

    Est ce possible ?

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 393
    Par défaut
    A travers VBA? A travers un programme externe?
    Quel type de compteur? un compteur temps je suppose, puisque tu veux controler l'ouverture et la fermeture? Ou doit etre enregistré le compteur? dans une cellule du classeur?
    Si l'utilisateur n'active pas les macros, ca va etre compliqué de le faire avec VBA.
    Sinon, en supposant que le compteur est enregistré dans une propriété du document nommée "compteur",et que les macros sont activées par l'utilisateur, dans le module 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Private compte
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Call Verif_Compteur
        ' incrémente le compteur avec la différence en seconde par rapport à l'ouverture du fichier
        ThisWorkbook.CustomDocumentProperties("compteur") = ThisWorkbook.CustomDocumentProperties("compteur") + DateDiff("s", compte, Now)
    End Sub
     
    Private Sub Workbook_Open()
        Call Verif_Compteur
        compte = Now ' initialise le compte
    End Sub
     
    Sub Verif_Compteur()
      ' Vérifie si la propriété du document "compteur" existe sinon la crée à 0
        Dim p As DocumentProperty
        bool = True
        For Each p In ThisWorkbook.CustomDocumentProperties
            If p.Name = "compteur" Then
                bool = False
            End If
        Next
        If bool Then
            Set p = ThisWorkbook.CustomDocumentProperties.Add("compteur", False, msoPropertyTypeFloat, 0)
        End If
        Set p = Nothing
    End Sub
    Rem. C'est encore à améliorer, car si l'utilisateur annule la fermeture du fichier, ca incrémente quand même...
    Il serait peut-etre plus simple de le mettre dans une cellule du classeur, car la taille de la propriété est limitée...
    M'enfin bon, le code est facile à modifier pour enregistrer le compteur dans une cellule

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Bonsoir


    ci dessous compteur de visite (usf de petite taille baptisé ici "visites" à construire avec un textbox nommé "compteur") a placer dans thisworkbook Par Lecture/écriture dans HKey_current_user/software / VB and VBA Program settings

    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
    Option Explicit
     
    Private Sub Workbook_Open()
    Dim visit
    'A partir d'une démo sur <a href="http://ericrenaud.free.fr/" target="_blank">http://ericrenaud.free.fr/</a>
     
         ' Lit la valeur dans la base de registre
         visit = GetSetting(appname:="demo", section:="visiteurs", key:="Nombre")
     
         ' Si aucune valeur n'est présente dans la base de registre ...
         If visit = "" Then
              'on affecte la valeur 1 à la variable visit (première visite)
              visit = 1
          Else
            ' sinon, on incrémente le Nbre de visites
        visit = visit + 1
        End If
         ' Ecrit la nouvelle valeur visit dans la base de registre
         SaveSetting appname:="demo", section:="visiteurs", key:="Nombre", setting:=visit
     
        ' indique le nombre de visites dans userform
        With visites
        .compteur.Caption = visit
        .Show
        End With
     
    End Sub
    Et pour remettre à Zéro (dans un module standard)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub EffaceRegistre()
     'auteur:<a href="http://ericrenaud.free.fr/" target="_blank">http://ericrenaud.free.fr/</a>
         ' Effacement de la clé dans la base de registre
         On Error Resume Next
         DeleteSetting "demo"
    End Sub

Discussions similaires

  1. [Excel/VBA] Requete SQL avec clause sur une suite de Cellule
    Par Myogtha dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/02/2007, 17h36
  2. [VBA-E] Probleme avec l'ouverture d'un fichier Excel
    Par mennix dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 31/12/2006, 11h11
  3. Accélerer un compteur Excel/VBA
    Par PedroBD dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 12/07/2006, 09h39
  4. Problème avec open() [Excel VBA]
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 28/11/2005, 16h21
  5. [Vba] Lire BDD avec Excel
    Par Emcy dans le forum Access
    Réponses: 12
    Dernier message: 09/11/2005, 11h09

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