Enregistrement automatique d'un fichier puis suppression du précédent

Mixomatoze

XLDnaute Nouveau
Bonjour,

Je suis nouveau sur ce forum et viens demander de l'aide apres un démarrage laborieux sur VB...

Ma situation :
- J'ai un dossier dans lequel j'enregistre des fichiers de suivi de différentes affaires.
- J'ai trouvé une macro me permettant de générer automatiquement les noms de fichiers et d'effectuer la sauvegarde (cf ci dessous)
- Cette macro marche très bien, seul souci, elle n'efface pas le fichier précédent lorsque je fais juste une mise à jour (avec update du nom de fichier - changement de date -)
- J'aurais donc besoin d'ajouter une ligne à cette macro qui, après avoir effectué la sauvegarde, va chercher dans le dossier s'il existe un fichier antérieur dont seule la date est différente et le détruise si c'est le cas.

A priori, il me faudrait quelque chose du type :
1/ 'Dir', je recherche les fichiers non ouverts et dont le nom contient 'cellule A1' (partie non variable du nom de fichier)
2/ 'Kill' ce fichier
Mais je n'y suis pas arrivé et surtout, je ne suis pas sur que ce soit la meilleure solution...

Voilà, je ne sais pas si je suis tres clair, mais si quelqu un peut m aider, je serais tres heureux ! MERCI !!! :)

Voici la macro :

Sub Enregistrer()
Dim Nom As String
Nom = Range("h2") & ".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 H2", 48: Range("H2").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("H2").Select
End If
End If
End Sub
 

Mixomatoze

XLDnaute Nouveau
Re : Enregistrement automatique d'un fichier puis suppression du précédent

Humm... pas de réponse.... mauvaise question ? ou pas de réponse, pas de réponse ?
Merci beaucoup si quelqu'un peut m'indiquer si la question n'est pas claire ou la réponse inconnue :°

Bonne journée à tous !
 

francedemo

XLDnaute Occasionnel
Re : Enregistrement automatique d'un fichier puis suppression du précédent

bonjour,
dsl, pas vu ta question le 15...

au début de ta macro, tu mets:
Code:
NomFichier = ThisWorkbook.name
ça enregistre le nom du fichier que tu ouvres

après l'enregistrement du fichier, tu mets:
Code:
NomFichierEnCours = ThisWorkbook.name
ça enregistre le nom modifié

et à la fin:
Code:
If NomFichierEnCours <> NomFichier Then Kill NomFichier.Path & "\" & NomFichier
ça supprime l'ancien fichier si le nom a changé

ton code devient:
Code:
Sub Enregistrer()

Dim Nom As String
Dim NomFichier As String
Dim NomFichierEnCours As String
Dim FSO As Object

NomFichier = ThisWorkbook.name
Set FSO = CreateObject("Scripting.FileSystemObject")
Nom = Range("h2") & ".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 H2", 48: Range("H2").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("H2").Select
    End If
    If FSO.FileExists(ThisWorkbook.Path & "\" & NomFichier) Then
        If Nom <> NomFichier Then Kill ThisWorkbook.Path & "\" & NomFichier
    End If
End If

End Sub
à tester, ne connaissant pas le contenu de "H2"...
de plus, 2 modif le même jour, tu vas écraser ton fichier
à voir

à+
 

Mixomatoze

XLDnaute Nouveau
Re : Enregistrement automatique d'un fichier puis suppression du précédent

Canon !
Ca marche parfaitement ! Merci beaucoup :)

... je me permets d'abuser un petit peu et d'en profiter pour te demander une option supplémentaire.
Est il possible d'avoir une exception à la suppression du fichier, à savoir quand le fichier est le template de base (que j'aimerais garder quoiqu'il arrive et éviter que les utilisateurs aient à faire une copie à chaque fois) :
en l'occurrence '_Model fiche de suivi - feedback.xls'

En tout cas, merci beaucoup pour ce premier coup de main !

A +
 

francedemo

XLDnaute Occasionnel
Re : Enregistrement automatique d'un fichier puis suppression du précédent

dans ce cas, tu remplaces:
Code:
If Nom <> NomFichier Then Kill ThisWorkbook.Path & "\" & NomFichier

par
Code:
If Nom <> NomFichier AND NomFichier <> "_Model fiche de suivi - feedback.xls" Then Kill ThisWorkbook.Path & "\" & NomFichier

à tester

à +
 

Mixomatoze

XLDnaute Nouveau
Re : Enregistrement automatique d'un fichier puis suppression du précédent

C'est parfait !

Ca tourne impeccablement !

Merci infiniment pour cette aide précieuse qui me permet de faire passer un fichier un peu bringueballant à une perle technologique (à mes yeux en tout cas ;) ) !

Et puis peut etre qu'un jour je saurais filer des coup de main sur VBA !

A ++
 

Discussions similaires

Statistiques des forums

Discussions
312 163
Messages
2 085 860
Membres
103 005
dernier inscrit
gilles.hery