tester si un fichier est ouvert

A

Angelo

Guest
Bonjour à tous
alors voila je fais une application sur excel.
Au départ je voulais faire un seul fichier xls (on va l'appelé fichier1 pour la compréhension) mais le problème est que plusieurs personnes devront utilisé et modifier le contenu du fichier1
et donc il risque d'avoir une perte de temps assez importante car un fois le fichier ouvert les autres utlisateurs ne pourrons utilisé ce fichier qu'en lecture seul
Alors j'ai eu l'idée de dupliqué le fichier1 pour obtenir un traitement de ce style :
si le fichier1 n'est pas utilisé -> utilisé le fichier1
sinon testé le fichier2
si le fichier2 n'est pas ouvert ->utilisé le fichier2
sinon testé le fichier3
si le fichier3 n'est pas ouvert ->utilisé le fichier3
sinon indiqué à l'utilisateur de réessayé plus tard


Comment pourais je faire le teste pour savoir si un fichier est déja ouvert? ou y a t'il un autre moyen ?
 

Jacques87

XLDnaute Accro
Bonjour

Une petite idée comme cela en passant

Tu peux tester si le fichier est ouvert ou non en lecture seule de la façon suivante

If ActiveWorkbook.ReadOnly = True Then MsgBox('le fichier est ouvert en lecture seule')

et donc si c'est le cas tu passes alors au fichier 2

ai-je bien compris ton problème ?

A+
 
A

Angelo

Guest
pas tout à fait je veux que les utilisateurs puissent modifié le contenu des fichiers donc si un fichier est déjà ouvert il faut pas que l'utilisateur y accède (même pas en lecture seul ) par contre un autre fichier s'ouvrira à la place du premier fichier
tu comprend ?
 
A

Angelo

Guest
je met un petit bout de code pour mieu comprendre vers ou je veux aller

Private Function EstDansCollection(Coln As Object, Item As String) As Boolean
Dim obj As Object
On Error Resume Next
Set obj = Coln(Item)
EstDansCollection = Not obj Is Nothing
End Function

Sub fichier_ouvert()
Dim Reponse
If EstDansCollection(Workbooks, 'Mensuel.xls') = True Then 'si Mensuel déja ouvert
MsgBox ('mensuel ouvert')
Workbooks.Open ('Mensuel2.xls')

Exit Sub
End If

If EstDansCollection(Workbooks, 'Mensuel2.xls') = True Then 'si mensuel2 déjà ouvert
MsgBox ('mensuel2 ouvert')
Workbooks.Open ('Mensuel3.xls')

Exit Sub

End If
If EstDansCollection(Workbooks, 'Mensuel3.xls') = True Then 'si mensuel3 déjà ouvert
MsgBox ('mensuel3 ouvert')
MsgBox ('tout les fichiers sont ouvert')
End If
Exit Sub

End Sub
 

Jacques87

XLDnaute Accro
Angelo, c'est bien ce que j'avais compris
Mais pour savoir si il faudra mettre à la disposition d'un utilisateur le fichier 2 parceque le fichier 1 est déjà utilisé par un autre (donc est en lecture seule pour le 2 ème utilisateur) il te faut faire un test
Et c'est ce test que je te proposais, à toi maintenant d'analyser la variable booléenne (True ou False) pour ouvrir ou non le fichier 2

C'est à dire
Si ActiveWorkBook.ReadOnly est à True alors je mets à la disposition de l'utilisateur le fichier 2
Si ActiveWorkBook.ReadOnly (du fichier 2) est à True alors je lui donne le fichier 3

Voila quelle était mon idée

A approfondir

Bon courage


Oups nous nous sommes croisés
Ce que je viens de lire va dans le même sens que mon explication ci-dessus
Certes maintenant il faut écrire une procédure qui fonctionnera
Je n'ai pas le temps d'approfondir cette question maintenant, si ce soir tu n'as aucune réponse engageante je reverrai le problème de plus près

Message édité par: Jacques87, à: 22/02/2006 17:00
 

Manu13

XLDnaute Occasionnel
Bonjour jacques87, angelo et le forum

Il y a quelque chose qui m'échappe si j'ai bien tout compris.
Il va y avoir un fichier dubliqué trois fois ou plus, comme ça vous pouvez être trois à travailler dessus et le modifier, donc à la fin de la journée il va y avoir trois fichiers différent puisque modifié par trois personnes différentes et donc des données différentes, il faudra un regroupement de donnée par la suite!!!

A bientôt
Manu
 

Jacques87

XLDnaute Accro
Bonjour Manu,

En effet tu as bien compris.
Je partage ton analyse mais comme le 'plan' de travail d'Angelo est celui qu'il nous a exposé, je n'ai fait qu'essayer de répondre à sa question sans soulever ce problème supplémentaire

Bonne journée
 
A

Angelo

Guest
Bonjour Jacques87, Manu13 et le forum
effectivement je prévois de regrouper les informations dans un 4ieme fichier (récapitulatif)
Cela n'est pas compliqué à faire puisqu'il suffit de lier les différents entre eux
 

Discussions similaires

Statistiques des forums

Discussions
312 078
Messages
2 085 117
Membres
102 783
dernier inscrit
Basoje