Environ("username") qui fonctionne pas !

Rapheux

XLDnaute Junior
Bonjour,

Dans un de mes projets, j'ai besoin de journaliser les actions faites sur mon fichier Excel. Je passe par la méthode environ("username") pour récupérer l'identifiant de session Windows. Jusque là pas de problème, mais quand je met le fichier sur un autre poste, cela ne fonctionne pas.

Quel complément est à installer pour activer cette méthode ?

Cdlt,
Rapheux
 

Jam

XLDnaute Accro
Re : Environ("username") qui fonctionne pas !

Salut,

Personnellement je préfère utiliser les API car la variable d'environnement ne contient pas toujours l'information exact ou voulue.
Ci-après le code à utiliser:

VB:
'# Déclaration des API (en en-tête de module)
Public Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long
Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBudffer As String, nSize As Long) As Long

'==============================================
'= API de récupération du nom de l'ordinateur =
'==============================================
Function ActiveComputerName() As String
    Dim cn As String
    Dim ls As Long
    Dim res As Long
    
    cn = String(1024, 0)
    ls = 1024
    res = GetComputerName(cn, ls)
    If res <> 0 Then
        ActiveComputerName = Mid$(cn, 1, InStr(cn, Chr$(0)) - 1)
    Else
        ActiveComputerName = ""
    End If
End Function

'===============================================
'= API de récupération du nom de l'utilisateur =
'===============================================
Function ActiveUserName() As String
    Dim cn As String
    Dim ls As Long
    Dim res As Long
    
    cn = String(1024, 0)
    ls = 1024
    res = GetUserName(cn, ls)
    If res <> 0 Then
        ActiveUserName = Mid$(cn, 1, InStr(cn, Chr$(0)) - 1)
    Else
        ActiveUserName = ""
    End If
End Function

Bon courage
 

Staple1600

XLDnaute Barbatruc
Re : Environ("username") qui fonctionne pas !

Bonsoir à tous

La même mais différemment
Code:
Private Declare Function _
GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer$, nSize&) As Long
Sub a()
Dim x, strBf$, nb&, UserName$
strBf = Space$(255): nb = Len(strBf)
x = GetUserName(strBf, nb): UserName = Left$(strBf, nb - 1)
MsgBox UserName, vbInformation, "Nom de l'utilisateur de la session"
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Environ("username") qui fonctionne pas !

Bonjour à tous

Une autre méthode passant par un autre chemin.

VB:
Sub b()
' Adapté de  WhoLogon.vbs/Author Guy Thomas
Dim objWMIService, objComputer, colComputer, strComputer
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")
Set colComputer = objWMIService.ExecQuery _
("Select * from Win32_ComputerSystem")
For Each objComputer In colComputer
MsgBox Split(objComputer.UserName, "\")(1), vbInformation, "Nom de l'utilisateur courant"
Next
End Sub

PS: On peut faire plein de choses avec WMI et VBA ;)
 

Discussions similaires