none
vba et excel 2007 RRS feed

  • Question

  • bonjour je voudrai savoir s'il est possible de faire en sorte qu'une fuille excel contenant des tableaux puisse par l'intermédiaire de macros ou de code vba afficher certains de ces tableaux en fonctions des utilisateurs windows qui éxécutent cette feuille

     

    merci

    jeudi 19 avril 2007 20:14

Réponses

  • Bonjour,

     

    Oui, c'est possible mais cela demande un code événementiel assez pointu.

     

    1/ il vous faut stocker quelque part les noms et droits de chacun avec leur login.

    Pour obtenir le nom du login de l'utilisateur en cours, il vous faut utiliser l'API GetUserName ()

    Option Explicit


    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

     

    Private Sub Form_Load()
      MsgBox "Vous êtes loggé en tant que '" & GetLoginName() & "'."
    End Sub

     

    Private Function GetLoginName() As String
    Dim strLoginName As String
        strLoginName = String(64, vbNullChar)
        GetUserName strLoginName, 64
        strLoginName = Left$(strLoginName, InStr(strLoginName, vbNullChar) - 1)
        GetLoginName = strLoginName
    End Function

     

     

    De là, vous pouvez selon le login, affecter chaque objet (Chart) ou zones de cellules (Range) et les rendre inaccessible.

    Je vous préconise de mettre en place un plan sur papier et un classeur bien structuré pour vous faciliter la tâche :

    par exemple, une feuille par utilisateur serait idéale car ce choix simplifie grandement le code (Propriété Visible définie à VeryHidden - 2).

     

    Cela répond t-il à votre question ?

     

    Argy

    http://argyronet.developpez.com/

     

    lundi 28 mai 2007 13:28
    Modérateur

Toutes les réponses

  • Bonjour,

     

    Oui, c'est possible mais cela demande un code événementiel assez pointu.

     

    1/ il vous faut stocker quelque part les noms et droits de chacun avec leur login.

    Pour obtenir le nom du login de l'utilisateur en cours, il vous faut utiliser l'API GetUserName ()

    Option Explicit


    Private Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long

     

    Private Sub Form_Load()
      MsgBox "Vous êtes loggé en tant que '" & GetLoginName() & "'."
    End Sub

     

    Private Function GetLoginName() As String
    Dim strLoginName As String
        strLoginName = String(64, vbNullChar)
        GetUserName strLoginName, 64
        strLoginName = Left$(strLoginName, InStr(strLoginName, vbNullChar) - 1)
        GetLoginName = strLoginName
    End Function

     

     

    De là, vous pouvez selon le login, affecter chaque objet (Chart) ou zones de cellules (Range) et les rendre inaccessible.

    Je vous préconise de mettre en place un plan sur papier et un classeur bien structuré pour vous faciliter la tâche :

    par exemple, une feuille par utilisateur serait idéale car ce choix simplifie grandement le code (Propriété Visible définie à VeryHidden - 2).

     

    Cela répond t-il à votre question ?

     

    Argy

    http://argyronet.developpez.com/

     

    lundi 28 mai 2007 13:28
    Modérateur
  • pour connaître l'utilisateur courant tu peu utiliser la fonction Environ :
    Code Snippet

    MSGBOX ENVIRON("USERNAME")


    mercredi 30 mai 2007 11:20