Bonjour à tous,
Dans une de mes macros, j'ouvre un fichier Excel pour l'alimenter, puis je le sauvegarde et le quitte. Par sécurité je teste avant si le fichier n'est pas en lecture seule. Le code que j'ai trouvé sur le net fonctionne très bien chez moi en local, et dans mon entreprise lorsque j'ouvre moi même le fichier. Cependant si un collègue ouvre le fichier, le code que j'ai ne détecte pas la lecture seule. Est-ce que l'un d'entre-vous saurait me dire si j'ai zappé quelque chose ? Le but est d'avoir l'alerte et le nom du l'utilisateur en cours pour lui demander la fermeture.
Voici mon code:
Sub Enregistrement()
'Déclaration des variables
Dim Fichier As String
Dim Dossier As String
Dim Chemin As String
Dim User As String
Dim Vérification As Boolean
Dim NuméroFichier As Long
Dim NuméroErreur As Long
'****Vérification disponibilité du tableau de suivi des audits****
'Définition du chemin
Fichier = "ER-QAL-004-R02 - Planning d'Audits Qualité" & ".xlsm"
Dossier = "Z:\Qualité\1 - Documents Qualité\4 - Enregistrements\Qualité"
Chemin = Dossier & "\" & Fichier
On Error Resume Next
NuméroFichier = FreeFile()
Open Chemin For Input Lock Read As #NuméroFichier
User = Environ("USERNAME")
Close NuméroFichier
NuméroErreur = Err
Select Case NuméroErreur
Case 0: Vérification = False
Case 70: Vérification = True
End Select
If Vérification = True Then
MsgBox "Le Classeur: " & Chemin & " est déjà en cours d'utilisation par " & User & "." & vbCrLf & " " & vbCrLf & _
"Demandez à l'utilisateur de fermer le fichier avant de pouvoir enregistrer votre rapport.", vbMsgBoxSetForeground + vbCritical, "Lecture seule"
Exit Sub
End If
Merci à vous