Fichier partagé: afficher la liste des ordinateurs connectés

Bonjour le forum,

Je vous remercie de bien vouloir m'accueilir sur votre forum d'aide dédié à Excel et au VBA.

J'ai quelques notions de VBA (Excel, Outlook et Word) mais je suis loin d'être un "pro". La plupart des applications que j'ai développées, l'ont été avec des bouts de codes glânés à droite à gauche sur le net ou dans un bouquin "le programmeur". Etant infirmier de métier, je balbutie donc avec la programmation.

Bref, venons-en au vif du sujet:

Je mets au point une application sous excel pour l'hôpital dans lequel je travaille.

Je cherche à afficher dans un msgbox (ou, au pire, dans un listbox d'un userform déjà créé), la liste des noms d'ordinateurs actuellement connectés à mon fichier partagé. En gros, et pour résumer, je cherche à afficher la liste de tous les 'Environ("ComputerName")' connectés en live à mon application partagée.

J'avais trouvé ce bout de code :

Sub QuiEstConnecté()
Dim i As Integer
Dim affiche as string
Users = ActiveWorkbook.UserStatus
    For boucle = 1 To UBound(Users)
        affiche = affiche & Users(boucle, 1) & vbTab & CDate(Users(boucle, 2)) & vbCrLf
    Next boucle
MsgBox affiche, vbInformation, "Utilisateurs connectés :"
End Sub

mais malheureusement, si celui-ci affiche le nom de session des personnes connectées, ainsi que la date de connexion, il ne m'affiche pas le nom des ordinateurs. Et c'est ce dont j'ai besoin, car une infirmière peut ouvrir sa session sur plusieurs machines, et moi, j'ai besoin de connaitre quelle est la machine exacte.

La solution du fichier journal en txt qui se rempli au fur et à mesure des ouvertures, modifications et fermetures du fichier partagé n'est pas non plus ce que je recherche (dommage, car ça, je sais faire...).

Je vous remercie donc par avance de l'aide que vous pourrez m'apporter.

Bien cordialement,

Jérôme.

Environ("COMPUTERNAME")

ou

Environ("PROCESSOR_IDENTIFIER")

Devraient te convenir

Bonjour EngueEngue,

et merci d'avoir pris la peine de répondre à mon problème.

Le soucis de environ("computername"), c'est qu'il m'affiche mon nom d'ordinateur. Ce que je cherche à faire, c'est d'afficher la liste de tous les environ("computername") connectés au fichier partagé.

Est-ce seulement possible en vba?

Uhm j'avais mal lu...

Alors là... Difficile. D'après le msdn ce n'est pas possible puisqu'ils veulent garder la confidentialité de l'usage...

Mais il me vient à l'idée un petit truc...

Quand tu ouvres un XLSX tu peux t'appercevoir qu'un lock file se crée également...

toto.xlsx générera à l'ouverture ~$toto.xlsx

Donc avec un FSO si tu es administrateur et que tu as accès à toute la network tu peux chercher tous les lock files et voir qui en est le propriétaire

Function GetFileOwner(strFileName)
    'http://www.vbsedit.com/scripts/security/ownership/scr_1386.asp
    Set objWMIService = GetObject("winmgmts:")
    Set objFileSecuritySettings = _
    objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strFileName & "'")
    intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)
    If intRetVal = 0 Then
       GetFileOwner = objSD.Owner.Name
    Else
       GetFileOwner = "Unknown"
    End If
End Function

Ou par la même essayer de trouver une propriété discriminante dans ta classe WMI.

edit:

Sinon mettre macro à l'ouverture et à la fermeture qui écrira dans une feuille 'Log" les variables environementales de l'ordinateur. Tu auras donc un log qui se remplira au fur et à mesure!

Re bonjour EngueEngue,

un grand merci pour ton aide !!!

Ta première solution étant trop compliquée pour mon niveau de compétances (et je ne suis pas administrateur), je pars sur ta 2ème solution proposée dans ton "EDIT":

  • j'ai créé une feuille "journal"
  • à l'ouverture du fichier, chaque utilisateur écrit dans ce fichier journal une ligne avec les données qui m'intéressent (dont le fameux environ("computername")).
  • dans un userform, je vais mettre un bouton qui va lancer un listbox qui lui-même récupérera les infos écrites dans le fichier journal.
  • à la fermeture du fichier, la ligne contenant les infos écrites par l'utilisateur à sa connexion au fichier seront effacées.

Je vais tester ça de suite, et je reviendrai poster ici-même le résultat et clore le fil.

Encore un grand merci EngueEngue pour ton aide !!!

Bonjour le forum,

Suite à l'idée proposée par EngueEngue, j'ai "triché" en contournant le problème :

  • j'ai créé une feuille "journal" dans laquelle, à l'ouverture du fichier, le nom de session, le N° d'ordinateur, et d'autres infos s'inscrivent sur une ligne.
  • un UserForm dans lequel une listbox affiche le contenu de cette feuille "journal" s'ouvre en cliquant sur un bouton
  • quand l'utilisateur ferme le fichier, la ligne contenant les infos de l'utilisateur est effacée.

Espérant que cette astuce puisse un jour servir à d'autres qui liront ce fil de discussion...

Bien cordialement,

Jérôme

Rechercher des sujets similaires à "fichier partage afficher liste ordinateurs connectes"