Je suis coincé, je fais appel à votre aide.
Je voudrai vérifié à l'ouverture d'un fichier que celui-ci n'est pas déjà ouvert.
Voir animation pour le message d'erreur.
VB:
Function FichOuvert(F As String) As Boolean
'myDearFriend! - www.mdf-xlpages.com
On Error Resume Next
FichOuvert = Not Workbooks(F) Is Nothing
End Function
Sub Ouvrir()
nom_fichier = Application.GetOpenFilename("Fichiers Excel (*.xls*), *.xls*")
Workbooks.Open Filename:=nom_fichier
Fichier = Dir(nom_fichier)
If FichOuvert(Fichier) Then
MsgBox "Le fichier " & Fichier & " est ouvert."
Else
MsgBox "Le fichier " & Fichier & " n'est pas ouvert."
End If
If nom_fichier <> False Then
End If
End Sub
Le test pour savoir si le fichier est ouvert doit être fait avant l'ouverture du fichier par Workbooks.Open.
Perso je ne fais pas de test, je préfère fermer le fichier s'il est ouvert :
VB:
Sub Ouvrir()
Dim nom_fichier
nom_fichier = Application.GetOpenFilename("Fichiers Excel (*.xls*), *.xls*")
If nom_fichier = False Or nom_fichier = ThisWorkbook.FullName Then Exit Sub
On Error Resume Next
Workbooks(Dir(nom_fichier)).Close False 'ferme le fichier s"il est ouvert
On Error GoTo 0
Workbooks.Open Filename:=nom_fichier 'ouverture
'---
End Sub
Bonjour a tous
pour tester si un fichier est ouvert en essayant de l'ouvrir en mémoire avec open for input lock read
VB:
Sub test2()
MsgBox estOuvert("C:\Users\polux\DeskTop\translate interface.xlsm")
End Sub
Function estOuvert(fichier As String)
Dim x As Integer, E As Integer
estOuvert = False
On Error Resume Next
x = FreeFile: Open fichier For Input Lock Read As #x: Close x
E = Err
On Error GoTo 0
Select Case E
Case 0: estOuvert = False
Case 70: estOuvert = True
Case Else: estOuvert = E
End Select
End Function
Le test pour savoir si le fichier est ouvert doit être fait avant l'ouverture du fichier par Workbooks.Open.
Perso je ne fais pas de test, je préfère fermer le fichier s'il est ouvert :
VB:
Sub Ouvrir()
Dim nom_fichier
nom_fichier = Application.GetOpenFilename("Fichiers Excel (*.xls*), *.xls*")
If nom_fichier = False Or nom_fichier = ThisWorkbook.FullName Then Exit Sub
On Error Resume Next
Workbooks(Dir(nom_fichier)).Close False 'ferme le fichier s"il est ouvert
On Error GoTo 0
Workbooks.Open Filename:=nom_fichier 'ouverture
'---
End Sub
En fait à partir de mon fichier, je voudrais ouvrir un fichier en le choisissant. Comme très souvent j'utilise plusieurs fichiers (2 ou 3). Je voulais savoir si le fichier en question n'était pas déjà ouvert pour éviter le message indiquant qu'il est déjà ouvert.
Bonjour a tous
pour tester si un fichier est ouvert en essayant de l'ouvrir en mémoire avec open for input lock read
VB:
Sub test2()
MsgBox estOuvert("C:\Users\polux\DeskTop\translate interface.xlsm")
End Sub
Function estOuvert(fichier As String)
Dim x As Integer, E As Integer
estOuvert = False
On Error Resume Next
x = FreeFile: Open fichier For Input Lock Read As #x: Close x
E = Err
On Error GoTo 0
Select Case E
Case 0: estOuvert = False
Case 70: estOuvert = True
Case Else: estOuvert = E
End Select
End Function
oui effectivement perso je ne travaille pas post dialog
c'est pour cela quelle est argumentée
tu n'a qu'a mixer les deux et faire une fonction globale dialog
oui effectivement perso je ne travaille pas post dialog
c'est pour cela quelle est argumentée
tu n'a qu'a mixer les deux et faire une fonction globale dialog
et si ton fichier est sensé être ouvert dans la même instance j'ai beaucoup plus simple
tout simplement en testant le retour de l'evaluation d'un range
VB:
MsgBox not iserror(Evaluate("='[Classeur2.xlsx]Feuil1'!A1:A2"))'formule de base exemple