Comment voir en VBA si un fichier est ouvert

marco57

XLDnaute Occasionnel
Bonjour le Forum,
Comment voir en VBA si un fichier (par exemple TOTO.xls) du même répertoire que mon fichier actif est ouvert.
Merci d'avance pour votre aide précieuse.

Bon week-end

Marco
 

myDearFriend!

XLDnaute Barbatruc
Bonjour Marco57,

Tu peux essayer avec ça :
Sub Test()
      MsgBox 'Fichier ' & IIf(FichOuvert('MonClasseur.xls'), '', 'NON ') & 'ouvert.'
End Sub

Function FichOuvert(F As String) As Boolean
Dim
Wk As Workbook
      On Error Resume Next
      Set Wk = Workbooks(F)           '(merci à Ti pour l'astuce !)
      On Error GoTo 0
      FichOuvert = Not Wk Is Nothing
End Function
Cordialement,
 

marco57

XLDnaute Occasionnel
Bonjour MyDearFriend et le Forum,

Je te remercie pour cette réponse qui me sera bien utile.

En fait , je cherchais à lire ou copier des données dans un fichier fermé. J'ai demandé de l'aide mais n'ai pas eu de réponse.

A ta connaissance, est-il possible de lire les données d'une plage de cellules déterminées dans une feuille déterminée d'un classeur déterminé sans être obligé d'ouvrir ce classeur?

Je suis presque sur que c'est faisable mais n'ai aucune idée de la façon de faire.

En aurais-tu une...

A+


Marco
 

myDearFriend!

XLDnaute Barbatruc
Re- Marco57,

Pour lire (ou écrire) dans des fichiers fermés, je te conseille vivement de faire un tour sur ce lien incontournable Ce lien n'existe plus. Même si tu ne t'intéresse pas à Access, tu trouveras là ton bonheur.... Les travaux titanesques du 'Michel's Club' (MichelXLD et Michel_m) sont très riches en enseignements sur le sujet !

Cordialement,

Message édité par: myDearFriend!, à: 20/08/2005 15:03
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Didier, Marco, le Forum


Je te conseille en plus de l'Excellent Fil de Notre Ami MichelXLD que Didier à mis en Ligne, de regarder cette démo associative que j'ai faite pour notre copine Sylvie avec la participation de Michel_M, MichelXLD et même un truc de Frédérique Sigonneau justement pour tester si le fichier est ouvert même en réseau.

=> Lien supprimé

Je pense qu'il y a pratiquement tout là dedans ;)

Partie Recherche de Fichiers et Sélection :
1) Pouvoir 'Scanner' un répertoire voulu (Parcourir...)
2) Mémoriser ce Chemin pour utilisation récurrente
3) Afficher dans une Liste tous les Fichiers XL de ce répertoire.
4) Filtrer dans ces noms de fichiers une String à volonté.
5) Séléctionner tout ou partie parmis une cette liste de Fichiers XL.


Partie Manipulation ADO de ces Fichiers :
1) Lister toutes les Feuilles contenues dans Classeurs Sélectionnés
2) a/ Paramétrer le Nom d'une Feuille au Choix
    b/ Paramétrer la Range d'une Plage Contigue
    c/ Mémoriser ces Critères pour utilisation récurrente
3) a/ Soit Remonter toutes les données contenues dans ces Critères de tous les Classeurs Sélectionnés en Listing Bout à Bout avec Nom du Classeur.
    b/ Soit Remonter uniquement les données contenues, si un des Champs que l'on a paramétré également et Non-Vide (Sauvegarde ausse de ce Paramètre)
4) Option de sélection de Range non-contigues

Partie Gestion d'Erreurs ADO :
1) Test Si le Nom de Range pour la Plage Choisie est Valide
2) Test Si la Valeur de la Colonne du Champs peut exister dans la Range Choisie
3) En fin de traitement, Retour de la Liste des Classeurs n'ayant pu être traités car ne contenant pas la Feuille spécifiée.
4) Test si un des Classeurs est Ouvert (sur la WorkStation, mais en réseau aussi...) avec raport d'erreur également en fin de traitement...




Sinon il y a aussi le Fil avec différentes versions précédentes, intervention de mes amis et explications :

=> Lien supprimé

Bonne Découverte
[ol]@+Thierry[/ol]
 

myDearFriend!

XLDnaute Barbatruc
Oups, je suis impardonnable !

Pardon Thierry, tu as tout à fait raison, d'autant que j'ai regardé cette Démo pas plus tard que cette semaine !! Et je n'ai pas encore fini de la décortiquer... c'est un sacré travail que tu as réalisé là et y'a du tout bon là-dedans !

A bientôt.
 

marco57

XLDnaute Occasionnel
Bonjour Thierry, MydearFriend et le Forum,

Merci à vous pour ces infos et ces liens.

Je n'ai bien entendu pas encore décortiqué tout cela mais je sens que vous êtes sur la bonne voix tous les deux.

Heu, très humblement , que signifie ADO ???

Je vous remercie encore pour votre précieuse aide

Marco
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour Marco, Didier, le Forum

Merci Didier pour tes compliments, en fait j'ai fait cet exercice pour mettre en pratique diverses méthodes ADO que nos deux Michels nationaux m'ont insité à travailler. C'est 'abominablent terrifiant' la puissance d'ADO !!!

Et pour Marco et bien juste tu ouvres le Fichier Démo et tu auras l'explication de ta question ;) (en Cellule B11 de la feuille Interface)


ActiveX Data Objects qui remplcae petit à petit DAO (Data Access Object)...

ADO (ActiveX Data Objects) : est une interface d'accès aux données qui communique avec des sources de données compatibles OLE DB pour la connexion, la récupération, la manipulation et la mise à jour de données...

Bon Week End
@+Thierry
 

Humansoft

XLDnaute Occasionnel
Bonjour,

Voici une autre façon de vérifier si un classeur est déjà oouvert. Je l'utilise dans l'une de mes applications présente sur ce site: GestionVB Vendeurs.

A recopier à l'endroit ou tu veux ouvrir ton fichier:

If IsFileOpen(zs_PatFic + '\\GestionVB Objectifs.xls') Then
MsgBox 'Le classeur demandé est déjà ouvert!', vbOKOnly, zs_Tit
Else
Workbooks.Open zs_PatFic + '\\GestionVB Objectifs.xls'
End If


a mettre dans un module:

Function IsFileOpen(filename As String)
' La Fonction ==================================== :
' Merci a Excellabo.com pour cette fonction. Liée à la macro
' elle permet la vérification de fichier déjà ouvert
' Frédéric Sigonneau, El-Joker, Thierry Rural, (N°701)


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
Case Else
Error errnum
End Select

End Function

Bon dimanche.
Vincent
 

marco57

XLDnaute Occasionnel
Bonjour Vincent et le Forum,
Décidément, maintenant, je suis rudement gâté, j’ai l’embarras du choix. Je te remercie vivement pour ce bout de code.
Il est vrai que j’ai temporairement résolu mon problème initial en m’inspirant grandement du code fourni par le Forum.
Pour l’instant, j’ai opté pour l’ouverture des fichiers sources afin d’en extraire les données souhaitées. Je vais cependant étudier de près cet ADO qui semble être une révolution … pour moi au moins.
Merci encore à vous tous pour votre aide.

Marco57
:)
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 926
Membres
103 984
dernier inscrit
maliko67