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 :

Repérer les actions des utilisateurs


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 237
    Points : 120
    Points
    120
    Par défaut Repérer les actions des utilisateurs
    Bonjour,

    Ma question est un peu vague mais je ne sais pas trop où chercher.
    J'aimerai repérer et compter les actions des utilisateurs par exemple suppression de ligne, mise en forme de cellule, sauvegarde,...

    Avez-vous une idée ou une piste vers où orienter mes recherches?

    Merci,
    Jean

  2. #2
    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 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 629
    Points : 34 335
    Points
    34 335
    Par défaut
    Salut,

    pour gérer ce genre de chose, il faudra passer par les évènements liés au classeur et aux feuilles.

    De quel type d'observatoire sera-t-il question ? que faire des informations en question ?
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 237
    Points : 120
    Points
    120
    Par défaut
    Salut jpcheck,

    Le but est de conserver dans un fichier texte toute les actions effectuées par un utilisateur à la manière de ce qui est fait par Excel pour gérer le retour en arrière (ctrl z).
    Par la suite je vais analyser ce fichier texte pour savoir ce que font les utilisateurs et pouvoir mieux les guider dans leur travail.

    Jean

  4. #4
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Bonsoir ...,

    tu devrais choisir les évènements que tu voudras enregistrer.

    Au niveau classeur: dans le code module ThisWorkBook tu peux gérer pas mal d'évènements tels que:

    Workbook_SheetChange
    Workbook_SheetSelectionChange
    Workbook_WindowResize
    ....
    pas mal d'autres. C'est toi qui décide de ce que tu veux intercepter.

    Voici un début à partir duquel tu pourras t'inspirer.

    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
    28
    29
    30
    31
    32
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Dim w As Workbook
     
        Sheets("Journal").Copy 'copie la feuille dans un nouvel classeur
        Set w = ActiveWorkbook
     
        'enregistre le classeur en fichier texte en spécifiant le chemin
        w.SaveAs Filename:="C:\Users\Moi\Documents\Mon dossier\Classeur6.txt", _
            FileFormat:=xlText
        w.Close True 'ferme et sauve
     
    End Sub
     
     
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
        Static ligne As Long
        Dim tx
     
        ligne = ligne + 1
        Application.EnableEvents = False
        With Worksheets("Journal")
            .Cells(ligne, 1) = "Saisie: " & Target.Formula & " dans: " & Sh.Name & "!" & Target.Address & " à: " & Now
     
            'ou si tu preferes dispatcher sur différentes colonnes les lignes de code suivantes
            .Cells(ligne, 2) = Target.Formula
            .Cells(ligne, 3) = Sh.Name & "!" & Target.Address
            .Cells(ligne, 4) = Now
        End With
     
        Application.EnableEvents = True
    End Sub
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 237
    Points : 120
    Points
    120
    Par défaut
    Salut Ousmane,

    Merci de t'intéresser à mon problème.
    J'aurais voulu éviter cette solution. Il dois bien y avoir une autre possibilité. Comment fait Excel pour enregistrer toutes les actions pour permettre aux utilisateurs de faire crtl+z?

    Jean

  6. #6
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Que veux tu dire par "...éviter cette solution." ?
    S'il s'agit de répertorier les actions des utilisateurs sans passer par le gestionnaire c'est d'ores et déjà peine perdue.

    Comment fait Excel pour enregistrer toutes les actions pour permettre aux utilisateurs de faire crtl+z?
    Excel utilise aussi un gestionnaire. Le code n'est pas disponible.
    Si tu es doué tu peux t'en inspirer pour faire quelque chose de semblable.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 237
    Points : 120
    Points
    120
    Par défaut
    Je veux dire ajouter du code à tous les évènements possibles et imaginables d'Excel. C'est long à coder, mais bon si c'est le seul moyen je vais m'y mettre.

    Qu'entends-tu par gestionnaire?

  8. #8
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    je fais allusion à la gestion d'évènement.

    Tu n'es pas obligé d'intercepter tous les évènements pour ce que tu veux.
    En fait deux doivent suffire.
    Si j'ai le temps à mon prochain passage, j'essayerais quelque chose sur lequel tu pourras décoller sans trop de difficultés.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 237
    Points : 120
    Points
    120
    Par défaut
    Super, merci Ousmane!

  10. #10
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Bonjour Jean,
    je n'ai malheureusement pas eu le temps d'aborder ton problème hier.
    Je souhaiterais avant d'agir d'avoir un peu plus d'éclaircissements.
    2 de tes posts prêtent à confusion.
    Le but est de conserver dans un fichier texte toute les actions effectuées par un utilisateur à la manière de ce qui est fait par Excel pour gérer le retour en arrière (ctrl z).
    Par la suite je vais analyser ce fichier texte pour savoir ce que font les utilisateurs et pouvoir mieux les guider dans leur travail.
    Je veux dire ajouter du code à tous les évènements possibles et imaginables d'Excel...
    Pourrais tu répertorier concrètement la liste des actions utiles à analyser.
    J'ai l'impression qu'il ne s'agit pas uniquement de changements intervenus sur une feuille.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    237
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2004
    Messages : 237
    Points : 120
    Points
    120
    Par défaut
    Bonjour Ousmane,

    J'aimerais savoir si les utilisateurs:
    - suppriment/ajoutent des lignes, des colonnes, des cellules
    - modifient la police, la taille de caractères, la couleur, gras, italiques, souligné,...
    - modifient la taille des lignes et des colonnes
    - utilisent des formats de nombres, dates, personnalisés
    - utilisent le quadrillage
    - saisissent des formules
    - impriment
    - sauvegardent
    -...

    On sauvegarge la liste de leurs actions dans un fichier texte et ensuite je peux analyser ce fichier et par exemple, créer une macro pour automatiser des tâches répétitives.
    Tu vois où je veux en venir?

    Jean

  12. #12
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    c'est bien compris.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  13. #13
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    Bonsoir jpclabaux,

    Comme je l'avais indiqué, il te faudrait juste deux évènements au niveau classeur: Open et BeforeClose.

    Ton programme m'a tout l'air d'une action d'espionnage de l'utilisateur à son insu.
    Ne serait-il pas préférable de demander son consentement? 80
    Avant une mise à jour de sécurité MS par rapport au code que je te donnes (à mon avis c'est une faille de sécurité sur la confidentialité.)
    Chacun ses points de vue.
    , j'ai pris soin de ne pas limiter l’exécution à l'insu de l'utilisateur.

    Allons-y!
    Crée un UserForm. Places-y 1 Label et 2 CommandButton.
    Une petite boîte de dialogue que tu mettras en forme à ta convenance.
    Dans le caption du label en mode Design entre ce texte:
    "Le programme souhaiterait réaliser une statistique d'utilisation avec votre permission, en vue d'amélioration.
    les captions des Boutons doivent être Oui et Non
    Dans le module de code de l'userform copie colle le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub CommandButton1_Click()
    	SendKeys "%cr"
    	SendKeys "Statistique"
    	SendKeys "~"
    	End
    End Sub
     
    Private Sub CommandButton2_Click()
    	Unload UserForm1
    End Sub
    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
     
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
        Dim  fich
    '
    '    'composer le chemin vers le disc en composant le nom associé à un formatage de la date en supprimant les caractères reservés du système
     
        fich = "C:\Users\Moi\Documents\Journal utilisation\Journal Stat " & Replace(Replace(Now, ":", ""), "/", "_") & ".txt"
        ThisWorkbook.VBProject.VBComponents("Module1").Export fich
        ThisWorkbook.VBProject.VBComponents.Remove ThisWorkbook.VBProject.VBComponents.("Module1") 'retire le module ayant servi d'enregistrement.
     
    End Sub

    Note: Il se pourrait qu'il y ait des erreurs syntaxiques. Suite à un problème je n'ai pas la possibilité de tester certaines parties des codes ci-dessus.

    Edit:
    j'ai oublié de donner les explications utiles.
    C'est si banal.
    Quand l'utilisateur appui sur Oui, l'enregistreur de macros est exécuté.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

  14. #14
    Membre chevronné
    Avatar de NVCfrm
    Homme Profil pro
    Administrateur Système/Réseaux - Developpeur - Consultant
    Inscrit en
    Décembre 2012
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Administrateur Système/Réseaux - Developpeur - Consultant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2012
    Messages : 1 036
    Points : 1 917
    Points
    1 917
    Billets dans le blog
    5
    Par défaut
    re
    un détail encore.
    Le Userform doit être non modal.
    En mode design met la propriété ShowModal à False.
    Ousmane


    Quand on tombe dans l'eau, la pluie ne fait plus peur.

Discussions similaires

  1. Tracer les actions des utilisateurs
    Par Housssss dans le forum Interfaces Graphiques en Java
    Réponses: 5
    Dernier message: 06/02/2007, 12h21
  2. Réponses: 3
    Dernier message: 13/04/2006, 13h08
  3. Agir à distance sur les processus des utilisateurs
    Par kuranes dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 11/10/2005, 10h18
  4. Gérer les droits des utilisateurs
    Par rsc dans le forum Langage
    Réponses: 6
    Dernier message: 22/08/2005, 20h57
  5. Pouvoir gérer les actions des boutons dans une classe
    Par Cyborg289 dans le forum Composants
    Réponses: 2
    Dernier message: 08/07/2005, 12h08

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