Excel : extraire un nom depuis un login

Résolu/Fermé
coockie67 Messages postés 254 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 7 janvier 2009 - 29 mai 2008 à 21:25
coockie67 Messages postés 254 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 7 janvier 2009 - 6 juin 2008 à 19:12
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.
A voir également:

5 réponses

chtilou Messages postés 1664 Date d'inscription mardi 22 janvier 2008 Statut Membre Dernière intervention 30 avril 2012 522
29 mai 2008 à 22:33
Bonsoir Coockie67,

Je ne suis pas sur que le forum bureautique soit le plus approprié à ta question. :-(

Cordialement.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
30 mai 2008 à 07:31
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 Function
eric
0
coockie67 Messages postés 254 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 7 janvier 2009 165
30 mai 2008 à 16:10
Merci, je vais essayer ça lundi au bureau et je te tiendrais au courant.

encore merci d'avoir le temps de répondre.
0
coockie67 Messages postés 254 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 7 janvier 2009 165
2 juin 2008 à 17:49
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.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
2 juin 2008 à 20:29
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 partie
Declare 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
0
coockie67 Messages postés 254 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 7 janvier 2009 165
5 juin 2008 à 19:10
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
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 212
5 juin 2008 à 19:39
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coockie67 Messages postés 254 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 7 janvier 2009 165
6 juin 2008 à 19:12
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
0