Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 14/03/2005, 20h54   #1 (permalink)
christian
Guest
 
Messages: n/a
Par défaut connaitre le username en reseau

bonjour à tous,

quelqu'un connait-il une fonction qui pourrait me renvoyer le nom de l'utilisateur en réseau chez qui le fichier est ouvert.
  Réponse avec citation
ANNONCES
Vieux 14/03/2005, 21h01   #2 (permalink)
Super Moderator
 
Avatar de PascalXLD
 
Date d'inscription: février 2005
Localisation: Rennes
Version Excel : Excel 2000 (PC)
Messages: 8 225
Par défaut Re:connaitre le username en reseau

Bonjour

Un code récupéré sur ce forum dont je me sers souvent

Code:
Public UserName As String

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

Sub Get_User_Name()

Dim lpBuff As String * 25
Dim ret As Long
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)

End Sub
Bonne soirée
__________________
Pascal(Visitez mon Blog Photo)

Vous pouvez devenir "Supporter XLD", plus de renseignements ICI
PascalXLD est déconnecté   Réponse avec citation
Vieux 14/03/2005, 21h05   #3 (permalink)
Jam
XLDnaute Impliqué
 
Avatar de Jam
 
Date d'inscription: février 2005
Localisation: Chambourcy
Version Excel : Excel 2003 (PC)
Messages: 653
Envoyer un message via MSN à Jam
Par défaut Re:connaitre le username en reseau

Salut Christian,

Bon faut avoir recours aux API de windows...nan, t'inquiète c'est pas compliqué:

En entête de module tu saisis ça:
Code:
Private Declare Function GetUserName Lib 'advapi32.dll' Alias 'GetUserNameA' (ByVal lpBuffer As String, nSize As Long) As Long
Puis dans la procédure suivante:
Code:
Sub NomUtilisateur()
    'Create a buffer
    strUserName = String(100, Chr$(0))
    'Get the username
    GetUserName strUserName, 100
    'strip the rest of the buffer
    strUserName = Left$(strUserName, InStr(strUserName, Chr$(0)) - 1)
    MsgBox 'Hello ' + strUserName
End Sub
Bonne soirée
__________________
Toutes les bonnes idées ne sont pas dans la même tête.
Jam est déconnecté   Réponse avec citation
Vieux 14/03/2005, 21h07   #4 (permalink)
Jam
XLDnaute Impliqué
 
Avatar de Jam
 
Date d'inscription: février 2005
Localisation: Chambourcy
Version Excel : Excel 2003 (PC)
Messages: 653
Envoyer un message via MSN à Jam
Par défaut Re:connaitre le username en reseau

Salut Pascal

PS.: AU passage pour ceux que ça intéresse les API, vous trouverez à cette adresse tout ce qui va bien
http://www.andreavb.com/API_List.html

Re Bonne soirée
__________________
Toutes les bonnes idées ne sont pas dans la même tête.
Jam est déconnecté   Réponse avec citation
Vieux 14/03/2005, 21h24   #5 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 099
Par défaut Re:connaitre le username en reseau

Bonsoir MrXXL, Pascal, Christian

Et sans courir le net.... Pour ce genre d'API et bien d'autres 'Barbatrucs'

       Sur votre Propre Disque Dûr !!!

Vi vi !!! lol

Faites donc une recherche à 'Sample.xls'....


Plein de trucs à découvrir là dedans ....

j'en avais parlé à l'époque (le 10-Nov-02 15:03)
dans ce fil Cadeau => Utilitaire Special Excel Download...

Un utilitaire qui avait lancé un engouement pour les Utilitaires XLD au point que David a créé une rubrique 'XLD Goodies'

Enfin voilà tout est dans 'Sample.xls' sur votre disque dûr !!!

...Encore dispo sous Office XP, je viens de regarder sur une autre machine...

Alors bonne découverte, pour une fois que Micro$oft vous fait un cadeau...

Bonne Soirée
@+Thierry

PS si vous ne le trouvez pas je le mettrai en ligne en FTP...
_Thierry est déconnecté   Réponse avec citation
Vieux 14/03/2005, 21h37   #6 (permalink)
Jam
XLDnaute Impliqué
 
