Enregistrer le nom de fichier automatiquement selon le nom d'une cellule excel

romainchu78

XLDnaute Occasionnel
Bonjour a tous, Je souhaite enregistrer le nom de fichier automatiquement selon le nom d'une cellule excel. Peut importe le numero de la cellule.

Par exemple ma cellule contient WORKSCOPE_TOTO_DN010_001 et le fichier sera enregistre sous WORKSCOPE_TOTO_DN010_001.xls

comment est-ce possible?

merci par avance
 

Hulk

XLDnaute Barbatruc
Re : Enregistrer le nom de fichier automatiquement selon le nom d'une cellule excel

Hello,

J'ai trouvé ce petit code sur le net (merci à l'auteur) qui peut-être est ce que tu cherches.

Juste que, il fera bien ce que tu veux, mais il n'effacera pas le classeur actif en le fermant si tu as modifié A1.. tu me suis ?

Je m'explique :
Tu as un classeur nommé "Toto", tu saisis "Momo" en A1, une fois fermé il sera bien enregistré sous le nom de "Momo" sur ton bureau, mais "Toto" ne sera pas effacé.

Il faut ou faire une macro qui en quittant, si A1 a été modifié qu'il supprime le classeur actif. (J'ai tout essayé sans succès.)

Ou plus simplement à chaque fois que tu modifies A1 qu'après tu supprimes toi-même l'ancien classeur.

Cdt, Hulk.
 

Hulk

XLDnaute Barbatruc
Re : Enregistrer le nom de fichier automatiquement selon le nom d'une cellule excel

Re,

Oubli :D

Dans un module :
Code:
Sub test()
Chemin = ActiveWorkbook.Path
Fichier = Cells(1, 1).Value
ActiveWorkbook.SaveAs Filename:=Chemin & "\" & Fichier & ".xls", FileFormat _
:=xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:= _
False, CreateBackup:=False
End Sub
et dans le Thisworkbook :
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call test
End Sub

Cdt, Hulk.
 
Dernière édition:

Luinil

XLDnaute Nouveau
Re : Enregistrer le nom de fichier automatiquement selon le nom d'une cellule excel

Bonjour Hulk,

Pour détruire un fichier:

Sub Suicide()
'Source:
'http://frederic.sigonneau.free.fr/code/Feuilles/AutoDestructionClasseur.txt
Dim FName As String
Dim Ndx As Integer
With ThisWorkbook
.Save
For Ndx = 1 To Application.RecentFiles.Count
If Application.RecentFiles(Ndx).Path = .FullName Then
Application.RecentFiles(Ndx).Delete
Exit For
End If
Next Ndx
.ChangeFileAccess Mode:=xlReadOnly
Kill .FullName
.Close SaveChanges:=False
End With
End Sub

Dans ton cas, il suffit de l'appeler entre BeforeClose si A1 a changer (Ne pas oublier de sauvegarder sous l'autre nom avant ^^)

Luinikl
 

job75

XLDnaute Barbatruc
Re : Enregistrer le nom de fichier automatiquement selon le nom d'une cellule excel

Bonjour à tous,

Enregistrer un fichier sous le nom indiqué par exemple dans la cellule A1 se fait bien sûr en utilisant ThisWorkbook.SaveAs.

Seulement il faut prendre des précautions pour traiter les cas suivants :

- le document n'a encore jamais été enregistré,

- la cellule A1 est vide,

- le nom proposé contient des caractères interdits / \ * ? : < > |

Voyez la macro suivante :

Code:
Sub Enregistrer()
Dim Nom As String
Nom = Range("A1") & ".xls"
If ThisWorkbook.Path = "" Then 'si le document n'a jamais été enregistré
  SendKeys Nom
  Application.Dialogs(xlDialogSaveAs).Show 'boîte de dialogue Enregistrer sous
Else
  If Range("A1") = "" Then MsgBox "Entrez le nom du fichier en A1", 48: Range("A1").Select: Exit Sub
  If MsgBox("Voulez-vous enregistrer le fichier sous le nom " & Nom & " ?", 4) = 6 Then
    On Error Resume Next
    ThisWorkbook.SaveAs ThisWorkbook.Path & "\" & Nom 'Enregistre dans le même dossier
    If Err Then MsgBox "Le nom proposé contient des caractères interdits", 48: Range("A1").Select
  End If
End If
End Sub

A+
 

Hulk

XLDnaute Barbatruc
Re : Enregistrer le nom de fichier automatiquement selon le nom d'une cellule excel

Bonjour à tous,

Juste une question pour Luinil:

Le code que tu propose est bien à mettre dans un module et l'appeller dans le BeforeClose ?

Car j'ai essayé, et avec la version à Job, et avec la version que je propose, mais il y a erreur à la ligne Kill.FullName (en jaune)

Cdt, Hulk.
 

Chris_67

XLDnaute Nouveau
Re : Enregistrer le nom de fichier automatiquement selon le nom d'une cellule excel

Salut à tous,

Excellent tout ca !

J'ai utilisé le code à job75, merci au passage...
Parfait pour ce que je voulais faire mais est-il possible en plus de définir un chemin de sauvegarde (pour moi case R8 "S:\4-LOGISTIQUE\0-RELANCE\", de vérifier si le répertoire cible existe S8 "04-02-2012", sinon de le créer puis de sauvegarder avec la séquence qui marche très bien ?
Merci...
 

Discussions similaires

Statistiques des forums

Discussions
312 220
Messages
2 086 376
Membres
103 198
dernier inscrit
CACCIATORE