XL 2010 vba fichier ouvert et users ?

kif

XLDnaute Occasionnel
Bonjour la team

je bute sur ce code,

je cherche à vérifier si le fichier est ouvert et par qui, je souhaite donc :

1 - créer un fichier texte temporaire à la racine de ce fichier (status.txt) à l'ouverture
2 - inscrire le user ou lire dedans
3 - inscrire dans un MSG box les infos via les valeurs inscrites dans les cases X2 Y3 de l'onglet "Acc"
4 - supprimer à la fermeture du fichier le fichier temporaire status.txt

j'ai mis en gras ou ça coince





les deux sub :


Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Not ThisWorkbook.ReadOnly Then Kill "ThisWorkbook.Path\status.txt" ' supp du fichier
End Sub




Private Sub Workbook_Open()

Dim numfich As Integer
Dim us As String

'creation du fichier vide = status.txt dans ThisWorkbook.Path ?

If Dir("ThisWorkbook.Path\status.txt") = "" Then
numfich = FreeFile
Open "ThisWorkbook.Path\status.txt" For Output As #numfich
Print #numfich, Application.UserName & " le " & Now() ' pose du fichier
Close #numfich
Else
numfich = FreeFile
Open "ThisWorkbook.Path\status.txt" For Input As #numfich
Input #numfich, us
Close #numfich
MsgBox "Fichier en lecture seule !" & vbLf & "Utilisé par " & Application.IfError(Application.VLookup(us, Sheets("Acc").Range("X2:Y3"), 2, False), us) ' info
End If
End Sub


Merci d'avance de votre support
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Kif,
ThisWorkbook.Path est un chemin pas une chaine donc doit être en dehors des guillemets. Par contre Status.txt doit y être.
il est plus simple de passer par une variable : Fichier = ThisWorkbook.Path & "\ Status.txt"
Testez :
VB:
Private Sub Workbook_Open()
Dim numfich As Integer
Dim us As String, Fichier$
'creation du fichier vide = status.txt dans ThisWorkbook.Path ?
Fichier = ThisWorkbook.Path & "\ Status.txt"
If Dir(Fichier) = "" Then
    numfich = FreeFile
    Open Fichier For Output As #numfich
    Print #numfich, Application.UserName & " le " & Now() ' pose du fichier
    Close #numfich
Else
    numfich = FreeFile
    Open Fichier For Input As #numfich
    Input #numfich, us
    Close #numfich
    MsgBox "Fichier en lecture seule !" & vbLf & "Utilisé par " & Application.IfError(Application.VLookup(us, Sheets("Acc").Range("X2:Y3"), 2, False), us) ' info
End If
End Sub
 

Discussions similaires

  • Question
Microsoft 365 Code VBA
Réponses
10
Affichages
718

Statistiques des forums

Discussions
314 732
Messages
2 112 284
Membres
111 497
dernier inscrit
cerber08