Avatar de Jam
 
Date d'inscription: février 2005
Localisation: Chambourcy
Version Excel : Excel 2003 (PC)
Messages: 653
Envoyer un message via MSN à Jam
Par défaut Re:connaitre le username en reseau

Salut _Thierry,

Certes Sample.xls est fort sympathique et présente de bonne base mais trouver une API bien costaute c'est pas là qu'on la trouvera

J'viens de soumettre un lien (pour ceux que ça intéresse) d'un p'tit soft gratos (mais plus maintenu - dommage) qui te donne 668 API et l'exemple qui va bien avec + divers utilitaires.

Le lien sera dispo dès que David l'aura validé.

Bonne nuit
__________________
Toutes les bonnes idées ne sont pas dans la même tête.
Jam est déconnecté   Réponse avec citation
Vieux 16/03/2005, 16h58   #7 (permalink)
christian
Guest
 
Messages: n/a
Par défaut Re:connaitre le username en reseau

bonsoir à tous,

j'ai testé les 2 propositions

Celle de Pascal renvoie mon username
Celle de MrExcel renvoie hello

Je ne sais pas s'il faut les adapter dans ma procédure ou si ma question n'est pas claire. Je me permet de la reformuler. Il s'agit de tester si le fichier exemple.xls est ouvert en réseau et si oui par quel utilisateur.

bonne soirée
  Réponse avec citation
Vieux 16/03/2005, 17h36   #8 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 750
Par défaut Re:connaitre le username en reseau

bonjour Christian , Pascal , MrExcel et @+Thierry


dans l'exemple j'ai utilisé une demo de @+Thierry

http://www.excel-downloads.com/html/...4783_74783.htm


dans le classeur en réseau tu inseres ces procedures ( au niveau de ThisWorkbook )
la macro va enregistrer dans un fichier texte toutes les ouvertures et fermetures du classeur ,en indiquant l'heure et le nom de l'utilisateur


Code:
Private Declare Function GetUserName Lib 'advapi32.dll' Alias 'GetUserNameA' _
(ByVal lpBuffer As String, _
nSize As Long) As Long

'Spy Opening/Closing @Thierry
Private Sub Workbook_Open()
Dim lpBuff As String * 25
Dim ret As Long
Dim UserName As String, Spy As String, ThePath
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)

ThePath = 'J:\\Spy.txt' ' à adapter au réseau

Spy = 'Open on : ' & vbTab & Format(Now, 'DD/MM/YYYY HH:MM:SS') & _
vbTab & 'User Name : ' & vbTab & UserName

Open ThePath For Append As #1
Print #1, Spy
Close

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim lpBuff As String * 25
Dim ret As Long
Dim UserName As String, Spy As String, ThePath
ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)

ThePath = 'J:\\Spy.txt' ' à adapter au réseau

Spy = 'Close on : ' & vbTab & Format(Now, 'DD/MM/YYYY HH:MM:SS') & _
vbTab & 'User Name : ' & vbTab & UserName

Open ThePath For Append As #1
Print #1, Spy
Close

End Sub

ensuite , quand tu souhaites connaitre la situation du classeur ( ouvert ou fermé ) tu lances cette macro


Code:
Sub controleClasseurReseau()
Dim Valeur As String

' chemin à adapter au réseau
Open 'J:\\Spy.txt' For Input As #1

Do While Not EOF(1)
Line Input #1, Valeur
Loop
Close

MsgBox 'historique utilisation classeur :' & vbLf & Valeur
End Sub

j'espere que çà pourra t'aider

bonne soiree
MichelXld
MichelXld est déconnecté   Réponse avec citation
Vieux 16/03/2005, 17h47   #9 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 750
Par défaut Re:connaitre le username en reseau

rebonjour

pour completer la procedure , il faudra juste ajouter une option pour ne pas effectuer d'enregistrement dans le fichier texte , lorsque les autres utilisateurs ouvrent le classeur en lecture seule ...


bonne soiree
MichelXld
MichelXld est déconnecté   Réponse avec citation
Vieux 16/03/2005, 17h54   #10 (permalink)
Super Moderator
 
Avatar de PascalXLD
 
