XL 2010 SaveAs Filename

TheProdigy

XLDnaute Impliqué
Bonjour,

Comment enregistrer le fichier sous le nom " achat le dd/mm/yyyy à hh:mm ? dans le code
VB:
Do
fName = Application.GetSaveAsFilename
Loop Until fName <> False

ActiveWorkbook.SaveAs Filename:=fName & "xls", _
FileFormat:=xlWorkbookNormal, CreateBackup:=False

Si vous avez un autre code mieux que celui là n'hésitez pas à me le communiquer car même dans ce code il m'affiche une erreur quand il me dit le fichier classeur 1 existe déjà voulez vous remplacer le classeur 1 (déjà existant) je clique sur annuler il affiche une erreur 1004 la méthode 'SaveAs' de objet '_Workbook' a échoué

Merci
 

Lone-wolf

XLDnaute Barbatruc
Bonjour Jean Marie, adil, le Forum :)

@Staple1600 : de nada Señor, con mucho gusto. ;)

@adilprodigy : une autre façon de faire. Renommer et sauvegarder le classeur.

VB:
Option Explicit

Sub Nouv_Achats()
Dim derlig&, i&, AncWk As Workbook
Dim chemin$, temp$, NouvNom$, t As Date

    chemin = ThisWorkbook.Path & "\Fichiers\"

    With Sheets(1)
        derlig = .Cells(Rows.Count, "A").End(xlUp).Row

        Set AncWk = Workbooks("Achats.xlsm")

        For i = 2 To derlig
            temp = Format(.Cells(i , "A"), "dd_mm_yyyy à h""h ""mm")

            NouvNom = "achat le " & temp

            AncWk.SaveAs Filename:=chemin & NouvNom & ".xls", FileFormat:=xlExcel8
            t = Timer + 1: Do Until Timer > t: DoEvents: Loop
        Next i
    End With

    Application.DisplayAlerts = False
    ThisWorkbook.Save
    Application.Quit
End Sub
 
Dernière édition:

TheProdigy

XLDnaute Impliqué
Bonjour @Staple1600 , bonjour @Lone-wolf ,

Bonsoir le fil, le forum

Une autre syntaxe
Code (Visual Basic):

Sub a()
Dim strPath$, fn$
strPath = ThisWorkbook.Path & "\"
fn = strPath & Format(Now, """achat le ""dd_mm_yyyy"" à ""hh""h""mm"".xls""")
ActiveWorkbook.SaveAs fn, 56
End Sub

@Lone-wolf
Euh, Windows ne va pas aimer ton nom de fichier, non ? :rolleyes: ;)

Staple1600, ton code marche bien c'est ce que je veux, sauf que

1 ) Il enregistre tout le classeur entier et non pas extraire les données dans un nouveau classeur
2) Quand il trouve la même date avec la même heure "Voulez vous remplacer?" je clique sur Annuler et un message d'erreur s'affiche pour débogage
3) Je souhaiterais qu'il formate l'extraction comme le fichier que je vous joins

Bref je ne sais pas comment adapter ton code au fichier joint

Merci.

Lone-wolf, merci pour ta solution même si je ne cherche pas la date de l'achat exact mais je vais garder ta solution elle me sera utile prochainement.

Merci.
 

Pièces jointes

  • Test.xlsm
    39.6 KB · Affichages: 26

Staple1600

XLDnaute Barbatruc
Bonjour le fil, le forum

Bonjour @Staple1600 , bonjour @Lone-wolf ,
Staple1600, ton code marche bien c'est ce que je veux, sauf que
1 ) Il enregistre tout le classeur entier et non pas extraire les données dans un nouveau classeur
2) Quand il trouve la même date avec la même heure "Voulez vous remplacer?" je clique sur Annuler et un message d'erreur s'affiche pour débogage
3) Je souhaiterais qu'il formate l'extraction comme le fichier que je vous joins
Bref je ne sais pas comment adapter ton code au fichier joint

Je me suis contenté de répondre à la question telle qu'elle était rédigée dans ton premier message ;)
Bonjour,
Comment enregistrer le fichier sous le nom " achat le dd/mm/yyyy à hh:mm ? dans le code
Merci.

EDITION: Bonjour Lone-Wolf
Tu sais que le mode EDITION existe ?
Inutile de créer un post pour simplement me dire Bonjour ;)
(Editer ton précédent message pour le faire suffit amplement ;))
Sauf à vouloir faire exploser ton compteur de message ;)
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour adilprodigy, Lone-wolf, JM,

Plutôt laborieux ce fil alors que c'est classique :
Code:
Private Sub CommandButton1_Click()
Dim fn$
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier existe déjà
With Workbooks.Add(xlWBATWorksheet).Sheets(1)
    ActiveWindow.DisplayGridlines = False 'pas de quadrillage
    .Name = Me.Name
    Me.Cells.Copy .[A1]
    .[A1].CurrentRegion.Borders.Weight = xlThin
    .Columns.AutoFit 'ajustement largeur
    fn = ThisWorkbook.FullName
    fn = Left(fn, InStrRev(fn, ".") - 1) 'sans l'extension
   .SaveAs fn & " achat le " & Format(Now, "dd-mm-yyyy \à hh\h mm\m\i\n"), 56  'fichier .xls
    .Parent.Close
End With
End Sub
La copie des cellules sur un document vierge évite de copier le code VBA.

Fichier joint.
 

Pièces jointes

  • Test(1).xlsm
    43.2 KB · Affichages: 22
Dernière édition:

job75

XLDnaute Barbatruc
Re,

Le code est légèrement plus simple si l'on crée un fichier .xlsx :
Code:
Private Sub CommandButton1_Click()
Dim fn$
Application.ScreenUpdating = False
Application.DisplayAlerts = False 'si le fichier existe déjà
Me.Copy
With ActiveSheet
    .OLEObjects.Delete 'supprime le bouton
    .[A1].CurrentRegion.Borders.Weight = xlThin
    .Columns.AutoFit 'ajustement largeur
    fn = ThisWorkbook.FullName
    fn = Left(fn, InStrRev(fn, ".") - 1) 'sans l'extension
    .SaveAs fn & " achat le " & Format(Now, "dd-mm-yyyy \à hh\h mm\m\i\n"), 51  'fichier .xlsx
    .Parent.Close
End With
End Sub
Fichier (2).

A+
 

Pièces jointes

  • Test(2).xlsm
    43.1 KB · Affichages: 22
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
314 719
Messages
2 112 181
Membres
111 452
dernier inscrit
christine64