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

  1. #1
    Rédacteur/Modérateur

    [Tutoriel] Créer un journal des sessions utilisateurs
    Bonjour à tous,

    Je vous présente un nouveau tutoriel en complément du précédent (créer un journal d'activité des utilisateurs) :

    Créer un journal des sessions utilisateurs

    Je souhaite dans celui-ci expliquer comment enregistrer les sessions ou périodes d'activité des utilisateurs pour ensuite estimer le total des heures effectuées par mois par l'employé,
    ou encore pour savoir qui est connecté à un moment donné.

    « En informatique et en télécommunication, une session est une période délimitée pendant laquelle un appareil informatique est en communication et réalise des opérations au service d’un client - un usager, un logiciel ou un autre appareil. »

    Dans un précédent article, j’ai essayé d’expliquer comment créer un journal d'activité des utilisateurs.
    L’objectif est maintenant d’apprendre à créer un journal des sessions utilisateurs, dans lequel on enregistre uniquement la période d’activité de l’utilisateur de la base.
    Bonne lecture
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information en abondance, plein de bonnes choses à consulter sans modération

    Comprendre les choses par soi-même c'est bien sympa

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  2. #2
    Expert confirmé
    Bonjour,

    J'ai déjà ça (sur des bases similaires), malheureusement beaucoup d'utilisateurs ne se déconnectent pas en partant
    Une idée pour savoir qui travaille vraiment ?

    En attendant mieux je force la déconnexion le soir grâce à une routine dans la fenêtre cachée :
    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
    Private Sub Form_Timer() 'fermeture automatique à 23h01
    If Not Mode_debug Then On Error GoTo err
    100 If Not Mode_admin Then
    110   If TimeValue(Now()) >= TimeValue("23:00:00") Then
            'comme tout le monde va se faire virer je l'écris une fois pour toutes
    111     cnx.Execute "UPDATE parametres set users=0 WHERE ligne=1", dbFailOnError 
    112     cnx.Execute "UPDATE personnel set nb_log=0 where nb_log>0", dbFailOnError 
            'procédure de fermeture habituelle avec écriture dans le journal
    113     Call Form_menu.quitte_Click 
    114   ElseIf TimeValue(Now()) >= TimeValue("22:55:00") Then
    116     DoCmd.OpenForm "choix", , , , , , "FERMETURE AUTOMATIQUE DANS 5'"
        End If: End If
        Exit Sub
    err: Call message("Erreur " & err.Number & "/" & Erl & " dans ac_log.timer : " & err.description)
    End Sub
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Rédacteur/Modérateur

    Bonjour Nico,

    et merci pour ton commentaire.

    Comme je le mentionne au début le journal des sessions va en complément du journal d'activité, mais entre la théorie et la pratique...

    Pour répondre à ta question, j'imagine de mettre sur le timer du formulaire en arrière plan (F_Session) le code de la faq pour détecter l'inactivité de l'utilisateur et déclencher alors la fermeture de l'application :

    https://access.developpez.com/faq/?page=Forms#inactifUti

    Avec en cas d'inactivité un :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    DoCmd.Quit()


    Pour le moment je n'ai rien de mieux.

    Cdlt,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information en abondance, plein de bonnes choses à consulter sans modération

    Comprendre les choses par soi-même c'est bien sympa

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  4. #4
    Responsable
    Office & Excel

    Merci Denis pour ce nouveau tuto
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Rédacteur/Modérateur

    Citation Envoyé par Pierre Fauconnier Voir le message
    Merci Denis pour ce nouveau tuto
    Pas de quoi

    On croit toujours avoir épuisé tous les sujets, mais au bout du compte on trouve toujours une nouvelle idée à développer
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information en abondance, plein de bonnes choses à consulter sans modération

    Comprendre les choses par soi-même c'est bien sympa

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  6. #6
    Membre éprouvé
    Créer un journal des sessions utilisateurs
    Bonjour à tous !

    @User
    Merci pour ce tuto que je vais me dépêcher de regarder avec soin !

    @nico84
    J'avais effectivement le même souci avec une application traçant l'activité des utilisateurs dont certains trouvaient malin de quitter l'appli par la croix.
    J'ai pu y palier grâce au forum où j'ai trouvé ce module qui permet d'inactiver ou ré-activer cette croix à volonté:

    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
    19
    20
    21
    22
    23
    24
    25
    Option Compare Database
     
    Private Declare Function GetSystemMenu Lib "user32" _
            (ByVal hWnd As Long, ByVal bRevert As Long) As Long
    Private Declare Function RemoveMenu Lib "user32" _
            (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Public Const SC_CLOSE = &HF060&
    Public Const MF_BYCOMMAND = &H0&
     
    Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
     
    Public Sub DesacFermeture()
        Dim hSysMenu As Long
     
        hSysMenu = GetSystemMenu(Application.hWndAccessApp, False)
        RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
     
    End Sub
     
     
    Public Sub ReactiveFermeture()
        Dim hSysMenu As Long
        hSysMenu = GetSystemMenu(Application.hWndAccessApp, True)
        DrawMenuBar hSysMenu
    End Sub


    Si çà peut résoudre ton souci...
    Essayer. Rater. Essayer encore. Rater encore. Rater mieux. (Samuel Beckett)
    Ou encore:
    Quand ça ne tourne pas rond dans le carré de l'hypothénuse , c'est signe qu'il est grand temps de prendre les virages en ligne droite.(Pierre Dac)
    ... Des principes qui m'ont beaucoup aidé en informatique...

  7. #7
    Expert confirmé
    Citation Envoyé par Ric500 Voir le message
    J'ai pu y palier grâce au forum où j'ai trouvé ce module qui permet d'inactiver ou ré-activer cette croix à volonté:
    Merci Ric j'ai déjà désactivé la croix, ce n'est pas suffisant car certains utilisateurs ont pour habitude de fermer avec un clic droit [fermer la fenêtre] sur l'icone dans la barre d'outils
    Ceci dit la procédure form_close de ma fenêtre cachée les voit partir quand même

    Le souci c'est ceux qui partent le soir sans arrêter l'application
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  8. #8
    Rédacteur/Modérateur

    Citation Envoyé par Ric500 Voir le message
    Bonjour à tous !

    @User
    Merci pour ce tuto que je vais me dépêcher de regarder avec soin !

    @nico84
    J'avais effectivement le même souci avec une application traçant l'activité des utilisateurs dont certains trouvaient malin de quitter l'appli par la croix.
    J'ai pu y palier grâce au forum où j'ai trouvé ce module qui permet d'inactiver ou ré-activer cette croix à volonté:

    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
    19
    20
    21
    22
    23
    24
    25
    Option Compare Database
     
    Private Declare Function GetSystemMenu Lib "user32" _
            (ByVal hWnd As Long, ByVal bRevert As Long) As Long
    Private Declare Function RemoveMenu Lib "user32" _
            (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Public Const SC_CLOSE = &HF060&
    Public Const MF_BYCOMMAND = &H0&
     
    Private Declare Function DrawMenuBar Lib "user32" (ByVal hWnd As Long) As Long
     
    Public Sub DesacFermeture()
        Dim hSysMenu As Long
     
        hSysMenu = GetSystemMenu(Application.hWndAccessApp, False)
        RemoveMenu hSysMenu, SC_CLOSE, MF_BYCOMMAND
     
    End Sub
     
     
    Public Sub ReactiveFermeture()
        Dim hSysMenu As Long
        hSysMenu = GetSystemMenu(Application.hWndAccessApp, True)
        DrawMenuBar hSysMenu
    End Sub


    Si çà peut résoudre ton souci...
    Merci Ric pour cette idée intéressante

    C'est en effet une possibilité, dans mon cas j'utilise un formulaire en arrière plan, ouvert durant toute la session avec une procédure sur fermeture, peut-être plus facile à mettre en place pour les débutants, à voir.

    Cordialement,
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information en abondance, plein de bonnes choses à consulter sans modération

    Comprendre les choses par soi-même c'est bien sympa

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  9. #9
    Responsable
    Office & Excel

    Citation Envoyé par User Voir le message
    Dans mon cas j'utilise un formulaire en arrière plan, ouvert durant toute la session avec une procédure sur fermeture, peut-être plus facile à mettre en place pour les débutants, à voir.
    +1. Ca évite les API
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

###raw>template_hook.ano_emploi###