MAcro: récuperer le nom de l'utilisateur d'un classeur

grovallat

XLDnaute Nouveau
Bonjour à tous et toutes,

Voilà mon soucis, j'ai un fichier maitre, partagé, qu'on appelera "accueil" et qui permet d'ouvrir plusieurs autres fichiers (Saisie_FV_ref1.xls ,Saisie_FV_ref2.xls....). Je voudrais en fait bloquer l'arrivée deux plusieurs utilisateur sur un meme fichier ref, mais permettre le travail de plusieur utilisateur sur des ref différentes.

Je m'explique, l'utilisateur choisit dans une ListBox quel fichier il veut ouvrir et une macro test si le fichier est ouvert:

Code:
Private Sub Acceder_Click()

'test si la reference a été choisie

If références = "" Then
MsgBox (" Vous n'avez pas sélectionnez de référence à ouvrir")
Else

'test si le fichier de reference est ouvert par quelqu'un d'autre

        If IsFileOpen(RépertoireSaisie & "\Saisie_FV_" & références.Value & ".xls") Then
            'message d'erreur
            MsgBox ("le fichier auquel vous souhaitez acceder est ouvert par un autre utilisateur ")
        Else
        
'fermeture de l'accueil et ouverture du le fichier de saisie

        accueil.Hide
        Unload accueil
        Workbooks.Open (RépertoireSaisie & "\Saisie_FV_" & références.Value & ".xls")
        Workbooks("Accueil ").Save
        Workbooks("Accueil ").Close
        Workbooks(RépertoireSaisie & "\Saisie_FV_" & références.Value & ".xls").Activate
        End If
End If

End Sub

Cette macro s'appuie sur une fonction FileIsOpen, que voilà:

Code:
Function IsFileOpen(filename As String)
    Dim filenum As Integer, errnum As Integer

    On Error Resume Next   ' désactive la vérification d'erreur
    filenum = FreeFile()   ' Get a free file number.
    ' Attempt to open the file and lock it.
    Open filename For Input Lock Read As #filenum
    Close filenum          ' Close the file.
    errnum = Err           ' Save the error number that occurred.
    On Error GoTo 0        ' Turn error checking back on.

    ' Check to see which error occurred.
    Select Case errnum

        ' No error occurred.
        ' File is NOT already open by another user.
        Case 0
         IsFileOpen = False

        ' Error number for "Permission Denied."
        ' File is already opened by another user.
        Case 70
            IsFileOpen = True

        ' Another error occurred.
        Case Else
            Error errnum
    End Select

End Function

Finalement, mon problème est que j'aimerais que mon message "le fichier auquel vous souhaitez acceder est ouvert par un autre utilisateur " puisse inclure le nom de l'utilisateur qui a déjà ouvert le fichier. (Excel nous le donne quant on tente d'ouvrir manuellement un fichier non partagé et déjà ouvert mais impossible de le récuperer). J'ai tenté d'utiliser.UserStatus et .Username mais sans réussite. Je dois m'y prendre mal; quelqu'un pourrait t'il m'aider, s'il vous plait???

(Dsl je ne peux pas prendre le fichier complet car il est trop gros)
 

grovallat

XLDnaute Nouveau
Re : MAcro: récuperer le nom de l'utilisateur d'un classeur

Tout d'abord merci pour ta réponse.

Cependant comme je l'ai écrit j'ai tenté d'utiliser la propriété UserStatus mais sans succès ( et pourtant je l'ai retournée dans tous les sens). Si tu pouvais me donner la synthaxe qui va bien, je t'en serai extrèmement reconnaissant.

A++
 

JNP

XLDnaute Barbatruc
Re : MAcro: récuperer le nom de l'utilisateur d'un classeur

Bonjour le fil :),
Si je lis bien l'aide
Workbook.UserStatus, propriété
Cette propriété renvoie un tableau à deux dimensions partant de 1 et qui fournit des informations sur chaque utilisateur ayant ouvert le classeur en tant que liste partagée. Type de données Variant en lecture seule.
Donc comme tu souhaites savoir si le classeur est ouvert par une seule personne, et surtout pas le partager, je ne penses pas que ça puisse fonctionner :eek:.
De plus, même si ce n'est pas écrit noir sur blanc, j'ai l'impression qu'il faut que le classeur soit ouvert par celui qui veut recevoir les informations pour pouvoir lire cette propriété :rolleyes:...
Bon courage :cool:
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla