état d'un fichier: ouvert ou fermé

Rich - 15 juin 2000 à 22:52
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013 - 31 mai 2010 à 15:36
j'aimerais être capable de verifier si le fichier que je veux copier est ouvert. Si oui attendre qu'il soit fermé pour le copier.

Merci Rich

5 réponses

cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
27 juil. 2007 à 15:15
Ouvre ton fichier en mode exclusif si ça te genere une erreur alors tu sais qu'il est ouvert.

@+
0
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012
28 mai 2010 à 16:30
Bonjour,

J'actualise un peu le sujet.

En ce qui concerne vb.net ce n'est pas réinventer la poudre?

pour savoir si je peux lire un fichier j'utilise les fonction suivantes ( c'est exactement ce que propose EBArtSoft)

Public Function fichier_disponible(ByVal fichier As String) As Boolean
Dim contenu As String
Try
contenu = System.IO.File.ReadAllText(fichier)
Catch ex As Exception
contenu = Nothing
Return False
Exit Function
End Try
contenu = Nothing
Return True
End Function
Public Function fichiers_disponibles(ByVal fichiers As String()) As Boolean
Dim fichier As String
Dim rep As Boolean
rep = True
For Each fichier In fichiers
If Not fichier_disponible(fichier) Then
rep = False
Exit For
End If
Next
Return rep
End Function


mais il devrait déjà exister une fonction en vb.net qui fait la même chose en optimisé (j'en ai pas trouvé!)

non?
0
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
28 mai 2010 à 17:29
Salut tu ouvre le fichier si il est déja ouvert il va s'ouvrir en lecture seule, ca sera donc ton test

Function testerfichierouvert(ByVal chemin As String) As Boolean
Dim objExcel As Excel.Application
Set objExcel = New Excel.Application
Set objWorkBook = objExcel.Application.Workbooks.Open(chemin)
objExcel.Application.Visible = True
If objWorkBook.ReadOnly = True Then
testerfichierouvert = True
Else: testerfichierouvert = False
End If
objWorkBook.Close False
Set objWorkBook = Nothing
objExcel.Quit
Set objExcel = Nothing
End Function

exemple appel de la fonction
Sub testfonction()
Dim chemintest As String
chemintest = "C:\Documents and Settings\blabla.xls"
If testerfichierouvert(chemintest) = True Then
MsgBox ("fichier déja ouvert")
Else: MsgBox ("fichier fermé")
End If
End Sub

n'oublie pas d'accepter la réponse
0
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 mars 2012
31 mai 2010 à 10:38
Bonjour à tous,

le code est juste! mais .Visible = True est-ce nécessaire d'afficher le fichier ouvert pour ce test et est ce que ouvrir excel n'est pas un peu long.


avec le code ci dessous j'ouvre mes fichiers en lecture seule:

Dim xl
Dim f_xl
Try
xl = CreateObject("Excel.Application")
f_xl = xl.workbooks.open(Me.fichier.Text, True, True)
xl.visible = True
Exit Sub
Catch ex As Exception

End Try

pour moi c'est parfais comme ça mon peux lire le fichier même s'il est resté ouvert. ou le rouvrir une deuxième fois sans soucis.

la différence est .Open(chemin) est .Open(chemin,true,true).

sinon il y a réponse très bien ici:
http://www.vbfrance.com/forum/sujet-FICHIER-OUVERT-POUDRE-REINVENTEE_1441576.aspx#3
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
houtas Messages postés 116 Date d'inscription jeudi 14 décembre 2006 Statut Membre Dernière intervention 29 août 2013
31 mai 2010 à 15:36
Le .visibile est inutile juste utilisé pour le test du code, tu pilote tes classeurs excel a partir de quoi Access, Excel ou VB, c'est important de préciser pour avoir la réponse adapté
0
Rejoignez-nous