enregistrer un classeur et ouvrir un autre

Blafi

XLDnaute Occasionnel
Bonjour à tous ,

Quelqu'un peut-il m'aider à résoudre mon pb car je ne sais quel code VBA employer :

J'ai un classeur 1 qui est ouvert et sur lequel je travaille.

A la fin de ce travail, j'ai une macro qui devrait :
1 - enregistrer ce classeur et le fermer (ça je sais faire)
2 - ouvrir un classeur 2 s'il n'est pas déja ouvert (ça je ne sais pas !)

ma question est en fait comment dire " si le classeur 2 est déja ouvert, ne rien faire; dans le cas contraire l'ouvrir et le désigner comme classeur actif"..

C'est certainement assez simple mais j'y arrive pas ..

Merci d'avance de vos réponses et à bientôt..
 

Blunet

XLDnaute Occasionnel
Re : enregistrer un classeur et ouvrir un autre

Salut Blafi faut-il considérer que l'emplacement du fichier à ouvrir est connu d'avance ?
Si c'est le cas alors :
Workbooks.Open Filename:= _
"Chemin\NomClasseur.xls"
Dans le code du Classeur à Fermer, l'exécution de ce code doit se faire ben entendu avant la fermeture.
Ciao
 
Dernière édition:

Blafi

XLDnaute Occasionnel
Re : enregistrer un classeur et ouvrir un autre

Merci Brunet pour ta réponse rapide...

J'ai pris bonne note de ton code et pour répondre à ta question : oui le chemin du fichier est connu d'avance, donc je le mettrai...

Par contre, est-ce que je ne risque pas d'avoir un blocage si le fichier en question est déja ouvert ? ( ce que l'utilisateur n'est pas sensé savoir)
c'est pourquoi je demandais la manière de dire "si le fichier est ouvert , ne rien faire..."

Merci de cette précision.
A ++
 

Catrice

XLDnaute Barbatruc
Re : enregistrer un classeur et ouvrir un autre

Bonsoir,

Tu peux tester si le fichier est deja ouvert comme ceci :

Sub Test()
ATester = "Test.xls"
For Each X In Workbooks
If X.Name = ATester Then Ouvert = True Else Ouvert = False
Next
If Ouvert Then Workbooks(ATester).Activate Else Workbooks.Open Filename:=ATester
End Sub
 

ftho

XLDnaute Occasionnel
Re : enregistrer un classeur et ouvrir un autre

Bonjour tlm,

Ce que propose Catrice, vérifie si le classeur est ouvert sur son propre pc.

Dans le cas où l'on doit vérifier si un autre utilisateur l'a ouvert.
A condition que ce n'est pas un classeur "partagé", si un utilisateur l'a ouvert, le second utilisateur ouvrira ce classeur en lecture seule, il y a donc moyen de vérifier cette propriété.
Code:
Sub test_readonly()
Dim Wbk As Workbook

Application.ScreenUpdating = False
Set Wbk = Workbooks.Open(Filename:="D:\test.xls")

If Wbk.ReadOnly = True Then
    Wbk.Close False
    MsgBox "le fichier est déjà ouvert par un autre utilisateur"
End If
Application.ScreenUpdating = True

End Sub
 
Dernière édition:

Blafi

XLDnaute Occasionnel
Re : enregistrer un classeur et ouvrir un autre

Re bonjour...

Merci Catrice et ftho pour vos solutions...

Le système de Catrice me convient parfaitement car les fichiers sont sur un seul ordinateur. Je garde quand mçeme la solutions de ftho si un jour j'en ai besoin...

Encore merci et à ++ sur cet excellent forum...
 

Discussions similaires

Réponses
19
Affichages
673

Statistiques des forums

Discussions
312 556
Messages
2 089 588
Membres
104 215
dernier inscrit
Jean Michl