Vérifier si fichier deja ouvert, adaptation à mon cas

  • Initiateur de la discussion Initiateur de la discussion Zarkoff
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Z

Zarkoff

Guest
Bonjour,

J'ai attentivement regardé la macro de thierry ici:
http://www.excel-downloads.com/html/French/forum/messages/1_7348_7348.htm

Je n'arrive cependant pas à l'adapter :
Voici mon code :

Workbooks.Open Filename:=Open_File
MsgBox "Please save this file as a backup to not work on Vendor File", vbOKOnly
save_name = "Scan-Upload File-" & Format(month_form, "00") & "-" & WorksheetFunction.Proper(Right(year_form, 2))
save_file = Application.GetSaveAsFilename(InitialFilename:=save_name, fileFilter:="Excel Files (*.xls), *.xls")
'
On Error Resume Next
Workbooks(save_file).Activate
If Err = 0 Then Workbooks(save_file).Close
'
If save_file <> False Then
ActiveWorkbook.SaveAs Filename:=save_file, CreateBackup:=False
MsgBox "Save as " & save_file, vbOKOnly, "Work File"
Else: MsgBox "You must save this file", vbOKOnly: GoTo Fin3
End If

Bref le VB Code n'arrive pas à voir que le fichier est deja ouvert.
Peut-être est-ce parce que la variable "save_file" est de la forme
c:\repertoire\scan-upload file-09-03.xls il faudrait peut-être qu'il n'y ait pas le chemin mais je ne sais pas comment l'enlever de mon string (wouarf).

Merci de m'éclairer.
 
Bonjour Zarkoff et le forum,


D'aprés ce que je comprends, tu veux enregitrer la classeur save_file dans le répertoire que choisit l'utilisateur. En essayant de faire un saveas si le classeur est déjà ouvert, on a une erreur 1004 normalement:

save_name = "Scan-Upload File-" & Format(month_form, "00") & "-" & WorksheetFunction.Proper(Right(year_form, 2))
save_file = Application.GetSaveAsFilename(InitialFilename:=save_name, fileFilter:="Excel Files (*.xls), *.xls")
'

If save_file <> False Then
on error resume next
ActiveWorkbook.SaveAs save_file
if err.number=1004 then workbook(save_filename).close 0 'Il est ouvert
MsgBox "Save as " & save_file, vbOKOnly, "Work File"
Else: MsgBox "You must save this file", vbOKOnly: GoTo Fin3
End If


Sinon mets le code complet de ta procédure d'enregistrement, car il manque ton fin3, la variable openfile...


A+++
 
Zon,

Premièrement merci pour ta réponse très rapide.

J'ai donc testé :

month_form, provient d'un formulaire
year_form, provient d'un formulaire

MsgBox "Please load Vendor File", vbOKOnly
Open_File = Application.GetOpenFilename("All Type (*.*), *.*")
If Open_File = False Then GoTo Fin3
Workbooks.Open Filename:=Open_File
MsgBox "Please save this file to not work on Vendor File", vbOKOnly
Again:
save_name = "Scan-Upload File-" & Format(month_form, "00") & "-" & WorksheetFunction.Proper(Right(year_form, 2))
save_file = Application.GetSaveAsFilename(InitialFilename:=save_name, fileFilter:="Excel Files (*.xls), *.xls")
'
' CHECK IF THIS FILE IS ALREADY OPEN !!!
If save_file <> False Then
On Error Resume Next
ActiveWorkbook.SaveAs Filename:=save_file ', CreateBackup:=False
If Err.Number = 1004 Then Workbooks(save_name).Close 0
MsgBox "Save as " & save_file, vbOKOnly, "Work File"
Else: MsgBox "You must save this file", vbOKOnly: GoTo Again
End If

Fin3
Exit Sub

Alors voila ce qui se passe :
- Open_file est le fichier source, vu que la macro va travailler pour le modifier, je demande à l'utilisateur de sauvegarder sous un autre nom (pour éviter tout problème)
- L'utilisateur est invité à sauvegarder sous le save_name mais peut le changer !

Le code modifié ne fait deja plus planter la macro, c'est deja ca mais :
si un fichier indentique au save_name est deja ouvert, la macro enregistre le nouveau fichier sous open_file et travail dessus :-((

Je ne comprends pas ou est l'erreur.

NB :
Open_file est du type 'c:\repertoire\nom_fichier_source.xls'
Save_name est du type 'nom_du_fichier_cible' (sans .xls, mais j'ai essayé en le rajoutant, ca ne change rien)
Save_file est du type 'c:\repertoire\nom_fichier_destination.xls'
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour