Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2021 Fermer et enregistrer avec "NOM DE FICHIER" = contenu de A3

Usine à gaz

XLDnaute Barbatruc
Bonjour à toutes et à tous et bon et beau WE

Dans la continuité de ce fil : https://excel-downloads.com/threads...t-dou-il-a-ete-ouvert.20076612/#post-20587395

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....
 

Pièces jointes

  • enregistrer sous.xlsm
    24.1 KB · Affichages: 4
Dernière édition:
Solution
Re-Bjr
La solution :

VB:
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...

Usine à gaz

XLDnaute Barbatruc
Bjr Gérard, Bjr Phil69970, Bjr le forum
Je vous souhaite un beau dimanche

@Phil69970
Je confirme, ton code fonctionne très bien....
J'ai juste un petit soucis :
Quand le fichier ouvert (donc à supprimer) est sur le bureau, pas de souci, il est trouvé et supprimé.
Mais quand il se trouve dans un dossier : il n'est pas trouvé.
Il y aurait une solution ?
le code :
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 renommé supprimé"
End Sub
Je continue à chercher...
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…