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 :

verrouiller l'accès à un bouton de commande selon l'utilisateur


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 79
    Points : 53
    Points
    53
    Par défaut verrouiller l'accès à un bouton de commande selon l'utilisateur
    Bonjour à tous !

    Je viens de réaliser une petite applcation sur excel avec vba et j'en suis à la résolution des conditions d'utilisation.
    A ce sujet, je voudrais vérouiller l'accès de certains bouton de commande (étant affecter à des macros) selon l'utilisateur.
    J'ai essayé de voir ce que je pouvais faire avec les options de sécurité proposées par excel, mais elle verouille toute la feuille, or c'est pas mon but.

    Quelqu'un a une idée ???

    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 543
    Points
    15 543
    Par défaut
    Derrière le click du bouton, tu peux vérifier le nom du User avec Environ("USERNAME")
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub LeBouton_Click()
    Liste = "Martin, Durant, Durand, Durang, Dupont, Pupond"
    If not instr(Liste, Environ("USERNAME")) <> 0 then exit sub
    'Ton code
    End sub

  3. #3
    Membre confirmé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    Tu peux aussi faire à l'activation de ta fenêtre (en réutilisant une partie du code de Ouskel'n'or) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub MaFenetre_Activate()
        Liste = "Martin, Durant, Durand, Durang, Dupont, Pupond"
        If Not InStr(Liste, Environ("USERNAME")) <> 0 Then
            bouton1.Enabled = False
            bouton2.Enabled = False
            ...
        End If
    End Sub
    A lire :Les Règles

  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 543
    Points
    15 543
    Par défaut
    Oui, par exemple...
    Mais pour être encore plus sectaire, tu peux aussi mettre ça dans Workbook_Open
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Private Sub Workbook_Open()
        Liste = "Martin, Durant, Durand, Durang, Dupont, Pupond"
        If Not InStr(Liste, Environ("USERNAME")) <> 0 Then _
             ThisWorkbook.Close False
    End Sub

  5. #5
    Membre confirmé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Points : 551
    Points
    551
    Par défaut
    Ta solution est peut-être un peu extreme

    j'ai pensé aussi que les utilisateurs pourraient ne pas voir les boutons qu'ils n'ont pas à utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Sub MaFenetre_Activate()
        Liste = "Martin, Durant, Durand, Durang, Dupont, Pupond"
        If Not InStr(Liste, Environ("USERNAME")) <> 0 Then
            bouton1.Visible = False
            bouton2.Visible = False
            ...
        End If
    End Sub
    Qu'en pense arkorrigan, le créateur de la discussion ?
    A lire :Les Règles

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    Bonjour à vous !

    Vos solutions m'ont l'air très intéressantes...
    D'ailleurs j'opterais bien pour celle de zandru.
    Par contre, comment marche t'elle ?
    J'ai recopié ta solution et en fait je me rends compte que je ne vois pas comment elle peut fonctionner ?
    Elle se met en marche quand tu ouvres le fichier ?
    quand tu ouvres seulement la feuille ?

    Et la fonction Username fait référence au nom d'utilisateur qui est inscrit dans l'ordi ?

    merci de bien vouloir m'éclairer un peu...

  7. #7
    Membre confirmé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Points : 551
    Points
    551
    Par défaut
    Bonjour,

    Alors pour le USERNAME il faut voir avec Ouskel'n'or

    L'evenement qui lance cette procédure est l'activation de la userform (si tu utilises un Userform )
    sinon, il faut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Worksheet_Activate()
    
    End Sub
    soit tu veux que tes boutons soit invisible aux utilisateurs non-autorisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bouton1.Visible = False
    soit tu veux que les boutons soit visible mais grisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bouton1.Enabled = False
    voilà, j'espère avoir été clair
    A lire :Les Règles

  8. #8
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    un simple petit test permettra de comprendre ce que renvoie "UserName"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    MsgBox Environ("username")
    End Sub
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 79
    Points : 53
    Points
    53
    Par défaut
    j'essaye ta soluce mais elle ne marche pas,
    en fait quand je la lance, il ne reconnait pas les boutons que je veux cacher, pourtant j'ai bien vérifié leur numéro et tout mais j'ai toujours la mem erreur !

    t'as une idée ?

  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 543
    Points
    15 543
    Par défaut
    Oui, quelle erreur ? Sur quelle ligne ?
    Pour environ, je crois me souvenir que l'aide en ligne donne une bonne explication et même un exemple d'utilisation. Je complète en disant que par le N° tu peux avoir tous les paramètres à envoyer pour avoir le renseignement correspondant
    Ex : Application.Environ("USERNAME") fournit le nom de celui qui a ouvert une session, et non l'utilisateur d'Excel que tout un chacun peut modifier
    Pour ton code, je le mettrais dans la feuille de code de la feuille de calculs
    Editeur VB -> Deux clics sur le nom de la feuille -> Général -> Worksheet -> Activate
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Activate()
    'ton code
    End Sub

Discussions similaires

  1. [XL-2003] Macro selon coordonnées d'un bouton de commande
    Par Neo37 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/03/2013, 17h10
  2. [AC-2007] Comment coder les boutons de commandes sous acces 2007
    Par njcom dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/07/2009, 17h37
  3. Réponses: 24
    Dernier message: 14/03/2007, 15h45
  4. [Collaboration/Interaction] Peut-on schématiser une interaction entre un bouton de commande et un autre objet ?
    Par manel007 dans le forum Autres Diagrammes
    Réponses: 5
    Dernier message: 21/09/2004, 01h01
  5. Ajout de bouton de commandes dans la barre de menus
    Par vanessaf22 dans le forum IHM
    Réponses: 9
    Dernier message: 21/07/2003, 11h38

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