Supprimer les anciens fichier

jack2125 Messages postés 486 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
bonjour a tous
cette fonction me permet de sauvegarder à plusieurs endroits mes fichiers
Par contre les sauvegardes m'accumule les fichiers
Que me manque t il pour supprimer à chaque sauvegarde pour suprimer le fichier enregistré -1
merci beaucoup a vous

Sub Sauvegarde()
Application.DisplayAlerts = False
If Len(Dir("C:\Users\jacques\Documents\jeux loto", vbDirectory)) > 0 Then
ActiveWorkbook.SaveAs Filename:="C:\Users\jacques\Documents\jeux loto\" & ActiveWorkbook.Name, CreateBackup:=False
End If
If Len(Dir("g:\loto", vbDirectory)) > 0 Then
ActiveWorkbook.SaveAs Filename:="G:\loto\" & ActiveWorkbook.Name, CreateBackup:=False

End If
If Len(Dir("E:\loto", vbDirectory)) > 0 Then
ActiveWorkbook.SaveAs Filename:="E:\loto\" & ActiveWorkbook.Name, CreateBackup:=False
End If
If Len(Dir("F:\loto", vbDirectory)) > 0 Then
ActiveWorkbook.SaveAs Filename:="F:\loto\" & ActiveWorkbook.Name, CreateBackup:=False
End If
ActiveWorkbook.SaveAs Filename:="C:\Users\jacques\onedrive\loto\jeux loto\ " & ActiveWorkbook.Name, CreateBackup:=False
End Sub
--
vous êtes super!
merci à tous

