VBA: Comment savoir si un fichier est louvert ?

MJ13

XLDnaute Barbatruc
Bonjour à tous

Je cherche un code en VBA pour savoir si dans mes fichiers ouverts dans Excel le nom (par exemple le fichier NW) est ouvert.

Merci d'avance :).
 

xyam

XLDnaute Nouveau
Re : VBA: Comment savoir si un fichier est louvert ?

Salut,
Je sais pas comment tu ouvres tous tes fichiers Excel,
moi je laisse à l'utilisateur le choix d'ouvrir n'importe lequel,
et pour switcher entre tous j'utilise la fonction suivante :
Code:
NomduClasseur=ActiveWorkbook.Name
qui te permet de connaitre le nom du classeur actuel

Si ça peut aider ;)
 

Kiseki

XLDnaute Occasionnel
Re : VBA: Comment savoir si un fichier est louvert ?

Bonjour,

J'ai vu ce code sur internet :

Code:
Dim lWorkbook As Workbook
    Dim lFound As Boolean
    
    lFound = False
    For Each lWorkbook In Workbooks
        If lWorkbook.Name = "NW" Then
            lFound = True
            Exit For
        End If
    Next
    If lFound Then
        <Cas ou le fichier "NW" existe>
    End If
 

laetitia90

XLDnaute Barbatruc
Re : VBA: Comment savoir si un fichier est louvert ?

bonjour Michel :):),Kiseki
on peut utiliser aussi un gestionnaire d'erreur
exemple

Code:
Sub es()
Dim fichier As String, x As Workbook
fichier = "MJ13.xls"
On Error Resume Next
Set x = Workbooks(fichier)
If Err = 0 Then
MsgBox fichier & " ouvert"
'ton code
Else
MsgBox fichier & " fermer"
'ton code
End If
On Error GoTo 0
End Sub
attention a l'extension dans exemple .xls

ps :eek:ubli bonjour xyam
 
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : VBA: Comment savoir si un fichier est louvert ?

Bonjour Kiseki ,Xyam, Laetitia

Merci beaucoup pour vos réponses qui de ce fait m'ont ausssi fait aller sur le net et la je rejoins le code de kiseki :).

Voici mon code final: avec dossier en B1, Nom de fichier en Colonne A et feuilles en lignes en face du nom du fichier.


Merci à tous :):).

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim NomW As String, NomWP As String, NomF As String, NW As Workbook
NomWP = Cells(1, 2) & "\" & Cells(ActiveCell.Row, 1).Value
NomW = Cells(ActiveCell.Row, 1)
NomF = ActiveCell.Value
'http://www.commentcamarche.net/forum/affich-452291-vba-excel-savoir-si-un-fichier-est-ouvert
Dim lWorkbook As Workbook
    Dim lFound As Boolean
 
    lFound = False
    For Each lWorkbook In Workbooks
        If lWorkbook.Name = NomW Then
            lFound = True
            Exit For
        End If
    Next
    If lFound Then GoTo Suite
 
    'End If
 
Workbooks.Open Filename:=NomWP
Suite:
Workbooks(NomW).Activate
'Active toutes les feuilles
nc = ActiveWorkbook.Sheets.Count
For N = nc To 1 Step -1
    Sheets(N).Visible = True
    Sheets(N).Activate
    'If ActiveWorkbook.Sheets(N).Type <> 3 Then Cells(1, 1).Select
Next
'sélectionne la feuille
Sheets(NomF).Select
End Sub
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : VBA: Comment savoir si un fichier est louvert ?

Salut

j'aurais fait :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim NomW As String, NomWP As String, NomF As String, NW As Workbook
    Dim  N As Byte
    NomW = Cells(ActiveCell.Row, 1)
    NomWP = Cells(1, 2) & "\" & NomW
    NomF = ActiveCell.Value
    If NomF = "" Then Exit Sub
    Dim lWorkbook As Workbook
    For Each lWorkbook In Workbooks
        If lWorkbook.Name = NomW Then GoTo Suite
    Next
    Workbooks.Open Filename:=NomWP
Suite:
    Workbooks(NomW).Activate
    For N = 1 To ActiveWorkbook.Sheets.Count
        Sheets(N).Visible = True     'Affiche toutes les feuilles
    Next
    Sheets(NomF).Select   'sélectionne la feuille
End Sub
 

MJ13

XLDnaute Barbatruc
Re : VBA: Comment savoir si un fichier est louvert ?

Bonjour aussi à SI...

Merci Si... pour cette adaptation. C'est vrai que ça raccourci bien :eek:.

Mais il manque le début de mes macros pour avoir la liste des fichiers dans le dossier en B1 de la feuille et la liste des feuilles des fichiers sélectionnés en colonne A :).

Voila, vous avez une petite application sympa à faire par vous même comme au bon vieux temps du Mécano ;).



Code:
Option Explicit
Sub Test()
'http://forum.hardware.fr/hfr/Programmation/VB-VBA-VBS/liste-fichiers-repertoire-sujet_57846_1.htm
    'ChDir "C:\...Mon chemin....\Mes documents"
    Range("2:100").Clear
    
    Dim i  As Byte, z As String
        ChDrive Left(Cells(1, 2), 1)
    ChDir Cells(1, 2).Value
    i = 1
z = Dir("*.xls", 1)
    While z <> ""
    ActiveSheet.Cells(i + 1, 1).Value = z
    i = i + 1
    z = Dir
    Wend
End Sub
Sub Liste_feuilles_Selection()
Dim cell As Object, FAO As String, i As Integer, N As Integer, nc As Integer
For Each cell In Selection
FAO = Cells(1, 2) & "\" & cell.Value
Workbooks.Open (FAO)
nc = ActiveWorkbook.Sheets.Count
For N = nc To 1 Step -1
    Sheets(N).Visible = True
    Sheets(N).Activate
    If Sheets(N).Type <> 3 Then Cells(1, 1).Select
Next
For i = 1 To nc  ' Step -1
cell.Offset(0, i) = Sheets(i).Name
Next
ActiveWorkbook.Close 0
Next
'MEF centrer etenvoie à la ligne auto
Selection.CurrentRegion.Select
With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
End With
End Sub
 

Discussions similaires

Réponses
9
Affichages
440
Réponses
0
Affichages
147

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87