srib
Messages postés23Date d'inscriptionlundi 30 décembre 2002StatutMembreDernière intervention22 mars 2011
-
21 mars 2011 à 11:56
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 2013
-
22 mars 2011 à 16:29
Bonjour,
Avec plusieurs collègues on se partage un fichier Excel. Je suis en train de faire une macro qui envoie automatiquement un "net send" à la personne qui a ouvert en 1er le fichier Excel.
Si j'ouvre le fichier et qu'il est déjà ouvert sur un autre poste j'ai le message : "Mon_fichier.xls est verrouillé pour modification par Toto"
Mon problème est de récupérer le nom de l'utilisateur "Toto" qui ouvert le fichier en question avec VBA.
Quelqu'un connaît-il la commande ou le code pour faire cela ?
bigfish_le vrai
Messages postés1835Date d'inscriptionvendredi 13 mai 2005StatutMembreDernière intervention20 novembre 201315 22 mars 2011 à 16:29
Salut,
le moyen le plus simple que je connaisse sans passer par le partage:
La méthode consiste à enregistrer le nom du premier utilisateur dans une propriété personnalisé. Tout se passe à l'ouverture du fichier:
-Si l'ouverture est normale (pas de lecture seule) on enregistre le nom de l’utilisateur et on sauve directement
-Si l'ouverture se fait en lecture seule (autre utilisateur) on récupère le nom enregistrer par le premier utilisateur
Private Sub Workbook_Open()
On Error Resume Next
With ThisWorkbook.CustomDocumentProperties("LastUser")
If Err = 0 Then
If ThisWorkbook.ReadOnly = True Then 'si lecture seule
MsgBox "Fichier utilisé par :" & .Value, vbExclamation
Else ' lecture normale
If Not .Value = Application.UserName Then
.Value = Application.UserName
ThisWorkbook.Save
End If
End If
Else 'si err diffèrent de 0 (normalement err=5) on crée la propriété personalisé. (?)utile que la première fois
ThisWorkbook.CustomDocumentProperties.Add "LastUser", False, msoPropertyTypeString, Application.UserName
ThisWorkbook.Save
End If
End With
On Error GoTo 0
End Sub