Pour récupérer le nom de l'usager de la machine :
NomUsager = environ(4)
Pour récupérer le nom de l'usager d'un réseau : Attention au lignes coupées par le service de messagerie !
Dans le haut d'un module standard : Déclaration de l'api
Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVal lpName As String, ByVal lpUserName As String,
lpnLength As Long) As Long
Const NoError = 0
'------------------------------
Function GetUserName()
Const lpnLength As Integer = 255
Dim status As Integer
Dim lpName, lpUserName As String
lpUserName = Space$(lpnLength + 1)
status = WNetGetUser(lpName, lpUserName, lpnLength)
If status = NoError Then
lpUserName = Left$(lpUserName, InStr(lpUserName, Chr(0)) - 1)
Else
MsgBox "Impossible d'obtenir le login."
End
End If
GetUserName = lpUserName
End Function
Code de la procédure AfficheLogin
'------------------------------
'pour obtenir l'information : petite procédure
.------------------------------
Sub AfficheLogin()
MsgBox GetUserName
End Sub
.------------------------------
Salutations!
"domi" <do...@vielibre.org> a écrit dans le message de news:3f09eeb0$0$9625$7a62...@news.club-internet.fr...
environ(4) me renvoie winbootdir=C:\WINDOWS ?
Pour le nom de l'utilisateur local.
Private Declare Function GetUserNameA Lib "advapi32.dll" _
(ByVal lpBuffer As String, _
nSize As Long) As Long
Function NomUtilisateur() As String
Dim strUserName As String
strUserName = String(100, Chr$(0))
GetUserNameA strUserName, 100
NomUtilisateur = Left$(strUserName, InStr(strUserName,
Chr$(0)) - 1)
End Function
Sub letest()
MsgBox NomUtilisateur
End Sub
Alain CROS.
>-----Message d'origine-----
>..------------------------------
>Sub AfficheLogin()
>MsgBox GetUserName
>End Sub
>
>..------------------------------
>
>
>Salutations!
>
>
>
>"domi" <do...@vielibre.org> a écrit dans le message de
news:3f09eeb0$0$9625$7a62...@news.club-internet.fr...
>Je désire récupérer le nom de l'utilisateur (qui s'est
signé en ouvrant sa
>session) afin d'en garder la trace dans le fichier
excell. Si vous avez la
>solution ... Merci
>
>
>
>
>.
>
je viens de tester sur 2 PC (WinXP et W2K),
c'est environ(24) qui donne USERNAME=xxxxxx
Ton doigt aurait-il rippé ?
donc pour avoir le nom de l'usager :
nom_user = Right(Environ(24), Len(Environ(24)) - 9)
cordialement
Rai
AV
"AV" <alain....@wanadoo.fr> a écrit dans le message de
news:erW4SncR...@TK2MSFTNGP11.phx.gbl...
Tu as raison. Pour contourner cette difficulté, peut-être une fonction de ce
style (Excel 2000 ou + récent) :
Function NomUser()
Dim i&, S$
Do
i = i + 1
NomUser = Split(Environ(i), "=")(1)
S = UCase(Split(Environ(i), "=")(0))
Loop While S <> "USERNAME"
End Function
Ça me paraît assez rapide (sur ma machine il n'y a que 31 variables
d'environnement), et utilisable dans une feuille de calcul. On pourrait imaginer
d'autres petites fonctions sur le même principe en récupérant le nom des
variables à l'aide d'une procédure comme celle-ci :
Sub test()
Dim i&
On Error GoTo Fin
Do
i = i + 1
Cells(i, 1).Value = UCase(Split(Environ(i), "=")(0))
Cells(i, 2).Value = Split(Environ(i), "=")(1)
Loop
Fin:
End Sub
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
"Clément Marcotte" a écrit :