Voici ma 2eme question
SI A4 EST DIFFERENT DE A3 = Le classeur aura été renommé
Mon but est de BLOQUER SON UTILISATION en le Fermant et l'enregistrer avec un "NOM DE FICHIER" = contenu de A3
Exposé de l'action :
1 si le classeur ouvert na pas été renommé Grâce au code de Gérard, au clic sur la X pour fermer = enregistre, ferme le fichier et quitte l'application
2 Si le classeur ouvert a été renommé
Préalable :
la cellule A3 contient le Nom du fichier donné à la fermeture précédente
la cellule A4 contient le Nom du fichier qui est ouvert
Action :
au clic sur la X pour fermer :
= Fermer et enregistrer avec "NOM DE FICHIER" = contenu de A3
J'ai fait des recherches et tenté quelques codes sans succès
Auriez-vous le bon code ?
Je joins le fichier test
Un grand merci à toutes et à tous,
Je continue mes recherches....
Sub Sauve()
Dim Chemin$, Nom$
NomFichier = Range("A3") ' A modifier
Chemin = ThisWorkbook.Path & "\" ' A modifier si différent du dossier courant, doit se treminer par "\"
ActiveWorkbook.SaveAs filename:=Chemin & NomFichier, Password:=MotDePasse
End Sub
A mettre dans un module et :
Code:
Private Sub Workbook_Open()
[A4].Value = ThisWorkbook.Name: [A4].Value = [a7]
If [A3] <> [A4] Then
MsgBox ("Hola ! Ce fichier a été renommé : " & [A4].Value)
Application.EnableEvents = True
Sauve
If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End If
End Sub
'Gérard
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If [A3] = [A4] Then
Dim wb As Workbook
For Each wb In...
Sub Sauve()
Dim Chemin$, Nom$
NomFichier = Range("A3") ' A modifier
Chemin = ThisWorkbook.Path & "\" ' A modifier si différent du dossier courant, doit se treminer par "\"
ActiveWorkbook.SaveAs filename:=Chemin & NomFichier, Password:=MotDePasse
End Sub
A mettre dans un module et :
Code:
Private Sub Workbook_Open()
[A4].Value = ThisWorkbook.Name: [A4].Value = [a7]
If [A3] <> [A4] Then
MsgBox ("Hola ! Ce fichier a été renommé : " & [A4].Value)
Application.EnableEvents = True
Sauve
If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End If
End Sub
'Gérard
Private Sub Workbook_BeforeClose(Cancel As Boolean)
If [A3] = [A4] Then
Dim wb As Workbook
For Each wb In Workbooks
If wb.Name <> Me.Name Then wb.Close wb.Path <> "" 'sauvegarde uniquement si le fichier est enregistré
Next
Me.Save
Application.Quit 'ferme Excel
End If
End Sub
Re-Bjr : supprimer le mauvais fichier (celui qui avait été renommé)
J'ai fait pas mal de recherches et tentatives sans vraiment y arriver Grrrr!!!!!
Voici le code que j'ai retenu mais qui ne fonctionne pas :
VB:
Sub suppr() 'Note le backslash (\) en fin du répertoire
Const Lw = "c:\"
Const path = "c:\"
Const file = Range("A4")
On Error GoTo error:
Kill file
MsgBox " Classeur " & file & "a été supprimé!"
Exit Sub
error:
MsgBox " Impossible de trouver un fichier avec le nom " & _
file & " être trouvé!"
End Sub
Il me donne cette erreur :
Si vous voulez bien m'aider, je joins le fichier...
Et le continue mes recherches
Avec cette version tu n'auras plus de message si le fichier n'existe pas
VB:
Sub Sup()
On Error Resume Next
Chemin = "C:\"
Kill Chemin & Range("A4").Value & ".xlsm"
If Err = 53 Then
MsgBox "Pas de fichier à supprimer"
Exit Sub
End If
MsgBox "Fichier supprimé"
End Sub
C:\ est la lettre sur le disque dur ou est ton fichier
Et A4 ==> Nom du fichier à supprimer
Ton fichier sur le DD devait être ==> C:\Nom du fichier à supprimer
Avec cette version tu n'auras plus de message si le fichier n'existe pas
VB:
Sub Sup()
On Error Resume Next
Chemin = "C:\"
Kill Chemin & Range("A4").Value & ".xlsm"
If Err = 53 Then
MsgBox "Pas de fichier à supprimer"
Exit Sub
End If
MsgBox "Fichier supprimé"
End Sub
C:\ est la lettre sur le disque dur ou est ton fichier
Et A4 ==> Nom du fichier à supprimer
Ton fichier sur le DD devait être ==> C:\Nom du fichier à supprimer
Exact...
Mais j'ai ce message :
Pourtant mes 2 fichiers sont bien sur mon "bureau".
- enregistrer sous 2023 06 05 est le fichier qui a été renommé et ouvert,
- enregistrer sous 2023 06 03 est le fichier avec le nom d'origine qui a été sauvegardé
Lionel
Je doute que C:\enregistrer sous 2023 06 05 soit le chemin de ton fichier mais plutôt
C:\Users\TONUSER\Desktop
VB:
Sub Sup()
On Error Resume Next
Chemin = Environ("UserProfile") & "\Desktop\"
Kill Chemin & Range("A4").Value & ".xlsm"
If Err = 53 Then
MsgBox "Pas de fichier à supprimer"
Exit Sub
End If
MsgBox "Fichier supprimé"
End Sub