sauvegarde de fichier

sadx2005

XLDnaute Nouveau
Bonjour ,

Je prepare un petit prog pour sauvegarder une feuille excel sous un nom precis + la date à partir du bouton
CommandButton1.

voici ce que ca donne :

Private Sub CommandButton1_Click()

Dim wk As Workbook
Dim ws As Worksheet

Set wk = Workbooks.Add(xlWBATWorksheet)
Set ws = ThisWorkbook.Worksheets("facture")
ws.Copy After:=wk.Sheets(Sheets.Count)

Dim nom As String

nom = (Range("A9").Value) & "-" & Format(Date, "dd-mm-yyyy")

ActiveWorkbook.ActiveSheet.SaveAs Filename:="F:\Document boulot\module\facture" & "\" & nom & ".xls"

rep = MsgBox("La facture est sauvegardée : " & nom, vbYes + vbInformation, "Sauvegarde de facture")
ActiveWorkbook.Close

End sub

Le probleme est que je n arrive pas a gérer les doublons , si par exemple je sauvegarde 2 ou 3 fois j ai le message " le fichier exite deja , voulez vous le remplacer ?"
J aimerai ne pas ecraser mais , par exemple incrementer les sauvegardes.
Voila voila :(
 
C

Compte Supprimé 979

Guest
Re : sauvegarde de fichier

Salut Sadx2005 et bienvenue sur le forum

Le fait de créer un nouveau classeur puis de copier la feuille "facture" dedans et à la fin, pour moi n'a aucune utilité, donc supprimé ce bout de code

De plus quand tu déclares des variables objet :
Code:
Set ws = ThisWorkbook.Worksheets("facture")
Penses à les fermer à la fin de ton code
Code:
Set ws = Nothing

Mais là, je ne pense pas non plus que ce soit nécessaire

Donc voici le code épuré ;)
Code:
Private Sub CommandButton1_Click()
Dim VPath As String, VNom As String, Ind As Integer
ThisWorkbook.Worksheets("facture").Copy
VPath = "F:\Document boulot\module\facture\"
' Compilation du nom du fichier
VNom = (Range("A9").Value) & "-" & Format(Date, "dd-mm-yyyy") & ".xls"
' Vérifie que le fichier n'existe pas déjà
Do While Dir(VPath & VNom) <> ""
  ' Sinon on créé un nouveau nom avec un indice
  Ind = Ind + 1
  ' On récupère la bonne partie du nom de fichier
  If Ind = 1 Then
    VNom = Left(VNom, InStr(1, VNom, ".xls") - 1)
  Else
    VNom = Left(VNom, InStr(1, VNom, ".xls") - 3)
  End If
  VNom = VNom & "-" & Ind & ".xls"
Loop
' Quand le nom est Ok on sauvegarde
ActiveWorkbook.SaveAs Filename:=VPath & VNom
MsgBox "La facture est sauvegardée : " & VNom, vbYes + vbInformation, "Sauvegarde de facture"
ActiveWorkbook.Close
End Sub

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 353
Membres
103 528
dernier inscrit
hplus