Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utilisateur session Windows

6 réponses
Avatar
Alf
Bonjour =C3=A0 tous,

Y a t il un moyen de r=C3=A9cup=C3=A9rer le nom de l=E2=80=99utilisateur de=
la session WINDOWS dans une macro ?

Merci pour votre aide =C3=A0 tous
Alf

6 réponses

Avatar
Jacquouille
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
Avatar
MichD
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
Avatar
Jacquouille
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
Avatar
Alf
Merci à tous
Je vais essayer vos propositions...
Alf
Avatar
MichD
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
Avatar
Jacquouille
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