Supprimer ancien file auto incrémenté Excel

bjmx -  
 bjmx -
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. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  2. bjmx
     
    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
  3. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  4. bjmx
     
    Bonjour,

    C'est vraiment super sympa, je me met au travail et vous informerez de l'avancement.
    Encore merci.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. bjmx
     
    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
  7. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    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
  8. bjmx
     
    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