Vérification d'ouverture de fichier
Bonjour à tous et à toutes !
Je me tourne vers vous car j'ai un problème, je vous explique mon fichier excel :
J'ai crée un fichier excel de gestion de stocks, et pour gérer tous les stocks de réactifs, je dois aller chercher des informations dans chaque fiches individuelles de réactifs. Pour cela j'ouvre les fichiers grâce à un code vba, je prends les infos et le referme.
Le problème étant que les fichiers portent le même nom, j'aimerais donc mettre une sécurité avant de commencer la manip qui permettrait de vérifier si un fichier de ce nom est ouvert, et si oui le fermer dans tout les cas.
J'ai trouvé il y a quelque temps une fonction qui permet de vérifier si un fichier est ouvert, la voici :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Function IsFileOpen(Filename As String)
Dim filenum As Integer, Errnum As Integer
On Error Resume Next
filenum = FreeFile()
Open Filename For Input Lock Read As #filenum
Close filenum
Errnum = Err
On Error GoTo 0
Select Case Errnum
Case 0
IsFileOpen = False
Case 70
IsFileOpen = True
End Select
End Function |
Je l'utilise donc pour ouvrir mon fichier ou je dois extraire les informations. Pour la sécurité j'ai écris ce code qui ne marche pas :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
| 'Sécurité
If IsFileOpen("M:\Fiche de vie et de renseignement test.xlsm") Then
Workbooks("M:\Fiche de vie et de renseignement test.xlsm").Close
End If
'Ouverture du fichier, c'est ici que nous cherchons le fichier voulu avec un lien précis.
If IsFileOpen("M:...\Fiche de vie et de renseignement test.xlsm") Then
GoTo TrouveeNom_1
Else
Workbooks.Open Filename:= _
"M:...\Fiche de vie et de renseignement test.xlsm"
GoTo TrouveeNom_1
End If |
Le code "Sécurité" ne ferme pas le fichier déjà ouvert.. Je ne comprends pas pourquoi car sans ce code, la deuxième partie fonctionne, ouvre le fichier désiré et la referme après.
Merci d'avance de votre aide :D
Edit : Je pense que le problème vient du code utilisé pour la sécurité, j'ai l'impression que le code ne détecte pas mon fichier ouvert, et continue le code comme si il ne lisait pas ces 3 lignes