Supprimer ancien file auto incrémenté Excel

Fermé
bjmx - 7 janv. 2008 à 23:02
 bjmx - 10 janv. 2008 à 22:50
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.
A voir également:

7 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
7 janv. 2008 à 23:38
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
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
8 janv. 2008 à 23:20
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
Bonjour,

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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
10 janv. 2008 à 21:52
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
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