VBA : contrôler si un classeur est ouvert

Bonjour le forum!

mon problème est le suivant :

je veux ouvrir un UserForm à l'ouverture de mon classeur si et seulement si le classeur nommé "récap et graphes" n'est pas ouvert.

le code devrait ressembler à quelque chose comme mon problème est en rouge:

Private Sub Workbook_Open()

If (Workbooks("récap et graphes").Activate = False) Then

frmAccueil.Show

Workbook("données stats").Worksheets("base").Select

End If

End Sub

voilà.

Merci beaucoup à vous pour vos réponses!

pierre

Bonjour,

Essaie ceci :

Private Sub Workbook_Open()
On Error GoTo fin
Workbooks("récap et graphes").Activate
frmAccueil.Show
Workbooks("données stats").Worksheets("base").Select
Exit Sub
fin:  End
End Sub

Amicalement

Dan

Bonjour

Tu peux aussi tester ce code

Cordialement

Private Sub Workbook_Open()

Dim WB As Workbook

Dim Ouvert As Boolean

If Workbooks.Count > 1 Then 'Si il y a plus d'un classeur ouvert

For Each WB In Workbooks 'Pour chaque classeur

If LCase(WB.Name) = "récap et graphes" Then 'comparer le nom du classeur

Ouvert = True

Exit For

End If

Next

End If

If Not Ouvert Then

frmAccueil.Show

Workbooks("données stats").Worksheets("base").Select

End If

End Sub

Merci beaucoup, nat-dan et demeb!

j'ai essayé vos deux codes :

celui de nat-dan fait l'inverse de ce que je voulais, i.e. il ouvre le formulaire si l'autre fichier est ouvert et pas sinon, en modifiant un peu (passer les instructions après le end) ça joue bien.

et celui de demeb marche bien aussi.

ce qui me semble bizarre c'est que les deux sont "tricky" et que l'on ait pas de solution directe et propre...

mais ça marche bien donc ça me plaît.

Merci encore!

Bonsoir,

une autre solution :

Dim X As Byte
On Error Resume Next
X = Len(Workbooks("récap et graphes.xls").Name)
If X > 0 Then MsgBox "classeur ouvert"

Bonne soirée

Rechercher des sujets similaires à "vba controler classeur ouvert"