Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA : Fermeture fichier sous condition

  • Initiateur de la discussion Initiateur de la discussion CedricBDO
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

CedricBDO

Guest
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 🙂
 
Re : VBA : Fermeture fichier sous condition

J'avais pensé à ça mais ca e marche pas.

Code:
Dim Condition as Long
If wk0.Open = True Then
Condition = 1
Else
Condition = 0
End If

If Condition = 0 Then
wk0.Close
End If
 
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
😎

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:
Re : VBA : Fermeture fichier sous condition

Merci pour ta réponse, mais n'existerait-il pas une solution plus simple, un peu dans le style de la proposition que j'ai postée, maios qui ne marche bien évidemment pas?
 
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
@+
 
Re : VBA : Fermeture fichier sous condition

Malheureusement, le fichier Classeur1.xls est toujours fermé en fin de maccro avec ta solution Pierrot.

Tu ne saurais pas d'où ça vient?

Merci
 
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+
 
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.
 
Re : VBA : Fermeture fichier sous condition

Pierrot :

euh... comprends pas trop, chez moi si classeu1 déjà ouvert il ne se ferme pas à la fin....

En fait c'etait de ma faute, comme tu peux le lire dans mon message précédent.
Merci pour ton aide en tout cas.
 
Re : VBA : Fermeture fichier sous condition

Re,

A noter qu'il est préférable d'indiquer le chemin lors de l'utilisation de la méthode "open", dans le cas contraire cherchera le fichier uniquement dans le répertoire courant...
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

O
Réponses
5
Affichages
2 K
C
Réponses
3
Affichages
20 K
CedricBDO
C
J
Réponses
1
Affichages
1 K
Johann60
J
A
Réponses
1
Affichages
7 K
Antony
A
N
  • Question Question
Réponses
5
Affichages
3 K
R
Réponses
1
Affichages
7 K
H
Réponses
1
Affichages
2 K
homerlehamster
H
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…