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
Re : VBA Ouverture et fermeture fichier sous condition
Hello,
FileSourceOpen est une variable de type Booléenne qui est mise a VRAI lorsque tu ouvre pour la première fois ton ficher. Apres avec le test IF tu contrôle l'état de cette variable. Si elle est a VRAI cela signifie que ton fichier est déjà ouvert.
Cette variable est ensuite remise a FAUX lorsque tu exécute le code qui ferme ton classeur afin de ne pas bloquer la réouverture.
Etant donner que nous n'avons pas de fichier exemple, il faut ensuite adapter cette proposition à ton problème.
Re : VBA Ouverture et fermeture fichier sous condition
Ton code fonctionne bien ! Mais, si un fichier source (base de donnée) est déjà ouvert, je n'arrive pas à annuler cette manipulation Ouverture / Fermeture pour le laisser ouvert:
If FileSourceOpen = False Then
Application.DisplayAlerts = False
Set OPSourceFile = Workbooks.Open("C:\dossier\base1.xls")
ActiveWorkbook.Close
Set OPSourceFile = Workbooks.Open("C:\dossier\base2.xls")
ActiveWorkbook.Close
FileSourceOpen = True
Else
End If
FileSourceOpen = False
Comme je ne comprends pas bien tout le code, j'ai un peu de difficulté... Désolé.
Re : VBA Ouverture et fermeture fichier sous condition
Re,
Déjà, tu ouvre un fichier, et tu le referme directe avec le code comme sa.
Code:
Set OPSourceFile = Workbooks.Open("C:\dossier\base1.xls") 'ouvre
ActiveWorkbook.Close 'ferme
Etant donné que tu débute, sépart bien les opération d'ouverture et de fermeture des fichiers. De plus y'a un Else dans ton test If qui sers a rien.
Efface les ActiveWorkbooks.close.
Place les a la fin de ta procédure ou alors et effectue la fermeture après un clic sur bouton ou autre chose. C'est assez dur de savoir tes objectifs car tu donne pas d'indication sur "quand un classeur doit être ouvert" et sur "a quel moment ou pour quelle raison on le referme"
Re : VBA Ouverture et fermeture fichier sous condition
bonjour à tous,
perso, j'utilise une autre façon de faire:
Code:
On Error Resume Next
Set Wb = Workbooks("nom_du_fichier.xls")
If Err <> 0 Then Workbooks.Open Filename:="chemin_complet" & "nom_du_fichier_.xls", UpdateLinks:=1 ', ReadOnly=1 (uniquement pour l'avoir en lecture seule)
et fait, avec "set", j'essaye d'activer le fichier, si il n'est pas déjà ouvert (error=0), je l'ouvre, sinon, c'est ok
Re : VBA Ouverture et fermeture fichier sous condition
Re,
Nan mais, il faut bien comprendre que ce ligne ActiveWorkbook.Close va te fermer le classeur au premier plan ouvert. Donc avec le code tel que tu le montre ici. Tu referme systématiquement le classeur juste après l'avoir ouvert.¨
Enlève les ActiveWorkbook.Close et tes classeurs resterons ouvert.
Après tu peux aussi spécifier le classeur que tu veux fermer, sa évite le Activeworkbooks. Tu met "nomduclasseur".close
Re : VBA Ouverture et fermeture fichier sous condition
Bonjour francedemo,
Ton code est intéressant mais dans le cas où le fichier peut s'ouvrir (c'est-à-dire que le test "Le fichier est-il déjà ouvert avant de l'ouvrir ? Si oui, ne pas l'ouvrir. Sinon l'ouvrir et le refermer"), je dois le refermer impérativement.
Or avec ton code le fichier base donnée ne se referme pas...
Re : VBA Ouverture et fermeture fichier sous condition
Re,
Et je comprend pas trop ce que tu essais de faire avec ton code la mais c'est pas trop logique ^^
Code:
If FileSourceOpen = False Then 'Si le fichier est fermé alors on l'ouvre
Set OPSourceFile = Workbooks.Open("c:\dossier\base1.xls")
FileSourceOpen = True
Else 'Si non on le ferme
Workbooks("base1.xls").Close
FileSourceOpen = False
End If
'Pareil pour l'autre
If FileSourceOpen2 = False Then
Set OPSourceFile2 = Workbooks.Open("c:\dossier\base2.xls")
FileSourceOpen2 = True
Else
Workbooks("base2.xls").Close
FileSourceOpen2 = False
End If
Essais ce code ( j'ai pas testé c'est fiat sur le tas )
Re : VBA Ouverture et fermeture fichier sous condition
Okay merci, ce problème est résolu. En revanche, si un fichier de base de donnée est déjà ouvert, la macro ne permet pas de le conserver ouvert. Serait-ce un problème au niveau du Set OPSourceFile = Workbooks.Open("c:\dossier\base1.xls") ? Ne faudrait-il pas définir un fichier sans l'ouvrir et lui donner une condition ?
voici où en est rendu le code:
Set OPSourceFile = Workbooks.Open("c:\dossier\base1.xls")
Workbooks("base1.xls").Close
If FileSourceOpen = False Then
FileSourceOpen = True
End If
FileSourceOpen = False
Set OPSourceFile = Workbooks.Open("c:\dossier\base2.xls")
Workbooks("base2.xls").Close
If FileSourceOpen = False Then
FileSourceOpen = True
End If
FileSourceOpen = False
Re : VBA Ouverture et fermeture fichier sous condition
et non. En fait, il ouvrir bien le fichier de la base mais le referme. Je ne peux donc pas le conserver ouvert s'il est déjà ouvert avant l'activation de la macro...