Bonjour a tous,
je tourne en rond depuis 2 bonnes heures, et plus je reflechis, plus j a il impression que ce casse tete n a pas de solution !!
Voila mon probleme : je veux tester si un fichier est ouvert, et s il n est pas ouvert l ouvrir. Je vais donc faire un test dans le repertoire de destination du fichier. Difficulute supplementaire : le fichier peut etre ou pas dans ce fichier de destination.
Voici mon bout de code :
Mon code fonctionne (enfin pas de bug dans la compilation).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55 'Fonction qui teste si un fichier est ouvert ou non Function FichierEstOuvert(ByRef FichierTeste As String) As Boolean Dim Fichier As Long On Error GoTo Erreur Fichier = FreeFile Open FichierTeste For Input Lock Read As #Fichier Close #Fichier FichierEstOuvert = False Exit Function Erreur: FichierEstOuvert = True End Function Sub Text() 'test pour savoir si mon fichier existe dans mon fichier de destination ou non 'retourne compt=1 si oui, compt=0 sinon Dim oFS As Office.FileSearch Set oFS = Application.FileSearch With oFS .NewSearch .FileType = msoFileTypeAllFiles .FileName = fichierachercher .LookIn = "G:\STOCK" .Execute If .FoundFiles.Count = 1 Then compt = 1 'le fichier de stock existe dans le fichier de destination Else compt = 0 'le fichier de stock n existe pas dans le fichier de destination End If End With If FichierEstOuvert("G:\STOCK\" & fichierachercher) Then MsgBox ("fichier ouvert") ' le fichier de stock est ouvert --> on s arrete la Else If compt = 1 Then 'le fichier de stock n est pas ouvert, mais il existe dans le 'fichier de destination --> on l ouvre automatiquement ChDir "G:\STOCK" Workbooks.Open FileName:=fichierachercher MsgBox ("le fichier vient d etre ouvert") End If If compt = 0 Then 'le fichier de stock n est pas ouvert, mais il n existe pas dans le 'fichier de destination --> on l ouvre manuellement MsgBox ("Open the current Stock file") Reponse = Application.Dialogs(xlDialogOpen).Show("C:\Repertoire\sous-repertoire\...\") If Reponse = 0 Then 'si l utilisateur annule la recherche de fichier MsgBox ("le fichier de stock n a pas ete ouvert") Else MsgBox ("c est ok : fichier ouvert") End If End If End If End Sub
Mon probleme est le suivant :
FichierEstOuvert("G:\STOCK\" & fichierachercher) me retourne true si le fichier est ouvert, mais aussi si le fichier n est pas dans le repertoire.
J ai bien essaye de mettre un test pour savoir si le fichier etait dans le repertoire dans ma fonction FichierEstOuvert, mais dans tous les cas, elle me retourne toujours la meme chose si :
- le fichier est ouvert mais n existe pas dans le repertoire
- le fichier n est pas ouvert mais n existe pas dans le repertoire.
Au final, je suis bloquee si le fichier n est pas dans le repertoire, et mon test pour savoir si le fichier est ouvert ne fonctionne donc pas dans tous les cas.
J espere que j ai ete claire, car je commence a avoir les idees un peu embrouillees a force de tourner en rond.
J aimerais avoir vos avis car la je n y vois plus rien !!
Merci !
Cecile
Partager