XL 2013 vba fermeture d'un fichier uniquement si la macro la ouvert

Cobra

XLDnaute Nouveau
Bonjour a tous,

Pourriez-vous m'aider. j'ai une macro qui ouvre un fichier s'il n'est pas encore ouvert (jusque là pas de problème) mais je voudrais que lorsque la macro est finie elle referme le fichier uniquement si il a été ouvert par la macro
voici le code pour l'ouverture

On Error Resume Next
Workbooks("encodage.xlsm").Activate

' Si une erreur est renvoyée, fichier non ouvert
If Err.Number <> 0 Then

'ouvre encodage
Application.Workbooks.Open "C:\Users\" & Client & "\Dropbox\cobra\Comptabilite\2021\encodage.xlsm"
End If
On Error GoTo 0
-
-
teste si fichier ouverte par la macro
?
Application.DisplayAlerts = False
ActiveWorkbook.Close SaveChanges:=False
Application.DisplayAlerts = True

En vous remerciant d'avance pour votre aide
 

Dranreb

XLDnaute Barbatruc
Bonjour
Je ferais comme ça :
VB:
Sub Macro1()
   Dim Wbk As Workbook, Client As String, OuvertParMacro As Boolean
   Client = "Toto" ' à adapter
   On Error Resume Next
   Set Wbk = Workbooks("encodage.xlsm")
   OuvertParMacro = Err.Number <> 0
   If OuvertParMacro Then
      Err.Clear
      Set Wbk = Application.Workbooks.Open("C:\Users\" & Client & "\Dropbox\cobra\Comptabilite\2021\encodage.xlsm")
      If Err Then MsgBox "Impossible d'ouvrir le fichier", vbCritical, "Macro1": Exit Sub
      End If
   On Error GoTo 0
   …
   If OuvertParMacro Then Wbk.Close SaveChanges:=False
   End Sub
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Servez vous de la balise de code (bouton </> ) pour éditer vos lignes vba.
Essayez ceci :
VB:
Sub truc()
    Dim EtaitOuvert As Boolean
    On Error Resume Next
    Workbooks("encodage.xlsm").Activate
    On Error GoTo 0 ' Mettre ici le on error goto 0 pour ne pas masque d'autres erreurs possibles plus loin
    ''
    ' Si Pas d'erreur le fichier était ouvert sinon il était fermé
    EtaitOuvert = Err.Number = 0
    '
    ' L'ouvrir éventuellement
    If Not EtaitOuvert Then
        Application.Workbooks.Open "C:\Users\" & Client & "\Dropbox\cobra\Comptabilite\2021\encodage.xlsm"
    End If

    'Ferme le fichier sans enregistrer les modifications si la macro la ouvert
    If Not EtaitOuvert Then Workbooks("encodage.xlsm").Close False

End Sub
Cordialement

[Edit] Oups ! trop tard :)
 

Discussions similaires

Statistiques des forums

Discussions
312 030
Messages
2 084 781
Membres
102 665
dernier inscrit
Distri