[gestion multi utilisateur] Environ : username / COMPUTERNAME
Dans le cadre d'un outil stocké sur serveur, il y a eu des coac avec des personnes connectées. l'utilisateur n'a pas dû lire la fenêtre indiquant qui était connecté et à mis 20min à trouver l'utilisateur concerné.
j'ai pensé à mettre en avant l'utilisateur et le nom de l'ordinateur concerné affiché en haut dans le bandeau.
ouverture du classeur, la sub ci dessous est appelée.
On test si l'outil est en lecture seule:
- non : récupération des données et stockage.
- oui : quelqu'un est déjà connecté on continu sans stocker les nouvelles données de cet utilisateur.
dans tous les cas, récupération des éléments stockés et affichage.
J'ai un soucis avec l'affichage justement, le principe ne semble pas fonctionner à chaque fois.
certains cas montrent étant en lecture seule l'ordinateur et l'utilisateur, parfois également utilisateur qui n'est plus connecté sur l'outil et qui avait la main en complet sans lecture seule.
[edit] en simple relecture du code je pourrais je pense écrire ceci pour l'appel : QuiSuisJe (ActiveWorkbook.ReadOnly) .
je viens de m'en rendre compte.
quelqu'un aurait il une explication ?
Par avance merci,
Ronan
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
Private Sub Workbook_Open()
' [...] code tronqué non utile ici
Application.ScreenUpdating = False
Select Case ActiveWorkbook.ReadOnly
Case False: QuiSuisJe (False) ' permet de visuellement connaitre qui est connecté sur la main courante (session,ordi)
Case True: QuiSuisJe (True)
End Select
' [...] code tronqué non utile ici
end sub
'*
'* QuiSuisJe
'* Permet d'afficher en partie haute du bandeau excel qui est connecté.
'******************************
Sub QuiSuisJe(Optional b_estLectureSeule As Boolean = False)
Dim lo_UtilisateurConnecte As ListObject
'-------------------------------------------
Set lo_UtilisateurConnecte = Sheets("Config").ListObjects("t_UtilisateurConnecte")
' si erreur lors du code qui suivra on saute en gestion d'erreur
On Error GoTo errorHandler
' si le fichier n'est pas en lecture seule (outil pas encore ouvert)
If b_estLectureSeule = False Then
' sauvegarde des données utilisateur connecté.
lo_UtilisateurConnecte.DataBodyRange.Cells(lo_UtilisateurConnecte.DataBodyRange.Find("utilisateur").Row - 1, 2).Value = Environ("username")
lo_UtilisateurConnecte.DataBodyRange.Cells(lo_UtilisateurConnecte.DataBodyRange.Find("ordinateur").Row - 1, 2).Value = Environ("COMPUTERNAME")
End If
' en haut du bandeau excel affichage des données sauvegardées.
' si lecture seule, récupère les données sauvegardées, autrement lecture des nouvelles données sauvegardées.
Application.Caption = " Utilisateur : " & lo_UtilisateurConnecte.DataBodyRange.Cells(lo_UtilisateurConnecte.DataBodyRange.Find("utilisateur").Row - 1, 2).Value _
& " | Ordinateur : " & lo_UtilisateurConnecte.DataBodyRange.Cells(lo_UtilisateurConnecte.DataBodyRange.Find("ordinateur").Row - 1, 2).Value
Set lo_UtilisateurConnecte = Nothing
Exit Sub
errorHandler:
Set lo_UtilisateurConnecte = Nothing
MsgBox "QuiSuisJe utilisateur connecté: erreur de traitement", vbInformation, "QuiSuisJe recherche information utilisateur"
End Sub |