9 réponses

  1. Utilisateur anonyme
     
    Bonjour

    Tout d’abord afin de faciliter la lecteur au membre qui pourrait t’aider merci de lire et appliquer ce petit tuto https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

    Ensuite, je ne suis pas féru de VBA, je vais laisser ceux qui savent mieux répondre techniquement.
    Cependant sur le principe, supposons que je sauvegarde à 10h00, il y a un fichier de 9h50, il est supprimé. Si dans le fichier de 10h00 j’ai fait une erreur je n’ai plus la possibilité de restaurer les bonnes valeurs puisque je n’ai plus le fichier de 9h50.

    Une bonne sauvegarde est incrémentielle, c’est à dire qu’on conserve les différentes étapes afin de pouvoir revenir en arrière. Ce que fait ta fonction pour l’instant.

    Malheureusement Microsoft n’as pas jugé pertinent de faire en sorte qu’Office le fasse nativement. Sur la suite bureautique Mac, par exemple, à chaque enregistrement, en fait on enregistre les différences entre le dernier enregistrement et « maintenant »:
    • ça ne prend pas trop de place,
    • on a un seul fichier
    • l’interface permet de naviguer facilement dans l’historique de changement pour en annuler un


    Une option pour toi serait d’utiliser un outil tel que GIT, qui sauvegarde les changements dans les fichiers textes. Un xlxs est en fait une archive zip qui regroupe pleins de fichiers textes.
    0
    1. Utilisateur anonyme
       
      Un petit exemple en image.
      Dans cet exemple, je n'ai pas dézippé le fichier xlxs, je le sauvegarde donc entier à chaque étape.
      Je me sers de SourceTree qui est une interface fenêtrée gratuite pour GIT (qui est en ligne de commande)

      Etape 1: il y a un nouveau fichier dans le repertoire


      Entre l'étape 1 et l'étape 2, j'ai indéxé le fichier excel, mis un commentaire et validé, j'ai ensuite ignoré le suivi du fichier temporaire.

      Etape 2, dans le fichier j'ai ajouté du texte et enregistré


      On voit que le logiciel ne sais pas me montrer les différences (c'est pas dézippé), mais il me propose d'ouvrir "Avant" et "Après"

      Etape 3 après commentaire et validation, on voit dans l'historique que je peux toujours ouvrir "Avant" et "Après"


      Etape 4 dans l'historique, on voit le fichier qui m'a permit d'ignorer le fichier temporaire, c'est un fichier text et là on voir que j'ai ajouté (via SourceTree) une ligne dans ce fichier.
      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, le nom de ton fichier change-t'il à chaque fois?
    0
  3. jack2125 Messages postés 486 Date d'inscription   Statut Membre Dernière intervention  
     
    bonjour
    non le nom est identique seule l'heure change et le fichier se décale d'une "case"
    il n'est pas aligné sur le précédent
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      tous ces fichiers ont le même nom et sont dans le même dossier?
      0
  4. jack2125 Messages postés 486 Date d'inscription   Statut Membre Dernière intervention  
     
    oui dans les mêmes dossiers (a 4 emplacements) fichiers très importants
    1 ans d'écritures!
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      le fichier sauvé un jour a-t'il le même nom que le fichier sauvé la veille?
      pour pouvoir supprimer à chaque sauvegarde le fichier enregistré -1, il faut pouvoir déterminer duquel il s'agit, non?
      ou bien veux-tu tout supprimer, sauf le nouveau fichier?
      peux-tu donner des informations supplémentaires?
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jack2125 Messages postés 486 Date d'inscription   Statut Membre Dernière intervention  
     
    je veux supprimer tous les fichiers qui portent le nom du fichier a sauvegarder sauf celui que je sauve en instant 't'
    0
    1. Utilisateur anonyme
       
      Sans vouloir être lourd

      ça
      fichiers très importants
      1 ans d'écritures!
      et ça
      je veux supprimer tous les fichiers qui portent le nom du fichier a sauvegarder sauf celui que je sauve en instant 't'

      C'est contradictoire, comme je l'ai expliqué plus haut.
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      comment plusieurs fichiers peuvent-ils être dans le même dossier et avoir le même nom?
      0
      1. jack2125 Messages postés 486 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        et ben désolé mais c'est ainsi
        0
      2. jack2125 Messages postés 486 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        dommage je n'arrive pas a te copier la copie d'écran ou tu pourrais voir les fichiers avec les mêmes noms , des heure différentes et des offsets différents!
        0
      3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > jack2125 Messages postés 486 Date d'inscription   Statut Membre Dernière intervention  
         
        tu peux aussi, dans une boite de commande, faire :
        cd C:\Users\jacques\Documents\jeux loto
        dir

        et puis partager le texte de la réponse
        0
  7. jack2125 Messages postés 486 Date d'inscription   Statut Membre Dernière intervention  
     
    je conserve que le dernier que j'enregistre
    c'est a dire qu'avant de sauvegarde le fichier il faut faire un "DEL" auparavant
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      veux-tu simplement supprimer tous les fichiers du dossier avant de faire la sauvegarde?
      0
  8. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,

    Voici comment je limite, dans un répertoire, à 20 les dernières sauvegardes quotidiennes d'un même fichier.

    Code des fonctions :
    Const REPERTOIRE_SAVE As String = "C:/TEST/"
    Const NB_SAVE As Integer = 20
    Const NOM_FICHIER_SAVE As String = "MonNom"
    Public Sub Limiter()
    Dim i As Long, s As String
        i = CountFiles(REPERTOIRE_SAVE, "xlsm", s)
        If i > NB_SAVE Then
            If s <> vbNullString Then
                Kill s
            Else
                MsgBox "Erreur, veuillez vérifier votre répertoire"
            End If
       End If
    End Sub
    Public Function CountFiles(Rep As String, Extens As String, PlusVieux As String) As Long
    Dim count As Long, Fichier As String, D As Date, sReturn As String
        If Dir(Rep & "*." & Extens) <> vbNullString Then
            Fichier = Dir(Rep & "*." & Extens)
            D = FileDateTime(Rep & Fichier): PlusVieux = Rep & Fichier
            Do Until Fichier = ""
                count = count + 1
                Fichier = Dir
                If Fichier <> "" Then
                    If D > FileDateTime(Rep & Fichier) Then D = FileDateTime(Rep & Fichier): PlusVieux = Rep & Fichier
                End If
            Loop
        End If
        CountFiles = count
    End Function


    Code d'appel :
     If Dir(REPERTOIRE_SAVE & Format(Date, "yyyy mm dd") & " " & NOM_FICHIER_SAVE) = "" Then  
        ThisWorkbook.SaveCopyAs REPERTOIRE_SAVE & Format(Date, "yyyy mm dd") & " " & NOM_FICHIER_SAVE
        Call Limiter
    End If

    0
  9. jack2125 Messages postés 486 Date d'inscription   Statut Membre Dernière intervention  
     
    franck bonjour
    déjà merci pour ta réponse, mais en VBA je suis très moyen
    aujourd'hui j'utilise ces codes:
    Sub Sauvegarde()
    Application.DisplayAlerts = False
    If Len(Dir("C:\Users\jacques\Documents\jeux Beta", vbDirectory)) > 0 Then
    ActiveWorkbook.SaveAs Filename:="C:\Users\jacques\Documents\jeux Beta\" & ActiveWorkbook.Name, CreateBackup:=False
    End If
    If Len(Dir("g:\loto", vbDirectory)) > 0 Then
    ActiveWorkbook.SaveAs Filename:="G:\Beta\" & ActiveWorkbook.Name, CreateBackup:=False

    End If
    If Len(Dir("E:\loto", vbDirectory)) > 0 Then
    ActiveWorkbook.SaveAs Filename:="E:\loto\" & ActiveWorkbook.Name, CreateBackup:=False
    End If
    If Len(Dir("F:\loto", vbDirectory)) > 0 Then
    ActiveWorkbook.SaveAs Filename:="F:\Beta\" & ActiveWorkbook.Name, CreateBackup:=False
    End If
    ActiveWorkbook.SaveAs Filename:="C:\Users\jacques\onedrive\Beta\jeux Beta\ " & ActiveWorkbook.Name, CreateBackup:=False
    End Sub
    As tu la possibilité de m'intégrer la possibilité de sauvegarder le jour JJ MM et l'heure HH MM et que je ne garde en sauvegarde que le dernier fichier et celui du dernier de la veille JJ -1
    merci si tu peux
    cordialement
    jacques
    0
    1. Utilisateur anonyme
       
      Bonjour, dès ma première réponse je t’ai indiqué un lien vers le tuto sur les balises de code.

      Franck (que je salue au passage) a fait l’effort de s’en servir pour te rendre la lecture de son code aisée. La moindre des choses que tu pourrais faire pour lui est d’en faire autant.
      Il te reste un peu plus de 50 minutes pour modifier ton message
      0
  10. jack2125 Messages postés 486 Date d'inscription   Statut Membre Dernière intervention  
     
    désolé mais je ne comprends rien de ce que tu me racontes
    merci de ces infos sans avancées pour moi..
    bonne fin d'am
    0