Date d'inscription: février 2005
Localisation: Rennes
Version Excel : Excel 2000 (PC)
Messages: 8 225
Par défaut Re:connaitre le username en reseau

Oups

Excuse j'étais à coté de la plaque

M'enfin Michel te donne une solution dont je me sers également car bien pratique de savoir qui touche à certains fichiers

Bonne soirée
__________________
Pascal(Visitez mon Blog Photo)

Vous pouvez devenir "Supporter XLD", plus de renseignements ICI
PascalXLD est déconnecté   Réponse avec citation
Vieux 16/03/2005, 20h09   #11 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 750
Par défaut Re:connaitre le username en reseau

rebonsoir

ci joint les procédures modifiées , en tenant comptes des ouvertures en lecture seule


dans le classeur en réseau
Code:
'http://www.excel-downloads.com/html/French/forum/messages/1_74783_74783.htm
'Private Declare Function GetUserName Lib 'advapi32.dll' Alias 'GetUserNameA' _
(ByVal lpBuffer As String, _
nSize As Long) As Long

'Spy Opening/Closing @Thierry
Private Sub Workbook_Open()
Dim lpBuff As String * 25
Dim ret As Long
Dim UserName As String, Spy As String, ThePath

If ThisWorkbook.ReadOnly = True Then Exit Sub

ret = GetUserName(lpBuff, 25)
UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)

ThePath = 'J:\\Spy.txt' ' à adapter au réseau

Spy = 'Open on : ' & vbTab & Format(Now, 'DD/MM/YYYY HH:MM:SS') & _
vbTab & 'User Name : ' & vbTab & UserName

Open ThePath For Append As #1
Print #1, Spy
Close

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim lpBuff As String * 25
Dim ret As Long
Dim UserName As String, Spy As String, ThePath

If ThisWorkbook.ReadOnly = False Then

    ret = GetUserName(lpBuff, 25)
    UserName = Left(lpBuff, InStr(lpBuff, Chr(0)) - 1)
    
    ThePath = 'J:\\Spy.txt' ' à adapter au réseau
    
    Spy = 'Close on : ' & vbTab & Format(Now, 'DD/MM/YYYY HH:MM:SS') & _
    vbTab & 'User Name : ' & vbTab & UserName
    
    Open ThePath For Append As #1
    Print #1, Spy
    Close

End If
End Sub

pour la vérification
Code:
Sub controleClasseurReseau()
Dim Valeur As String

' chemin à adapter au réseau
Open 'J:\\Spy.txt' For Input As #1

Do While Not EOF(1)
Line Input #1, Valeur
Loop
Close

MsgBox 'historique utilisation classeur :' & vbLf & Valeur
End Sub

bonne soiree
MichelXld
MichelXld est déconnecté   Réponse avec citation
Vieux 16/03/2005, 20h25   #12 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 750
Par défaut Re:connaitre le username en reseau

re re re bonsoir

une fois de plus , j'ai été trop vite ....

il faut bien entendu enlever l'apostrophe devant la ligne :

Private Declare Function GetUserName ...


toutes mes excuses

bonne soiree
MichelXld
MichelXld est déconnecté   Réponse avec citation
Vieux 21/03/2005, 21h46   #13 (permalink)
christian
Guest
 
Messages: n/a
Par défaut Re:connaitre le username en reseau

bonsoir à tous,

Tout d'abord, merci de votre aide car c'est pas toujours évident le vba.
j'ai essayé cette procédure (qui fonctionne très bien) et il me vient quelques questions:

1° Si les macros sont désactivées à l'ouverture du fichier, il y aura des problèmes.Peut-on forcer l'ouverture du fichier avec les macros activées.

2° Toujours sur le même principe, à savoir qui utilise le fichier en réseau. Est-il possible d'écrire et de lire les renseignements liés à l'ouverture / fermeture du classeur dans une feuille masquée du classeur en question car je dois adapter la procédure sur beaucoup de classeurs.

3° Est-il possible d'ajouter une colonne qui indique si le fichier a été modifié.

Bonne soirée
  Réponse avec citation
Vieux 21/03/2005, 22h40   #14 (permalink)
XLDnaute Barbatruc
 
Date d'inscription: février 2005
Messages: 3 099
Par défaut Re:connaitre le username en reseau

