Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

nom de l'utilisateur

0 views
Skip to first unread message

domi

unread,
Jul 7, 2003, 6:02:15 PM7/7/03
to
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

michdenis

unread,
Jul 7, 2003, 6:43:51 PM7/7/03
to
Bonjour Domi,

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...

Alain CROS.

unread,
Jul 7, 2003, 7:31:00 PM7/7/03
to

Bonjour.

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
>
>
>
>

>.
>

Rai

unread,
Jul 8, 2003, 2:03:40 PM7/8/03
to
Bonjour,

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

unread,
Jul 8, 2003, 11:26:09 PM7/8/03
to
Ben chez moi, sur XL97 et 2000 ça le fait pas....

AV


Clément Marcotte

unread,
Jul 8, 2003, 11:50:52 PM7/8/03
to
Tout cela pour dire qu'il ne faut pas se fier à l'ordre des variables
d'environnement qui dépendent de trop de choses.
À moins de toutes les tester une par une, les réponses semblent pour
le moins aléatoires.

"AV" <alain....@wanadoo.fr> a écrit dans le message de
news:erW4SncR...@TK2MSFTNGP11.phx.gbl...

Frédéric Sigonneau

unread,
Jul 9, 2003, 5:37:00 PM7/9/03
to
Bonsoir Clément,

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 :

0 new messages