Utilisateur session Windows

Le
Alf
Bonjour à tous,

Y a t il un moyen de récupérer le nom de l’utilisateur de=
la session WINDOWS dans une macro ?

Merci pour votre aide à tous
Alf
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacquouille
Le #26451860
Bonjour,
Sur "développez.com", un msg de 2008 d'un certain "fring"
- MsgBox Application.UserName '<-- renvoie la propriété "auteur" du classeur
- MsgBox Environ("username") '<-- renvoie le login de l'utilisateur du pc
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Alf" a écrit dans le message de groupe de discussion :

Bonjour à tous,
Y a t il un moyen de récupérer le nom de l’utilisateur de la session WINDOWS
dans une macro ?
Merci pour votre aide à tous
Alf
MichD
Le #26451870
Bonjour,
MsgBox Environ("Username")
La suggestion de Jacquouille retourne le nom que l'on retrouve dans les
propriétés d'Excel et non le nom de l'usager d'une session Windows.
MichD
Jacquouille
Le #26451932
Bonsoir Denis
Je ne perçois pas bien la différence. Sauf caméra, je ne pense pas qu'Excel
soit capable d'identifier qui est derrière le clavier et qu'il se contente
de nous donner le nom de la personne qui est titulaire de la session
ouverte.
Dans ce cas, la formule trouvée sur le Web ne serait-elle pas bonne?
déjà merci pour l'explication.
Bonne fin de WE
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
ou9d23$faa$
Bonjour,
MsgBox Environ("Username")
La suggestion de Jacquouille retourne le nom que l'on retrouve dans les
propriétés d'Excel et non le nom de l'usager d'une session Windows.
MichD
Alf
Le #26451935
Merci à tous
Je vais essayer vos propositions...
Alf
MichD
Le #26451943
Par exemple, dans les propriétés Excel, je retrouve mon vrai nom complet et
non mon pseudonyme.
MsgBox Environ("Username") retourne le nom de mon profil d'usager. Dans un
réseau, chaque usager a un "nom d'usager" auquel est associé un mot de passe
pour pouvoir se connecter au réseau. Dans une entreprise, ce nom d'usager ne
correspond pas nécessaire au nom propre de l'usager mais à un code
particulier qui est défini par le gestionnaire du réseau. Si j'ai bien
compris, c'est le nom du profil de l'usager que le demandeur désire.
Ma suggestion est la plus facile... on peut aussi utiliser un API de Windows
pour obtenir la même information le cas échéant.
Si tu trouves que l'approche suggérée est trop difficile, copie ce qui suit
dans un module standard et exécute la procédure "TEST".
Attention au coupures de lignes inopportunes par le service de messagerie.
'Déclaration des API dans le haut du module standard
Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA"
_
(ByVal lpBuffer As String, nSize As Long) As Long
Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" _
(ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As
Long
'--------------------------------------------------------
Sub test()
MsgBox OSUserName
MsgBox fGetUserName
MsgBox fOSUserName
MsgBox FindUserName
End Sub
'--------------------------------------------------------
Function OSUserName() As String
'Dave Peterson, mpep
Dim Buffer As String * 256
Dim BuffLen As Long
BuffLen = 256
If GetUserName(Buffer, BuffLen) Then _
OSUserName = Left(Buffer, BuffLen - 1)
End Function
'--------------------------------------------------------
Function fGetUserName() As String
'posté par Med Bouchenafa, mpfe
Const lpnLength As Integer = 255
Dim iRet As Integer
Dim lpName, lpUserName As String
lpUserName = Space$(lpnLength + 1)
iRet = WNetGetUser(lpName, lpUserName, lpnLength)
If iRet = 0 Then
lpUserName = Left$(lpUserName, InStr(lpUserName, Chr(0)) - 1)
Else
lpUserName = ""
End If
fGetUserName = lpUserName
End Function
'--------------------------------------------------------
Function fOSUserName() As String
' Trevor Shuttleworth, mpep
' Returns the network login name
Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = GetUserName(strUserName, lngLen)
If lngX <> 0 Then
fOSUserName = Left$(strUserName, lngLen - 1)
Else
fOSUserName = ""
End If
End Function
'--------------------------------------------------------
Public Function FindUserName() As String
' Andrew, mpep
Dim strName As String
strName = Space$(512)
GetUserName strName, Len(strName)
FindUserName = Trim$(strName)
End Function
'--------------------------------------------------------
MichD
Jacquouille
Le #26451959
Salut Denis
merci pour cette explication, bien détaillée.
Etant retraité, je ne travaille plus en réseau. Donc je sais immédiatement
qui pianote sur mon PC... c'est moi.
-))

Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"MichD" a écrit dans le message de groupe de discussion :
oua7to$463$
Par exemple, dans les propriétés Excel, je retrouve mon vrai nom complet et
non mon pseudonyme.
MsgBox Environ("Username") retourne le nom de mon profil d'usager. Dans un
réseau, chaque usager a un "nom d'usager" auquel est associé un mot de passe
pour pouvoir se connecter au réseau. Dans une entreprise, ce nom d'usager ne
correspond pas nécessaire au nom propre de l'usager mais à un code
particulier qui est défini par le gestionnaire du réseau. Si j'ai bien
compris, c'est le nom du profil de l'usager que le demandeur désire.
Ma suggestion est la plus facile... on peut aussi utiliser un API de Windows
pour obtenir la même information le cas échéant.
Si tu trouves que l'approche suggérée est trop difficile, copie ce qui suit
dans un module standard et exécute la procédure "TEST".
Attention au coupures de lignes inopportunes par le service de messagerie.
'Déclaration des API dans le haut du module standard
Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA"
_
(ByVal lpBuffer As String, nSize As Long) As Long
Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" _
(ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As
Long
'--------------------------------------------------------
Sub test()
MsgBox OSUserName
MsgBox fGetUserName
MsgBox fOSUserName
MsgBox FindUserName
End Sub
'--------------------------------------------------------
Function OSUserName() As String
'Dave Peterson, mpep
Dim Buffer As String * 256
Dim BuffLen As Long
BuffLen = 256
If GetUserName(Buffer, BuffLen) Then _
OSUserName = Left(Buffer, BuffLen - 1)
End Function
'--------------------------------------------------------
Function fGetUserName() As String
'posté par Med Bouchenafa, mpfe
Const lpnLength As Integer = 255
Dim iRet As Integer
Dim lpName, lpUserName As String
lpUserName = Space$(lpnLength + 1)
iRet = WNetGetUser(lpName, lpUserName, lpnLength)
If iRet = 0 Then
lpUserName = Left$(lpUserName, InStr(lpUserName, Chr(0)) - 1)
Else
lpUserName = ""
End If
fGetUserName = lpUserName
End Function
'--------------------------------------------------------
Function fOSUserName() As String
' Trevor Shuttleworth, mpep
' Returns the network login name
Dim lngLen As Long, lngX As Long
Dim strUserName As String
strUserName = String$(254, 0)
lngLen = 255
lngX = GetUserName(strUserName, lngLen)
If lngX <> 0 Then
fOSUserName = Left$(strUserName, lngLen - 1)
Else
fOSUserName = ""
End If
End Function
'--------------------------------------------------------
Public Function FindUserName() As String
' Andrew, mpep
Dim strName As String
strName = Space$(512)
GetUserName strName, Len(strName)
FindUserName = Trim$(strName)
End Function
'--------------------------------------------------------
MichD
Publicité
Poster une réponse
Anonyme