VBA Ouverture et fermeture fichier sous condition

Egruat

XLDnaute Occasionnel
Bonjour,

Dans un fichier Excel, je dois exécuter une macro indiquant:
- d'ouvrir et de fermer 4 fichiers Excel, qui me servent de base de données, à des emplacements différents sur le C:\
- si l'un des 4 fichiers est déjà ouvert, de ne pas l'ouvrir à nouveau

Pourriez-vous m'aider ?

Cordialement.:cool:
 
Dernière édition:

Vorens

XLDnaute Occasionnel
Re : VBA Ouverture et fermeture fichier sous condition

Re,


reprenons depuis le début,

Dit moi sous quelle condition ton classeur doit ce fermer.

Code:
If FileSourceOpen = False Then 'Si le fichier est fermé alors on l'ouvre
Set OPSourceFile = Workbooks.Open("c:\dossier\base1.xls")
FileSourceOpen = True

End If

'Pareil pour l'autre

If FileSourceOpen2 = False Then
Set OPSourceFile2 = Workbooks.Open("c:\dossier\base2.xls")
FileSourceOpen2 = True


End If

Avec le code là, les classeur ne sont pas fermer, mais la macro ne plante pas si ils sont ouvert. A présent, il faut que tu nous dise sous quelle condition, ton classeur doit être fermé afin de pouvoir creer la procédure de fermeture des fichier.
 

francedemo

XLDnaute Occasionnel
Re : VBA Ouverture et fermeture fichier sous condition

en fait, dans "ThisWorkBook", j'ai la procédure "Sub WorkBook_Open()", dans laquelle je mets le test du fichier :
Code:
On Error Resume Next
    Set Wb = Workbooks("NomFichier1.xls")
If Err <> 0 Then Workbooks.Open Filename:="chemin_complet" &  "NomFichier1_.xls", UpdateLinks:=1   ', ReadOnly=1 (uniquement pour  l'avoir en lecture seule)
que tu peux répéter 4 fois pour tes 4 fichiers...
qui vérifie si le fichier est déjà ouvert, sinon, ça l'ouvre

et, toujours dans "ThisWorkBook", j'ai une autre procédure "Sub Workbook_BeforeClose(Cancel As Boolean)"
dans laquelle j'ai:
Code:
On Error Resume Next
        Workbooks("NomFichier1.xls").Close False
        Workbooks("NomFichier2.xls").Close False
dès que je ferme le fichier maître, les fichiers enfants sont également fermés (en fait, j'ai mis d'autres conditions pour la fermeture, mais ça ne change rien pour toi)

à+
 

Egruat

XLDnaute Occasionnel
Re : VBA Ouverture et fermeture fichier sous condition

Okay, alors:
J'ai un fichier dans lequel j'exécute une macro. Cette macro doit:
1) ouvrir 4 fichiers différents de base de données
2) s'il y a un message d'erreur indiquant qu'un des fichiers est déjà ouvert, ne pas l'ouvrir et rien faire
3) fermer uniquement les fichiers que la macro vient d'ouvrir et conserver les fichiers déjà ouvert avant l'exécution de la macro.

Merci encore pour ton aide précieuse.
 

Egruat

XLDnaute Occasionnel
Re : VBA Ouverture et fermeture fichier sous condition

okay. Voici le code avec ta procédure:

Sub Test()

Application.DisplayAlerts = False

On Error Resume Next
Set Wb = Workbooks("Base1.xls")
If Err <> 0 Then Workbooks.Open Filename:="C:\Dossier\Base1.xls", UpdateLinks:=1 ', ReadOnly=1 (uniquement pour l'avoir en lecture seule)

On Error Resume Next
Workbooks("Base1.xls").Close False
End Sub


Si le fichier "Base1" est déjà ouvert avant l'exécution de la macro, celle-ci en s'exécutant n'ouvre pas de nouveau le fichier mais le ferme systématiquement après, qu'il soit déjà ouvert avant la macro ou pas. Or je voudrais que ce fichier reste ouvert s'il l'est avant l'exécution de la macro.
 

francedemo

XLDnaute Occasionnel
Re : VBA Ouverture et fermeture fichier sous condition

dsl pour le retard,

essaye avec:
If Err <> 0 Then
Workbooks.Open Filename:="C:\Dossier\Base1.xls", UpdateLinks:=1 ', ReadOnly=1 (uniquement pour l'avoir en lecture seule)
x=false
end if

et à la fin:
if x = false then
On Error Resume Next
Workbooks("Base1.xls").Close False
x=true
end if

en fait, j'ajoute une condition "x" (bolean) que je teste pour savoir si le fichier et ouvert par la macro ou avant (x=true si ouvert avant)
à +
 

Discussions similaires

Statistiques des forums

Discussions
312 370
Messages
2 087 685
Membres
103 637
dernier inscrit
Hojee