Récupérer le nom du l'utilisateur en réseau

  • Initiateur de la discussion Francis
  • Date de début
F

Francis

Guest
Bonjour à tous et à toutes,

Je voudrais récupérer le nom de l'utilisateur connecté sur le réseau. (pas le username d'excel qui peut être modifié)

j'ai fais des recherches dans le forum et j'ai trouvé ce code qui fonctionne sous WINDOWS2000 - Excel2000

Attribute VB_Name = "NomUtilisateur"



Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long


Function NomUser()
Dim tmp$

tmp = String(255, " ")
GetUserName tmp, 255 ' <--------
tmp = Trim(tmp)
tmp = Left(tmp, Len(tmp) - 1)
NomUser = tmp
End Function


Sub test()
MsgBox NomUser
End Sub

Je dois travailler au boulot sur un pc avec WINDOWS95 - Excel97 SR2(anglais)

La macro renvoie une erreur à la ligne marquée <-----

ne peut trouver le point d'entrée GetUserName dans advapi32.dll

J'ai aussi essayé un autre code trouvé dans le forum ou sur un lien avec la dll mpr

Declare Function WNetGetUserName Lib "mpr.dll" Alias "WNetGetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long

Même message d'erreur : ne peut trouver le point d'entrée WNetGetUserName dans advapi32.dll

Quelqu'un a une idée ?


Francis
disk.gif
 
@

@Christophe@

Guest
Bonjour,

Essaye de cette façon, moi j'utilise cela et çà marche à merveille, mais à tester sur win95 et 97

Voici le code:

Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long


Sub GetLoginName()

Dim strName As String
Dim lngReturn As Long
Dim strLoginName As String

strName = Space$(25)
lngReturn = GetUserName(strName, 25)

If lngReturn = 1 Then
strLoginName = Trim(strName)
DoEvents
MsgBox strLoginName
Else
MsgBox "Couldn't get the user's Name from the network."
End If

End Sub

Tient nous au courant

@Christophe@
 
F

Francis

Guest
Bonsoir les exceliens et excleinnes,

le code de Christophe fonctionne sous Windows95 sauf un détail.

En exécutant le code en pas à pas avec affichage des variables locales, j'ai remarqué que la ligne strLoginName = Trim(strName) laisse un caractère(un carré) à la fin du nom, j'ai dû rajouté une ligne pour l'enlevé.

Mais j'ai un nouveau problème : j'ai placé ce code dans un module(6) et je voudrais faire un contrôle d'autorisation suivant l'utilisateur connecté.

Dans le module(1) j'ai un code qui appelle le sub getLoginName :

public strLoginName
sub auto_open()
autorisation
end sub

sub autorisation()
déprotection = false
GetLoginName
if strLoginname = "DUPONT" then
déprotection = true
else
msgBox "Pas d'autorisation pour la modification"
endif

Le contenu de la variable strLoginName est affiché par le sub getLoginname mais est perdu quand il reviens dans le sub autorisation.

j'ai le même problème pour la fermeture du fichier dans ThisWorbook avec un : private sub worbook_beforesave

Merci pour votre précieuse aide .

Je dois avoir mal placé une déclaration de variable mais je ne sais pas où !

Francis
disk.gif
 
F

Francis

Guest
Bonjour Jean-pierre et le forum,

mille excuses pour la réponse tardive.

En fait, j'utilise la macro de christophe qui fonctionne avex win95 et win 2000 .

Module1
Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" _
(ByVal lpBuffer As String, nSize As Long) As Long


Sub GetLoginName()

Dim strName As String
Dim lngReturn As Long
Dim strLoginName As String

strName = Space$(25)
lngReturn = GetUserName(strName, 25)

If lngReturn = 1 Then
strLoginName = Trim(strName)
DoEvents
MsgBox strLoginName
Else
MsgBox "Couldn't get the user's Name from the network."
End If

End Sub

Module2
public strLoginName
sub auto_open()
autorisation
end sub

sub autorisation()
déprotection = false
GetLoginName
if left(strLoginname,6) = "DUPONT" then
déprotection = true
else
msgBox "Pas d'autorisation pour la modification"
endif


Le code complet est un peu plus évolué car je fais un test dans "this worbook" pour savoir si le fichier est ouvert en readonly. Si oui, je bloque toute possiblité de sauvegarde quelque soit l'utilisateur. Si le fichier est ouvert avec le mot de passe de modification, je fais le test d'autorisation sur le LoginName.
Tout ceci de mémoire, car le code est au boulot et je dois le recopier pour l'envoyer aux personnes intéressées et sur le forum.
J'espère pouvoir le transmettre dans 1 ou 2 jours.

Encore un grand merci aux gens du foruml pour leur aide précieuse.

Francis
disk.gif
 
F

Francis

Guest
Salut à tous les exceliens et exceliennes

Comme promis, voici ci-joint la partie du code concernant le sujet.

A vous de remplacer les "noms" par ceux des personnes autorisées et les "Feuilx" par le nom de l'onglet de la vôtre.

Si besoin de + explications envoyer un mail FRAMAR1000@SKYNET.BE

Francis
disk.gif
 
F

Francis

Guest
Salut à tous les exceliens et exceliennes

Comme promis, voici ci-joint la partie du code concernant le sujet.

je vois que la pièce jointe n'a pas été tramsmise

2ème essai

francis
 

Pièces jointes

  • LoginNamesample.xls
    40 KB · Affichages: 144

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87