Bonjour à tous,
je partage un fichier sur Dropbox, avec un compte Basic. Je souhaiterais avoir un avertissement à l’ouverture lorsque mon fichier est déjà utilisé sur un autre PC.
J’utilise ce code :
Function IsWorkbookOpenned(sMyWorkbook As String)
Dim FileNumber As Long, ErrorNumber As Long
On Error Resume Next
FileNumber = FreeFile()
Open sMyWorkbook For Input Lock Read As #FileNumber
Close FileNumber
ErrorNumber = Err
On Error GoTo 0
Select Case ErrorNumber
Case 0: IsWorkbookOpenned = False
Case 70: IsWorkbookOpenned = True
Case Else: Error ErrorNumber
End Select
End Function
Sub CheckWorkbookOpen()
Dim sPathName As String 'Chemin répertoire courant
Dim sExtensionWB As String 'Extension du fichier
Dim sSavedName As String 'Nom du fichier
Dim sCompleteName As String 'Nom complet du fichier
Dim sMyWorkbook As String
Dim bChecking As Boolean
' Enregistrement chemin répertoire courant
sPathName = ThisWorkbook.Path
' Construction nom complet du du fichier
sExtensionWB = Split(ThisWorkbook.Name, ".")(UBound(Split(ThisWorkbook.Name, ".")))
sSavedName = Replace(ThisWorkbook.Name, "." & sExtensionWB, "")
sCompleteName = sSavedName & ".xlsm"
sMyWorkbook = sPathName & "\" & sCompleteName
' D'abord tester si le fichier existe
If Len(Dir(sMyWorkbook)) = 0 Then ' S'il n'existe pas, montrer un avertissement et quitter la macro
MsgBox "ERREUR: Le Classeur: [" & sMyWorkbook & "] n'existe pas..."
Exit Sub
End If
' Si le Classeur existe, vérifier s'il est déjà ouvert
bChecking = IsWorkbookOpenned(sMyWorkbook)
If bChecking = True Then
MsgBox "Le Classeur: " & sSavedName & " est déjà ouvert..."
Exit Sub
End If
End Sub
La procédure est exécutée à l'ouverture
Le problème évidemment, c'est que vu que j'ouvre le fichier, j'ai directement le MsgBox.
Donc, je tourne en rond.
Y a-t-il un moyen de différencier les utilisateurs ?
Merci