Supprimer ancien file auto incrémenté Excel

Bonjour, et merci pour votre participation à tous sur ce site.

Pour un fichier Excel dont nous sommes plusieurs à utiliser plusieurs fois par jour, j'ai créé via VB une commande qui m'incrémente automatiquement le nom du fichier ouvert dans "beforeSave" mais de ce fait je me retrouve rapidement à la fin de la journée avec une multitude de fichiers dans mon répertoire. (Ex : Fichier V1.xls, Fichier V2.xls, Fichier V3.xls, ... )

Mon souhait serait idéalement de ne garder dans mon répertoire que le tout dernier fichier incrémenté ; et ce en complétant ma macro déja existante sous Excel.

Y a t'il une solution? Pourriez-vous m'aider? Merci d'avance.
Configuration: Windows XP
Internet Explorer 6.0
Excel 2003

7 réponses

  1. Contributeur
    bonjour

    avec Dir("ton_répertoire\Fichier V*.xls") et une boucle avec Dir jusqu'à un nom vide tu obtiens les fichiers présents.

    ensuite avec kill chemin de fichier tu supprimes l'excédent.
    0
    1. Bonsoir,

      Merci pour l'info, je vais essayer de bidouiller quelque chose dans ce style, après avoir cherché un peu plus d'info sur ces commandes Dir et la boucle à rédiger.
      Comme tu peux le deviner, j'ai souvent plagié des brides de commandes pour en arriver là.
      Si tu peux m'aider un peu plus en développant ton idée merci beaucoup.
      Grand merci.
      0
      1. Contributeur
        bonjour

        Tu dois avoir à peu près la procédure avec ceci :
        Dim rep As String
        Dim fich As String
        rep = "c:\ton_répertoire\"             ' chemin répertoire
        fich = Dir(rep & "Fichier V*.xls")    ' Extrait la première entrée.
        Do While fich <> ""                   ' Commence la boucle.
            If Right(fich, 6) <> "xx.xls" Then
                Kill rep & fich               ' suppression des fichiers
            End If
            fich = Dir                        ' Extrait l'entrée suivante.
        Loop
        

        à toi de voir le test à faire pour garder le bon fichier.
        0
        1. Bonjour,

          C'est vraiment super sympa, je me met au travail et vous informerez de l'avancement.
          Encore merci.
          0
          1. Bonsoir,

            Comme convenu, quelques nouvelles.
            Les commandes répondent bien à mes attentes, le seul pb sur lequel je pietine depuis, c'est qu'il plante par ce qu'il essaye de supprimer le fichier sur lequel la macro s'excute elle même.
            Je pense qu'il faut exclure ne fichier actif
            j'ai essayé : If Right(fich, 6) <> ActiveWorkbook
            Mais chou blanc.
            Help please .
            0
            1. Contributeur
              bonjour

              Je pense qu'il faut exclure ne fichier actif

              effectivement le suicide n'est pas autorisé car le classeur est bloqué à l'ouverture. Pour comparer
               If fich <> ActiveWorkbook.Name

              0
              1. J'avais trouvé ça entre temps et ça marche.

                ActiveWorkbookName = Name

                Dim rep As String
                Dim fich As String

                rep = "R:\Photo\Arret équipements Planning\" ' chemin répertoire
                fich = Dir(rep & "Planning W* V*.xls") ' Extrait la première entrée.
                Do While fich <> "" ' Commence la boucle.
                If fich <> Name And Right(fich, 6) <> "V" & Range("BF1") & ".xls" Then

                Kill rep & fich ' suppression des fichiers
                End If
                fich = Dir ' Extrait l'entrée suivante.
                Loop
                End Sub

                merci quand même, cependant dans la suite de mon prog, j'ai encore un accroc,
                je souhaite incrémenter de 1 une cellule "BF1", le pb c'est que la cellule s'incrémente jusqu'a 224 d'un seul coup
                Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
                n = 1
                Range("BF1") = Range("BF1") + n
                End Sub

                Encore merci d'avance
                0