XL 2010 test ouverture de classeur

Phillip

XLDnaute Occasionnel
Bonjour,

J'essaie de faire un test d'ouverture sur un classeur.

1) s'il est déjà ouvert, je ne fais rien (ou je passe au code suivant qui fait d'autres opérations dessus)
2) s'il est fermé je l'ouvre.

or, le code du fichier excel joint
- tente de l'ouvrir une seconde fois, c'est à dire qu'il ne détecte pas le classeur déjà ouvert si le code est dans le classeur
- ne semble pas l'ouvrir une seconde fois si le code est dans personal.xlbs mais

dans tous les cas :

- ne m'affiche pas ma message box prévue
- si on fait pas à pas, passe plusieurs fois la boucle de test d'ouverture (!?).

Je ne comprends pas...

merci de vos lumières

merci

Cordialement
 

Pièces jointes

  • testouverture.xlsm
    17.2 KB · Affichages: 21

Papou-net

XLDnaute Barbatruc
Re : test ouverture de classeur

Bonjour Phillip,

Il ne faut pas mentionner le chemin du classeur.

Essaie comme ceci:

Code:
Sub testouverture()
Dim VClasseur As Workbook

For Each VClasseur In Workbooks
If VClasseur.Name = "testouverture.xlsm" Then
MsgBox "Workbook " & VClasseur.Name & " déja ouvert"
'==============================================================================================================
     Exit For
    End If
   Next VClasseur
    If VClasseur Is Nothing Then
    '  si le fichier est fermé, je l'ouvre
        Workbooks.Open Filename:= _
        "C:\xxxx\xxxx\Desktop\testouverture.xlsm"
     End If
End Sub
A +

Cordialement.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : test ouverture de classeur

Bonjour Phillip, Papou, bonjour le forum,

D'accord avec Papou-Net ! Une autre méthode :

Code:
Public Sub Macro1()
Dim CL As Workbook 'déclare la varaible CL (CLasseur)

On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set CL = Workbooks("Le_Classeur_à_tester.xlsx") 'définit le classeur CL (génère une erreur si ce classeur n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été généré
    Err.Clear 'supprime l'erreur
    Workbooks.Open ("C:\xxx\xxx\xxx\Le_Classeur_à_tester.xlsx") 'ouvre le classeur
    Set CL = ActiveWorkbook 'définit le classeur CL
End I 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
End Sub

Ensuite j'utilise la variable CL chaque fois que je veux faire appel à ce classeur...
 

Discussions similaires

Statistiques des forums

Discussions
312 765
Messages
2 091 878
Membres
105 084
dernier inscrit
lca.pertus