Copie de sauvegarde hebdomadaire (prise 2)

Bonjour à tous,

J'avais eu de l'aide par SoumZoum pour un code de sauvegarde hebdomadaire dans un poste antérieur: https://forum.excel-pratique.com/viewtopic.php?f=2&t=67772&start=20, et j'aimerais poursuivre son développement, et le mettre en application.

J'aimerais savoir pourquoi le code crée ce fichier supplémentaire (SauveAuto.xls~FR213ee.TMP) en plus de la sauvegarde prévu.

Je joins le fichier test.

J'ai trouvé également ce code sur un forum, mais il semble incomplet, car il provoque une erreur de compilation: argument non facultatif sur le Weekday.

Module standard

Sub La_macro_qui_sauve()
If Weekday = 2 Then
    'Si le fichier n'existe pas déjà, on l'enregistre en incluant la date du jour dans le nom
    If Dir("C:\Users\ulangzx\Desktop\Projets\Archives" & Format(Date, "yyyy-mm-dd")) = "" Then
        'cet exemple de l'aide en ligne montre comment enregistrer une copie du classeur actif.
        ThisWorkbook.SaveCopyAs "C:\Users\ulangzx\Desktop\Projets\Archives" & Format(Date, "yyyy-mm-dd") & ".XLS"
    End If
End If
End Sub

WB

Sub Workbook_Open()
    La_macro_qui_sauve
End Sub

Merci pour vos éclaircissements et solutions.

14sauvauto.zip (8.52 Ko)

Bonjour,

Si c'est bien ce que je pense ton weekday, j'ai utilisé la même fonction ici : https://forum.excel-pratique.com/viewtopic.php?f=2&t=111342&p=663115#p663115

Et dans ce cas il faudra suivre cette syntaxe :

DateTime.Weekday(Date, [FirstDayOfWeek As VbDayOfWeek = vbSunday])

Il faudra donc renseigner à ta fonction une date et quel jour est le premier de la semaine, le premier jour de la semaine se renseigne comme suit :

Constante / Valeur / Description

vbUseSystem / 0 / Utilise les paramètres de l'API NLS.

vbSunday / 1 / Dimanche (valeur par défaut)

vbMonday / 2 / Lundi

vbTuesday / 3 / Mardi

vbWednesday / 4 / Mercredi

vbThursday / 5 / Jeudi

vbFriday / 6 / Vendredi

vbSaturday / 7 / Samedi

Autre détail, si tu veux mettre en date celle actuelle sur ton pc, il faudra utiliser cette fonction :

VBA.DateTime.Date

Bonjour Ausecour,

désolé , mais je ne saisi pas vos explications. Comment dois-je modifier le code?

Merci pour vos éclaircissements.

Bon week-end.

Bonjour,

Si ta semaine commences le Lundi, alors il faudra remplacer la ligne

If Weekday = 2 Then

par

If datetime.Weekday(DateTime.Date,vbMonday) = 2

datetime.weekday te donnera le numéro du jour de la semaine en commençant la semaine le lundi (vbMonday), et prendra comme date d'entrée la date au momento où tu lances le programme (DateTime.Date)

Bonjour Ausecour

merci pour les précisions. J'ai apporté la modification au code, mais il ne fonctionne pas. Il n'y a aucune copie qui se crée dans le répertoire Archives !

A+

Bonjour,

C'est normal si ça ne sauvegarde pas, la condition pour rentrer dans le premier IF c'est d'être un mardi, si tu essayes aujourd'hui ça devrait marcher non?

Par contre si j'étais toi je vérifirais ton deuxième IF pour voir si il fonctionne correctement ou non...

Bonjour Ausecour,

ça sauve ceci: SauveAuto2.xls~rf543941f.tmp

Merci de votre aide.

Rechercher des sujets similaires à "copie sauvegarde hebdomadaire prise"