renommage fichier à la fermeture

  • Initiateur de la discussion steeve
  • Date de début
S

steeve

Guest
re-bonsoir,

Je voudrai effectuer l'action suivante sur mon fichier excel:

lors de la fermture du fichier (clic sur la croix ou fichier quitter), je voudrai le sauvegarder sous le nom d'une cellule spécifier dans ma première feuille. De plus je voudrai qu'il s'enregistre sous le répertoire courant.

J'ai utiliser ceci mais qui n'a pas l'air de fonctionner:

dans le ThisWorkbook, j'ai placé cette fonction:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

ActiveWorkbook.SaveAs Filename:= Range('B5').Value
End Sub
(il me manque à indiquer le répertoire courant...)

D'autre part, si j'ouvre et je ferme mon fichier plusieurs fois, il va me dire 'un fichier sous le nom de... existe déjà voulez-vous le remplacer' si je mets non, il m'ouvre le debugger.

Est-ce que quelqu'un a déjà eu ce pb, ou alors pourrait me donner le code adéquat pour faire cela.

Merci par avance pour vos réponses.
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonsoir Steeve, bonsoir à toutes et à tous :)

Je ne sais pas ce que tu veux dire par répertoire courant... Alors dans le doute, je te propose 2 instructions (variable Chemin à déclarer en String) :

1) Sélectionner le répertoire du classeur :

Chemin = ThisWorkbook.Path & '\\\\\\\\'

2) Sélectionner le répertoire courant :

Chemin = CurDir & '\\\\\\\\'

Puis, pour sauvegarder ton fichier en premier, puis sous un autre nom :

Application.DisplayAlerts = False
ThisWorkbook.Save
ThisWorkbook.SaveAs FileName = Chemin & Range('B5').Value
Application.DisplayAlerts = True

En espérant que cela réponde à ta demande.

A+ ;)
 
S

steeve

Guest
Bonjour Charly2, Bonjour à tous

Pour préciser ma demande: il s'agit du répertoire / dossier dans lequel se trouve le fichier.
J'ai tester ton code: le fichier s'enregistre sous le nom 'false' et dans 'mes documents'...
est-ce normal ? si ce ne pas le cas que faut-il changer ?

Merci
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour Steeve, bonjour à toutes et à tous :)

Curieux ! As-tu bien un nom de fichier dans la cellule B5 de ta feuille active ?

Voici le code complet - il faut que ton fichier ait déjà été sauvegardé au moins 1 fois, i.e. que ce ne soit pas un nouveau classeur :

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'
Dim Chemin As String
'

  If ThisWorkbook.Name = Range('B5').Value Then Exit Sub

  ' Répertoire du classeur actuel
  Chemin = ThisWorkbook.Path & '\\\\\\\\'

  ' Il n'y aura pas de message d'alerte
  Application.DisplayAlerts = False

  ' Sauvegarde préalable des modifications du classeur
  ThisWorkbook.Save

  ' Sauvegarde sous un nouveau nom (indiqué en B5 de la feuille active)
  ThisWorkbook.SaveAs FileName:=Chemin & Range('B5').Value

  ' on remet les chose en place avant de partir...
  Application.DisplayAlerts = True

End Sub

Je viens de tester avec SteeveTest.xls en B5 et je n'ai aucun souci. Le fichier principal est sauvegardé avec les modifications et un fichier est créé dans le même répertoire avec SteeveTest.xls pour nom.

Tiens-nous au courant.

A+ ;)
 

Discussions similaires

Réponses
2
Affichages
299

Statistiques des forums

Discussions
312 345
Messages
2 087 492
Membres
103 559
dernier inscrit
pascalbill