Excel : extraire un nom depuis un login
Résolu
coockie67
Messages postés
254
Date d'inscription
Statut
Membre
Dernière intervention
-
coockie67 Messages postés 254 Date d'inscription Statut Membre Dernière intervention -
coockie67 Messages postés 254 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je souhaiterai pouvoir remplir certains champs automatiquement dans un formulaire (excel) situé sur réseau.
Afin de facilité la tache des utilisateurs, je voudrais que certains champs comme le nom se remplisse automatiquement.
Je pense que celà est possible à l'aide du LOGIN, mais malheureusement je n'ai trouvé aucune formule pour le réaliser.
Je suppose que celà doit être réaliser en VB, mais je n'ai aucune idée de la manière dont celà fonctionne.
Si quelqu'un connait la solution et pouvais me faire partager ces connaissances ce serait cool.
Merci par avance.
coockie.
Je souhaiterai pouvoir remplir certains champs automatiquement dans un formulaire (excel) situé sur réseau.
Afin de facilité la tache des utilisateurs, je voudrais que certains champs comme le nom se remplisse automatiquement.
Je pense que celà est possible à l'aide du LOGIN, mais malheureusement je n'ai trouvé aucune formule pour le réaliser.
Je suppose que celà doit être réaliser en VB, mais je n'ai aucune idée de la manière dont celà fonctionne.
Si quelqu'un connait la solution et pouvais me faire partager ces connaissances ce serait cool.
Merci par avance.
coockie.
Configuration: Windows XP Internet Explorer 7.0
5 réponses
-
Bonsoir Coockie67,
Je ne suis pas sur que le forum bureautique soit le plus approprié à ta question. :-(
Cordialement. -
Bonjour,
Pour récupérer le login essaie en ajoutant cette fonction personnalisée dans un module :Function login() As String login = Application.UserName End Function
et dans une cellule saisis
=login()
Si ça ne suffit pas il y a une autre fonction utilisant les 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 Functioneric-
-
Salut,
Ca fonctionne mais tout à fait. Je m'explique.
Lors du débogage, j'ai une erreur :
Erreur de compilation :
Seul des commentaires peuvent apparaître après EndSub, Endfonction ou Endproperty.
Mise à part celà, j'obtiens mon login (avec ma session) c'est ce que je souhaite, mais lorsque j'ouvre le fichier avec une autre session, c'est toujours mon login qui s'affiche.
-
-
Bonsoir,
Erreur de compilation :
Seul des commentaires peuvent apparaître après EndSub, Endfonction ou Endproperty.
Ben ça veut dire ce que ça veut dire : tu as une ligne autre qu'un commentaire après un end sub ou end function...
Et en plus cette ligne est sélectionnée lors de l'affichage du message d'erreur, si tu ne la trouves pas je ne peux plus rien pour toi ;-)
La partieDeclare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long Const NoError = 0
soit être écrite avant le 1er sub ou function du module (juste après 'option explicite' si tu l'as laissé)
mais lorsque j'ouvre le fichier avec une autre session, c'est toujours mon login qui s'affiche.
Si tu disais avec quelle version ? le 1ère ou la 2nde ?
Si c'est la 1ère ça ne m'étonne qu'à moitié, tout dépend comment sont configurés les postes. Chez nous les noms d'utilisateur (excel) sont mis égaux au login donc sur le poste utilisateur c'est ok. C'est plus court mais pas très fiable, je te l'avais mise des fois que ce soit suffisant.
Utilise la 2nde version qui fonctionnera si declare function est bien mis au début.
eric-
Salut,
tout d'abord merci d'avoir pris le temps de me répondre.
J'ai essayer la première solution :
Function login() As String
login = Application.UserName
End Function
et dans une cellule saisis
=login()
Je pensais que celà ne fonctionner pas, mais en faite l'utilisateur doit double cliquer (dans la cellule) puis valider la formule (=login()) pour ce son nom d'utilisateur fonctionne.
J'ai essayer de faire rafraichir le ficheir excel avec
Autorefresh = 1
Mais celà ne semble pas fonctionner.
Il faut peut-être le placer ailleurs je ne sais pas. Pour le moment j'ai :
Sub login01
End Sub
Function login() As String
login = Application.UserName
End Function
Autorefresch = 1
-
-
Bonsoir,
essaie en ajoutant application.volatile juste après le function...
Au 1er recalcul la mise à jour devrait se faire.
Je te rappelle mon post 5 où je te conseille d'utiliser plutôt la 2nde version qui retourne réellement le login.
La 1ère ça dépend de la configuration du poste...
eric -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Bonsoir,
J'ai utiliser l'instruction "Workbook_Open()" qui fonctionne à merveille et que j'ai pu trouver dans un autre post de ce forum.
A partir du login, j'ai pu obtenir le nom complet à l'aide des instructions
Public Function getRealName(ByVal strUser As String) As String
Select Case UCase(strUser)
Case "loginEx"
getRealName = "exemple de login"
Maintenant je cherche a associer certaine actions et à remplir des cellules. J'ai cherché un peu et j'ai trouvé :
.Cells(3, 1) = GetRealName
Mais il semble manquer quelque chose. Si t'as une idée, j'suis preneur.
Merci encore de m'avoir aiguiller avec l'instruction GetUserName