VBA : Fermeture fichier sous condition

CedricBDO

XLDnaute Nouveau
Bonjour,
Dans une maccro VBA relatif au doc que je nommerai DOC1, j'ouvre un autre document qui est DOC2. Le fait qu'il soit déjà ouvert ne pose aucun problème au fonctionnement de la maccro.

A la fin de ma maccro je ferme le DOC2.

Les étapes se font sous la forme suivante :

Code:
'Ouverture:
Workbooks.Open "C:DOC2.xls"
Set wk0 = ActiveWorkbook 'Correspond au DOC2
Set wk1 = ThisWorkbook 'Correspond au DOC1 relatif à ma maccro

'Fermeture:
wk0.Close

Ce que j'aimerais faire c'est fermer le DOC2 uniquement si celui-ci était fermé à la base. Il faut donc que, si le DOC2 était déjà ouvert avant le lancement de la maccro, celui-ci ne se ferme en aucun cas.

Je remercie ceux qui pourront me venir en aide :)
 

gilbert_RGI

XLDnaute Barbatruc
Re : VBA : Fermeture fichier sous condition

Bonjour

une fonction pour trouvé si le fichier est ouvert ou non

Code:
Function FichierXlsOuvert(NomFichierXls As String) As Boolean
    On Error GoTo erreur
    Dim fichxls As Object
    FichierXlsOuvert = False
    Set fichxls = GetObject(, "Excel.application")
    If fichxls.Workbooks(NomFichierXls).Name = NomFichierXls Then
        FichierXlsOuvert = True
        MsgBox "le fichier est ouvert"
    End If
    Exit Function
erreur:
    MsgBox "le fichier n'est pas ouvert"
End Function
Sub test()
    FichierXlsOuvert ("monfichier.xls")
End Sub
:cool:

ce qui pourrait donner ça
Code:
Public ouv
Function FichierXlsOuvert(NomFichierXls As String) As Boolean
    On Error GoTo erreur
    Dim fichxls As Object
    FichierXlsOuvert = False
    Set fichxls = GetObject(, "Excel.application")
    If fichxls.Workbooks(NomFichierXls).Name = NomFichierXls Then
        FichierXlsOuvert = True
        ouv = 1
       ' MsgBox "le fichier est ouvert"
    End If
    Exit Function
erreur:
ouv = 0
    'MsgBox "le fichier n'est pas ouvert"
End Function
Sub test()
    FichierXlsOuvert ("monfichier.xls")
    'MsgBox ouv
    If ouv = 0 Then
    MsgBox "le fichier  n'est pas ouvert"
    'ActiveWorkbook.Close
    Else
    MsgBox "le fichier  est ouvert"
    End If
End Sub
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : VBA : Fermeture fichier sous condition

Bonjour,

une autre approche :
Code:
Option Explicit
Sub test()
Dim wb As Workbook, b As Boolean
On Error Resume Next
Set wb = Workbooks("Classeur1.xls")
If Err <> 0 Then Set wb = Workbooks.Open("Classeur1.xls"): b = True
On Error GoTo 0
'ton traitement
If b Then wb.Close
End Sub
bonne journée
@+
 
C

Compte Supprimé 979

Guest
Re : VBA : Fermeture fichier sous condition

Bonjour le fil

Sur l'idée de Pierrot93 avec ton exemple de départ (peut être plus explicite)
Code:
Sub Test()
  Dim Wbk As Workbook, Flag As Boolean
  On Error Resume Next
  Set Wbk = Workbooks("DOC2.xls")
  If Err <> 0 Then Set Wbk = Workbooks.Open("C:\DOC2.xls"): Flag = True
  On Error GoTo 0
  'ton traitement
  If Flag = True Then Wbk.Close
End Sub

A+
 

CedricBDO

XLDnaute Nouveau
Re : VBA : Fermeture fichier sous condition

Nickel ca marche. j'avais déjà pensé à rajouter le = true en dernière ligne mais en fait je mettais le le chemin d'accès entier au début au lieu de mettre juste le nom du fichier.
Merci Bruno.
 

Discussions similaires

Statistiques des forums

Discussions
312 413
Messages
2 088 199
Membres
103 765
dernier inscrit
Pi4