Ne pas exécuter si le classeur est ouvert

Bonjour , je lance un code à partir d'un classeur pour ouvrir un autre classeur.

Workbooks.Open Filename:=ThisWorkbook.Path & "\Synthèse"

Si le classeur " Synthèse" est déjà ouvert je ne voudrais pas exécuter le code ci dessus pour ne pas avoir de message d'erreur.

Merci pour votre aide car je tourne le problème dans tous les sens sans solution.

Bonjour

Une solution (pas trop simple) peut-être avec On error resume next on pourrait simplifier

Sub test()
Dim Wb As Workbook
Dim Ouvert As Boolean

  For Each Wb In Workbooks
      If Wb.Name = "Synthèse.xls" Then
      Ouvert = True
      Exit For
    End If
  Next Wb
  If Ouvert = False Then
     MsgBox "Ouverture du fichier"
    'Workbooks.Open Filename:=ThisWorkbook.Path & "\Synthèse"
  End If

End Sub

Bonjour

En l'activant d'abord (s'il est ouvert)

Sub Active_Ouvre()
On Error Resume Next
Workbooks("Synthèse.xls").Activate
Workbooks.Open Filename:=ThisWorkbook.Path & "\Synthèse.xls"
End Sub

Cordialement

Bonjour Banzai: Télescopage évité de peu Bon Week

Bonjour,

rajoute cette macro dans un module standart de ton classeur (Module1)

Function WbIsOpen(WbName As String) As Boolean
On Error Resume Next
WbIsOpen = Not Workbooks(WbName) Is Nothing
End Function

Ensuite modifie le code de ta macro comm suit :

If Not WbIsOpen("Synthèse.xls") Then
Workbooks.Open Filename:=ThisWorkbook.Path & "\Synthèse"
End If

Attention à bien respecter la syntaxe (Nom du classeur + extension) pour vérifier si le classeur est ouvert.

Nota : L'ensemble des réponses de tous les participants ne s'applique que si tu es la seule à ouvrir ce classeur Synthèse. Si le classeur est en réseau et que d'autres utilisateurs peuvent ouvrir ce classeur en même temps, c'est un tout autres problème...

A+

Merci , j'ai utilisé le code de Benzai64 ; c'est parfait.

A bientôt

Rechercher des sujets similaires à "pas executer classeur ouvert"