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 :

Détection automatique de l'utilisateur connecté


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Détection automatique de l'utilisateur connecté
    Bonjour,

    Mon problème est le suivant: je développe un tableau de bord Ressources Humaines destiné aux chefs d'atelier. Le but de ce dernier est de fournir aux chefs d'atelier les indicateurs (les visites médicales, les entretiens...) sur leur périmètre.

    Par ailleurs, les chefs d'atelier vont juste consulter les indicateurs. y a aussi un expert qui se charge de modifier, supprimer et mettre à jour les indicateurs.

    A l'ouverture de cette application, je veux que celle ci détecte automatiquement l'utilisateur connecté, est ce un chef d'atelier ou bien un expert ? pour définir les droits de chacun d'eux (pour les chefs d'atelier: consultation et pour les experts: consultation, modification et suppression d'indicateurs).

    En gros, cette application doit détecter l'adresse IPN de l'utilisateur connecté sans passer par le biais du mode passe.

    Pour le développement de l'application, j'utilise VBA sous excel.


    j'espère que vous avez bien compris ce que je veux dire.

    Si vous avez une solution à ce problème. N'hésitez pas

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LeUser = Environ("USERNAME")

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Merci pour la réponse.

    Mais avant de coder, il faut que je crée un tableau avec différents champs:
    Exemple:


    IPN Profil
    a45401 Expert
    a90783 Chef d'atelier



    c'est ça, non?

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Si IPN, a45401, a90783 sont des noms d'utilisateurs, oui, c'est ça
    Tu peux placer la liste de ces noms dans un tableau à deux dimensions.
    La première, LeTableau(0, n) = L'User
    La seconde, LeTableau(1, n) = La fonction
    Pour tester, je t'ai fait ça
    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
    Sub RechercheDeLaFonction()
    Dim TabloDyousers, TabloDesFontions, Result, LeTableau()
        LeUser = "GC"
    ' *** Juste pour me faciliter le remplissage du tableau à deux dimensions
        TabloDyousers = Array("IPN", "a45401", "a90783", "GC", "PDG")
        TabloDesFonctions = Array("Profil", "Expert", "Chef d'atelier", "Grand chef", "Big boss")
        ReDim LeTableau(0 To 1, i To UBound(TabloDyousers))
        For i = 0 To UBound(TabloDyousers) 'Remplit le tableau à deux dimensions
            LeTableau(0, i) = TabloDyousers(i)
            LeTableau(1, i) = TabloDesFonctions(i)
        Next
    '*********************************************************
    
    'Quelque soit la méthode de remplissage de ton tableau,
    'pour connaître la fonction, il te suffit de faire ça
    
        For j = 0 To i - 1
            If LeUser = LeTableau(0, j) Then _
                MsgBox "C'est un " & LeTableau(1, j)
        Next
                
    End Sub
    A+

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Merci pour la réponse.

    J'ai vu avec mon patron hier, mais en fait il veut autre chose.

    J'explique le but de l'application:

    les utilisateurs de mon application sont: les chefs d'atelier, Expert, Utilisateurs privilégiés (GRH), Pilote.

    Pour les chefs d'atelier: lors de la connexion du chef d'atelier à l'application, cette dernière va vérifier son IPN (la vérification de l'ipn se fait automatiquement, sans passer par le biais du mot de passe), si celle çi est bonne, l'application affichera alors au chef d'atelier les indicateurs de son périmètre. si c'est pas le cas, l'application affichera un message du type "accès non autorisé".

    Pour le pilote: lors de la connexion du pilote, c'est pareil, l'application vérifiera son IPN, si celle çi est bonne, l'application affichera dans ce cas la liste des ateliers existants, si le pilote sélectionne un atelier, l'application affichera l'indicateur correspondant à cet atelier.

    Du coup, le pilote joue deux rôles: l'affichage des listes des ateliers et l'affichage des indicateurs de l'atelier sélectionné. Par contre pour un chef d'atelier, l'application affichera juste l'indicateur correspondant à son périmètre (son atelier).

    Pour l'utilisateur privilégié: lors de l'ouverture de l'application, pareil, l'application vérifiera son IPN, si celle çi est bonne, l'application affichera dans ce cas la liste des départements (Maintenance, Emboutissage, Montage, Logistique, Tôlerie, Peinture, Qualité, SRH), si l'utilisateur privilégié sélectionne un département, l'application affichera la liste des ateliers existants dans ce département et ainsi de suite jusqu'à l'affichage de l'indicateur.

    Donc, l'utilisateur priviligié joue à la fois le rôle du pilote et du chef d'atelier, avec un pouvoir supplémentaire, l'affichage des départements.

    Pour l'Expert: lors de l'ouverture de l'application, pareil, l'application vérifiera son IPN, si celle çi est bonne, cette dernière affichera un formulaire avec deux boutons ( Afficher et Maintenir). J'explique:

    Si l'expert clique sur le bouton Afficher, dans ce cas il va procéder comme l'utilsateur priviligié, l'application va lui afficher un formulaire avec la liste des départements et ainsi de suite jusqu'à l'affichage de l'indicateur.

    Par contre s'il clique sur le bouton Maintenir, dans ce cas l'application affichera toutes les pages de données, pour qu'il puisse modifier, supprimer et mettre à jour.

    J'espère que j'étais bien clair dans mes explications.

    Et j'aimerai bien que vous m'aidiez. Merci

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Tu as un superbe cahier des charges.
    Dans un cas semblable je n'hésiterais pas, j'utiliserais un userform.
    Tu crées un tableau des Users (IPN)
    Tu crées un tableau des IPN.
    Ensuite, selon l'IPN, tu crées sur l'userform des listbox + une textbox que tu renseignes selon :

    Expert -> Affichage de deux boutons
    Bouton "Afficher" :
    ListBox1 -> liste des départements
    ListBox2 -> liste des ateliers existants
    ListBox 3 -> liste des indicateurs de l'atelier sélectionné
    Une sélection -> Affiche dans la textbox l'indicateur correspondant
    Bouton "Maintenir" -> Affichage des feuilles de calculs

    Utilisateur privilégié -> ListBox1 -> liste des départements
    ListBox2 -> liste des ateliers existants
    ListBox 3 -> liste des indicateurs de l'atelier sélectionné
    Une sélection -> Affiche dans une textbox l'indicateur correspondant

    Pilote -> listbox2 -> Liste des ateliers existants
    Dans listbox3 -> liste des indicateurs de l'atelier sélectionné.
    Une sélection -> Affiche dans la textbox l'indicateur correspondant
    Listbox1 -> masqué.

    Chef de l'atelier -> listbox3 est renseignée ses indicateurs de son périmètre. Une sélection affiche dans une textbox l'indicateur correspondant à cet atelier.
    Listbox1 -> masqué.
    Listbox2 -> masqué.

    Reste plus qu'à faire.
    Tu as compris que tu vas jouer sur l'affichage de tel ou tel contrôle selon que lIPN identifié aura accès ou non à une liste. Mais ainsi, toutes tes listes seront renseignées de la même manière, seul l'affichage à l'écran sera géré selon l'utilisateur.
    Une routine unique pour remplir chaque liste
    Un affichage conditionnel de chaque liste.
    Code : Listboxn.visible = False 'selon le cas
    Assez plaisant à réalisé
    Régale-toi
    A+

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Pour l'accés à l'application, j'ai fais un tableau dans une feuille excel
    contenant les champs sans les alimenter. Car ce tableau va être modifier par
    l'expert par la suite.


    IPN Profil

    Donc le programme que je dois faire, doit détecter le profil de l'utilisateur à partir de l'ipn.
    Il faut que je traite dans mon programme le champs IPN, les données sont mis à jour donc je vais pas les rajouter dans le programme.

    La question qui se pose, comment programmer ça en VBA?
    Sachant que j'ai jamais utiliser ce langage.
    J'ai bien compris l'application, mais le problème, c'est au niveau de la programmation que je bloque.

    Encore une fois Merci

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    En procédant par étape, le premier code sera d'identifier l'utilisateur.

    Tu as ta liste, vierge au départ, alimentée par l'expert par la suite. Si c'est ok, je continue...
    A l'ouverture du fichier, tu consultes la liste. Pour ça, tu dois la parcourir. On en revient au code du début.
    Il faut bien que tu aies une correspondance entre l'IPN et la fonction de cette IPN.
    Quelque soit le moyen utilisé, tableau à deux dimensions, deux colonnes dans une feuille de calculs, etc. cette correspondans existe. Le moyen, je m'en fou ! Tu veux des colonnes ? On prend des colonnes.

    Donc, une colonne avec les IPN et une colonne voisine avec les fonctions correspondantes.
    Un utilisateur ouvre le fichier. A l'ouverture Environ("Username") te donne son "IPN".
    Tu recherches son IPN dans la colonne des IPN dans la feuille de calculs de l'expert, et tu as la fonction sur la même ligne dans la colonne voisine.
    Ton tableau devrait se présenter ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    	A	B
    1	IPN	Profil
    2	a45401	Expert
    3	a90783	Chef d'atelier
    4	a33333	Pilote
    5	a535	Utilisateur privilégié
    6	etc.	Machin
    Avec un tableau à deux dimensions, j'avais ce code
    ....For j = 0 To i - 1
    ........If LeUser = LeTableau(0, j) Then _
    ........MsgBox "C'est un " & LeTableau(1, j)
    ....Next
    Là, avec des colonnes dans une feuille de calculs, tu auras ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 to derniereligne
         If Cells(i,1) = IPN then Fonction = Cells(i,2)
    Next
    Ça, c'est toujours pour le principe. En réalité, tu dois préciser le nom de la feuille, déclarer tes variables et identifier la dernière ligne de ta colonne IPN
    Ce qui donnerait un truc comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim FIPN as worksheet
    Dim DerniereLigne as integer
    Dim i as integer, fonction as string, LeUser as string
    LeUser = Environ("USERNAME")
    Set FIPN = Worksheets("FeuilleIPN") 'La feuille contenant IPNs et Fonctions
        DerniereLigne = FIPN.Range("A65535").End(xlUp).Row 'der ligne colonne A
        For i = 1 to derniereligne 'on parcourt de la ligne 1 à la dernière
             If FIPN.Cells(i,1) = LeUser then Fonction = FIPN.Cells(i,2)
        Next
        Msgbox Fonction 'seulement pour visualiser ce que tu fais - A supprimer
    Tu as au minimum 2 autres façons orthodoxes de faire ça. J'ai mis celle-ci parce que la plus didactique (de mon point de vue) Ne t'attaches pas au code mais à la méthode
    Ensuite, tu dois avoir une feuille de calculs où se trouvent en colonnes, la liste des départements, des ateliers, etc.
    Tu ouvres ton userform avec les listBox invisibles, (visible = False)
    listes que tu renseignes en parcourant les colonnes correspondantes.

    Une fois renseignées, tu affiches celles qui correspondent à l'utilisateur (explication dans mon post précédent)
    Commence par l'identification de l'utilisateur. On veut bien t'aider mais pas faire le boulot pour toi. Si tu coinces, tu siffles, il y aura toujours quelqu'un pour te répondre. Mais propose quelque chose. La balle est dans ton camp.
    Bon courage
    A+

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Merci beaucoup!!

    Je vais avancer la dessus ce week-end

    encore une fois Merci

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je viens de relire ce que tu as dit : Si tu démarres en VBA, je te conseil de commencer par le début et lire les tutos. Pour faire cette appli, tu as besoin de connaître les bases et là ce n'est pas l'objet du forum VBA Excel.
    Une URL qui te renseignera sur les bases ici
    Bon week-end

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Merci,

    Très bon week end

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    En fait, avant de se lancer dans l'identification automatique des utilisateurs, j'ai commencé d'abord par la création des différents userform.

    Les différents userform crées:

    1) Userform Expert avec deux boutons: Afficher et Maintenir

    2) Userform Choix des départements avec 8 boutons. Chaque bouton spécifie un nom de département.

    3) Userform des listes d'ateliers de chaque département.

    Ce que je dois faire en matière d'identification automatique:

    Si l'expert ouvre le fichier excel, la boite de dialogue Expert s'affiche avec les deux boutons Afficher et Maintenir, Donc pour mettre à jour, modifier et supprimer, l'expert va cliquer sur le bouton Maintenir. Sinon, s'il veut afficher les différents départements et ainsi la liste des ateliers de chaque département, ce dernier doit cliquer sur le bouton Afficher.

    Si le pilote ouvre le fichier, dans ce cas c'est la boite de dialogue des différents départements qui s'affiche. s'il clique sur un département, il va afficher ces différents ateliers.

    Si l'utilisateur priviligié ouvre le fichier, il va tomber directement sur la boite de dialogue des différents ateliers qui correspondent à son département.

    Donc pour pouvoir gérer tout ça, j'ai crée une feuille execl avec trois champs intitulés IPN, Profil et Département

    IPN: Identification personnel number

    Profil: Expert, Pilote et Utilisateur priviligié

    Département: cette colonne concernera l'utilisateur priviligié, car lui va consulter la liste des ateliers affectée à son département. Du coup, cette colonne va être vide pour les autres profils (Expert et Pilote)

    En fin de compte, mon programme que je dois créer va traiter la feuille excel des IPN et à partir de celle çi, il pourra attribuer à chaque utilisateur ces droits à l'ouverture du fichier.

    Si vous avez des idées à me proposer concernant le programme VBA compatible à ce genre d'application. N'hésitez pas

    Merci

  13. #13
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Une idée, oui, je te l'ai donnée

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/07/2010, 14h56
  2. Réponses: 1
    Dernier message: 23/09/2008, 11h37
  3. Nbrs d'utilisateurs connectés ?
    Par ada_b dans le forum Administration
    Réponses: 2
    Dernier message: 25/10/2004, 09h06
  4. Récupérer utilisateurs connectés
    Par alex4 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 14/04/2004, 14h21
  5. nombre d'utilisateur connecté a ma base ACCESS
    Par shkinmi dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/11/2003, 13h52

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