Bonsoir Christian, Michel, Pascal, le Fil, le Forum


1) Pour ta question 'macros sont désactivées'... Peut on forcer les macros au démarrage ? non, ou alors pas par code VBA, puisque c'est logique. Comment un macro VBA va pouvoir fonctionner pour forcer l'ouverture avec Macro désactivée... C'est le serpent qui se mord la queue ! ou l'Oeuf et la Poule si tu préfères...

Ici une astuce pour ce genre de dilême, car la solution de mettre le Niveau de Sécurité VBA au plus Faible n'est pas vraiment recommandée si par malheur les utilisateurs ouvrent des fichiers de provenances douteuses, mais on peut envisager une méthode simple qui consiste à s'appuyer sur une macro évènementielle d'ouverture pour donner accès à l'interface de commandes... Si les macros ne sont pas activées, alors l'utilisateur se trouve sur une page lui indiquant que sans macro celà ne fonctionne pas...

Démo Téléchargeable USF-VBA-Protected-WorkBook.zip


2) Pour ta question 'feuille masquée du classeur '... La solution que mes deux compères utilisent et qu'ils t'ont proposée, est ce qu'il y a de plus simple, un Fichier TXT de LOG en réseau, il offre tout plein d'avantages... Crois moi, avant d'avoir divulgué ce moyen sur le Forum, je l'ai mis à l'épreuve, les feuilles cachées pour un Log, c'est du bricolage et difficile de maintenance.


3) Pour ta question 'si le fichier a été modifié'...Savoir si le fichier a été sauvé est chose facile, maintenant savoir si il a été réellement modifié, huum c'est une autre paire de manches, on pourrait voir la taille en octet à l'ouverture et à la fermeture, mais ce n'est pas trop fiable... Non là c'est plus compliqué, peut-être qu'il faudrait un 'Spy' dans le fichier lui-même, mais c'est très lourd à mettre en place...Surtout en réseau comme je précise en réponse 2)...

Démo Téléchargeable Spy_Watching_You.zip

Maintenant je pense que tu as de quoi faire...

Bonne Soirée
@+Thierry
_Thierry est déconnecté   Réponse avec citation
Vieux 20/01/2006, 10h07   #15 (permalink)
XLDnaute Nouveau
 
Avatar de Syntaxerror
 
Date d'inscription: janvier 2006
Localisation: St Priest
Version Excel : Excel 2000 (PC)
Messages: 28
Par défaut Re:connaitre le username en reseau

_Thierry écrit:
Citation:
Bonsoir MrXXL, Pascal, Christian

Et sans courir le net.... Pour ce genre d'API et bien d'autres 'Barbatrucs'

****** Sur votre Propre Disque Dûr !!!

Vi vi !!! lol

Faites donc une recherche à 'Sample.xls'....


Plein de trucs à découvrir là dedans ....

j'en avais parlé à l'époque (le 10-Nov-02 15:03)
dans ce fil Cadeau => Utilitaire Special Excel Download...

Un utilitaire qui avait lancé un engouement pour les Utilitaires XLD au point que David a créé une rubrique 'XLD Goodies'

Enfin voilà tout est dans 'Sample.xls' sur votre disque dûr !!!

...Encore dispo sous Office XP, je viens de regarder sur une autre machine...

Alors bonne découverte, pour une fois que Micro$oft vous fait un cadeau...

Bonne Soirée
@+Thierry

PS si vous ne le trouvez pas je le mettrai en ligne en FTP...
Salut Thierry !
Ce petit cadeau est fort sympathique en effe.
Quand j'ouvre Sample.xls et que j'execute la procedure Get_user_name, ca marche !!! J'obtient bien le nom de l'utilisateur réseau. Par contre lorsque j'exporte et importe le module dans mon projet,Il y'a erreur de compilation car le Projet ou la bibliothèque rest introuvable. La routine se bloque sur Chrqui fait partie de la bibliothèque VBA (VBE6.DLL ?) qui a priori est bien coché.

voilà j'espère que que quelqu'un voudra bien éclairer ma lanterne.
Syntaxerror est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +2. Il est actuellement 12h35.


(C) 2006 Excel Downloads