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 > Isoler des utilisateurs et les compter


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut VBA > Isoler des utilisateurs et les compter
    Bonjour,

    Mon problème est très simple:

    Je dois en VBA, faire un programme pour automatiser la tache suivante;

    Dans un tableau Excel je me retrouve avec des utilisateurs (dans la colonne G), des documents lus (dans la colonne C) et le temps passé par document (colonne H)

    J'ai pleins de lignes, parce que pleins de documents ouverts, par plusieurs utilisateurs.

    Evidement, tout est constament variable, y compris le nombre des utilisateurs (donc je ne peux pas écrire son nom dans le code)

    Mon but:

    Récuperer dans un onglet:

    - le nombre de documents lu par utilisateurs, et le temps total passé par cet utilisateur
    - les 10 documents les plus vu, en temps et en nombre.

    Exemple:

    Utilsateur David
    A lu 25 documents et a passé 25 minutes sur le système

    Utilisateur Franck
    A lu 10 document, et a passé 5 minutes sur le système

    etc....

    Documents les plus regardés:
    1 - Britney spears nue (5h25:30)
    2 - Table a manger (3h55:50)
    3 - moissonneuse batteuse
    4 - Poule
    5 - Etc
    6 - Etc
    7 - Etc
    8 - Etc
    9 - Etc
    10 - Etc




    Si une âme charitable pouvais me donner un coup de main

  2. #2
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Citation Envoyé par Mechsangoku Voir le message
    Si une âme charitable pouvais me donner un coup de main
    Te donner un coup de main oui, faire ton boulot non.

    Donc commence ton code, pose des question précise et on t'aidera

    Une piste pour commencer les grande étape, essaye de les travailler une par une
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    récupérer la liste des utilisateur 
    Boucler sur les utilisateur
       parcourir ta liste si la colonne utilisateur corespond a l'utilisateur en cours
          regarde le document utilisé 
          si déja consulté ajoutrer le temps 
         sinon ajouter a la liste des document visité et stocker le temps
       fin de la boucle parcour de la liste
    utilisateur suivant
    Après j'ignore ce que tu sais faire. Est ce que tu sais parcourir une colonne dela première a la dernière ligne? Est ce que tu sais créer une variable tableau ou une collection pour lister les utilisateur? Est ce que tu sais créer un tableau pour lister les document consulté par l'utilisateur et et socker les durée?....

    Essaye de réfléchir au différente étape commence ton code étape par étape et quand tu bloque sur une étape viens nous voir

  3. #3
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut
    Alors mon niveau : Null

    Ce que j'ai fait juste la:

    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
    Sub Suppression()
    Worksheets("Calculs").Activate
        Cells.Select
        Selection.Delete Shift:=xlUp
     
    Worksheets("Rapport I").Activate
    Dim i%
    For i = 256 To 1 Step -1
    If Cells(i, 9) = "ADMIN" Then Rows(i).Delete
    Next
     
    Columns("G:G").Select
        Application.CutCopyMode = False
        Selection.Copy
        Sheets("Calculs").Select
        Range("A1").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        Range("A1:A16").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
        Range("A7:A29").Select
        Selection.Copy
        Sheets("Exécutables").Select
        Range("B13").Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
     
     
    End Sub

    C'est le seul moyen que j'ai trouvé pour isoler les utilisateurs, et en faire une liste (limité a 10 utilisateurs je crois)
    Après ca devrait être plus simple en fait

    Mais je ne sais rien faire de ce que tu me demande :/

  4. #4
    Membre Expert Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Par défaut
    Un conseil
    N'utilise pas l'instruction select.
    AAAAA.select
    selection.BBBB
    devient
    AAAA.BBBB
    ton code donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Application.CutCopyMode = False
        Columns("G:G").Copy
        Sheets("Calculs").Range("A1").Paste
        Application.CutCopyMode = False
        Range("A1:A16").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
        Range("A7:A29")..Copy
        Sheets("Exécutables").Range("B13").Paste
        Application.CutCopyMode = False
    Il ne te viendrais pas a l'esprit de dire:
    va devant la table
    prend la tasse sur lobjet devant toi
    lave lobjet dans ta main
    tu le dit en nue fois
    lave la tasse qui est sur la table

    donc ne dit pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets("Calculs").Select  'prend la feuille Calculs
        Range("A1").Select  'prend la celluleA1  de la feuille active
        ActiveSheet.Paste 'copie sur le dernier truc que tu as pris
    Dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Calculs").Range("A1").Paste
    de droite a gauche
    colle de la cellule A1 de la feuille calculs

    Bon une fois que cela est fais
    tu va devoir je pense t'interesser au variable tableau
    lit ce tuto et essaye de faire quelque exo
    http://silkyroad.developpez.com/vba/tableaux/
    (tu aura besoin d'utiliser redim preserve entre autre chose)

    pour avoir la liste des utilisateur il faut utiliser une colection ca je te le fais
    (je commence tout juste a me débrouiller avec j'ai besoin d'entrainement )

    Voici comment récupérer la liste des utilisateur
    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
    Dim Utilisateurs As New Collection
    Dim i As Long
    Dim DerniereLigne As Long
    Dim liste As String
     DerniereLigne = Range("A65536").End(xlUp).Row 'dernière ligne de la colonne A
     
    For i = 2 To DerniereLigne 'pour i allant de 2 à la dernière ligne
    On Error Resume Next 'desactive les erreur
    Utilisateurs.Add Cells(i, 1), CStr(Cells(i, 1)) ' on ajoute la cellule ligne i colonne 1 a la liste utilisateur
    Next i
    On Error GoTo 0 'reactive la gestion d'erreur
     
    MsgBox "Il y a " & Utilisateurs.Count & " le premier trouvé est " & Utilisateurs.Item(1) & " le dernier  étant " & Utilisateurs.Item(Utilisateurs.Count)
     
     
    For i = 1 To Utilisateurs.Count
    liste = liste & Utilisateurs.Item(i) & Chr(13)
    Next i
    MsgBox "Voici tous les utilisateur" & Chr(13) & liste
    Par contre si tu débute vraiment de 0 ne commence pas ton programme lit des tutos fait des exemple essaye de suivre le discutions du forum pour voir différent exemple de code
    Et une fois que tu comprend un peu ce qui se passe là tu peux attaquer vraiment

  5. #5
    Membre habitué
    Inscrit en
    Juillet 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 10
    Par défaut
    Merci pour ton aide

    J'imagine que j'ai encore beaucoup à apprendre, et si lire le code est une chose, l'écrire en est une autre.

    je vais voir un peu coté tutos, mais c'est pas simple de toujours trouver ce que l'on veux.

    Merci encore

  6. #6
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    ça me paraît assez compliqué de vouloir faire ça en VBA pur.
    Vu qu'il y a pas mal de données et que leur structure ressemble à une table, pourquoi ne pas passer par une requête SQL que l'on peut facilement implémenter par DAO ?

Discussions similaires

  1. Ouvrir des fenêtres et les compter
    Par Wakko2k dans le forum Windows Presentation Foundation
    Réponses: 1
    Dernier message: 13/02/2009, 20h15
  2. [VBA-E] Copier des cellules et les coller ?
    Par Trooper2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/01/2007, 17h29
  3. [VBA-E]Insérer des autotext et les modifier
    Par noordman dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/04/2006, 14h15

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