S'assurer qu'un fichier n'est pas ouvert avant de l'ouvrir (VBA)
Quand une macro VBA doit ouvrir un fichier, il peut être bon de s'assurer que le fichier
n'est pas déjà ouvert, afin d'éviter un message intempestif de Excel vous
signalant que le fichier est déjà ouvert, et surtout d'éviter la
perte de données si le fichier déjà ouvert n'a pas été
enregistré.
• Une solution parmi d'autres, aller vérifier si le fichier à ouvrir
(zaza.xls dans l'exemple)
figure dans la liste des fichiers ouverts, c'est à dire dans la collection Workbooks :
estouvert = False
For Each fich In Workbooks
If fich.Name = "zaza.xls" Then estouvert = True
Next
If estouvert = False Then Workbooks.Open ("c:\zaza.xls")
La macro compare le nom de chaque fichier de la collection Workbooks à "zaza.xls".
Si aucun fichier ouvert n'a pour non zaza.xls, alors la macro ouvre la fichier zaza.xls.
• Une autre solution consiste à utiliser la gestion d'erreurs : si on tente
d'activer un classeur qui n'est pas ouvert, Excel va générer une erreur
que VBA peut intercepter :
estouvert = False
On Error GoTo ouvre
Workbooks("zaza.xls").Activate
On Error GoTo 0
estouvert = True
ouvre:
If estouvert = False Then Workbooks.Open ("c:\zaza.xls")
• Enfin, si on est sur de de pas souhaiter
enregistrer d'éventuelles modifications du fichier quand il est déjà ouvert,
il suffit de bloquer le message d'Excel
"zaza.xls est déjà ouvert.
Si vous l'ouvrez à nouveau, toutes vos modifications seront perdues.
Voulez vous rouvrir zaza.xls ?" :
Application.DisplayAlerts = False
Workbooks.Open ("c:\zaza.xls")
Application.DisplayAlerts = True