Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tester si fichier Excel est ouvert en VBA

3 réponses
Avatar
Annette
Bonjour,

j'ai un sou=E7i tout b=EAte.
Comment, en VBA, tester si tel fichier Excel est d=E9j=E0=20
ouvert ou non ?

Merci beaucoup

Anne

3 réponses

Avatar
papou
Bonjour Annette
Sub test()
On Error Resume Next
Workbooks("Mon CLasseur.xls").Activate
If Err <> 0 Then
MsgBox "Le classeur Mon Classeur.xls n'est pas ouvert"
Else: MsgBox "Le classeur Mon CLasseur.xls est ouvert"
End If
End Sub

Cordialement
Pascal

"Annette" a écrit dans le message de
news:01c401c3aa8b$e8137070$
Bonjour,

j'ai un souçi tout bête.
Comment, en VBA, tester si tel fichier Excel est déjà
ouvert ou non ?

Merci beaucoup

Anne
Avatar
Merci beaucoup Pascal !

-----Message d'origine-----
Bonjour Annette
Sub test()
On Error Resume Next
Workbooks("Mon CLasseur.xls").Activate
If Err <> 0 Then
MsgBox "Le classeur Mon Classeur.xls n'est pas ouvert"
Else: MsgBox "Le classeur Mon CLasseur.xls est ouvert"
End If
End Sub

Cordialement
Pascal

"Annette" a écrit
dans le message de

news:01c401c3aa8b$e8137070$
Bonjour,

j'ai un souçi tout bête.
Comment, en VBA, tester si tel fichier Excel est déjà
ouvert ou non ?

Merci beaucoup

Anne


.



Avatar
Michel Gaboly
Bonjour,

Ou, avec une fonction :

Sub Test()
MsgBox EstOuvert("Mon Classeur.xls")
End Sub

Function EstOuvert(w As String)
Dim Val
On Error Resume Next
Val = Workbooks(w).Worksheets(1).Range("A1")
EstOuvert = Err.Number = 0
End Function

NB - Le résultat sera erroné si le classeur ne comporte
aucune feuille de calcul, mais c'est d'un cas d'école. On
peut le tester en créant un nouveau classeur, auquel on
ajoute une feuille macro XL4 (menu contextuel au niveau
d'un onglet). Il faut ensuite supprimer toutes les feuilles
de calcul et ajouter un module au classeur contenant cette
procédure et la fonction "EstOuvert" :

Sub Test()
MsgBox EstOuvert(ThisWorkbook.Name)
End Sub

La Sub provoque l'affichage de FAUX, l'erreur provenant
de WorkSheets(1), car la collection est vide.

C'est exprès que je n'ai pas mis Sheets(1), car la pre-
mière feuille peut être une feuille graphique, pour laquel-
le Range("A1") n'est pas défini.



Bonjour Annette
Sub test()
On Error Resume Next
Workbooks("Mon CLasseur.xls").Activate
If Err <> 0 Then
MsgBox "Le classeur Mon Classeur.xls n'est pas ouvert"
Else: MsgBox "Le classeur Mon CLasseur.xls est ouvert"
End If
End Sub

Cordialement
Pascal

"Annette" a écrit dans le message de
news:01c401c3aa8b$e8137070$
Bonjour,

j'ai un souçi tout bête.
Comment, en VBA, tester si tel fichier Excel est déjà
ouvert ou non ?

Merci beaucoup

Anne


--
Cordialement,

Michel Gaboly
http://www.gaboly.com