help : présence et suppression de fichier

  • Initiateur de la discussion crinquinette
  • Date de début
C

crinquinette

Guest
bonjour,
peut etre me suis je mal exprimée sur mon précédent post, alors je recommence.
j'ai un dossier qui comprend de multiples fichier nommés de la manière suivante alertes_' & annee & '.xls. chaque jour ouvrable un fichier est créé. je voudrais créer la macro suivante:
- aller dans le répertoire
- aller sur le premier fichier
- vérifier que 'année' dans le nom du fichier est supérieur à la date du jour -7
- si c'est exact supprimer le fichier
- aller sur le fichier suivant et faire les memes actions.

je suis pas très pro excel, et j'ai déjà testé des chose rien ne marche.
aidez moi svp
 

Tibo

XLDnaute Barbatruc
Salut Crinquinette,

Je ne vais malheureusement pas pouvoir t'aider, étant plutôt formuliste.

Mais un détail : reste sur le même fil si tu veux reposer ta question.

Multiplier les fils ne sert à rien, si ce n'est à embrouiller le forum.

@+
 

2passage

XLDnaute Impliqué
Bonjour,

pour résumer, tu ne souhaites laisser dans ce répertoire que les 7 fichiers les plus récents, c'est ça ?
Quand tu dis 'alertes_' & annee & '.xls', ne veux tu pas plutot dire 'alerte_' & date & '.xls'. Il vaudrait mieux présenter les choses comme ça avec un exemple ou une description du format du nom genre Alerte_aaaammjj.xls
avec un exemple de nom de fichier, on pourra commencer a regarder comment faire ;)

A+
 

2passage

XLDnaute Impliqué
Bonjour,

Voici un début de commencement de coup de main : un morceau de code qui va chercher les fichiers du répertoire courant et les stocke dans la feuille de calcul.

Code:
Dim strtst As String
Range('A1').Select
strtst = Dir('') 'initialise le test des noms de fichiers : récupère le 1er nom
Do While strtst <> '' 'vérifie qu'il reste un fichier
    ActiveCell.Value = strtst 'stocke le nom du fichier dans la cellule active
    ActiveCell.Offset(1, 0).Select 'décale la cellule active pour le nom suivant
    strtst = Dir 'affecte le nom du fichier suivant à la variable
Loop

Ca permet deja de voir comment marche Dir.. Pour les noms de fichiers.. hum.. quelle horreur, si je peux me permettre... si tu as le choix, une prochaine fois, utilise un format AAAAMMJJ dans les noms de fichier. L'avantage de ce format c'est qu'un classement alphabétique correspond à l'ordre chronologique.. ça aide...

A+
 
C

crinquinette

Guest
bonjour,
oui j'ai vu comment marchait la fonction dir mais je veux simplement lire le contenu du répertoire et supprimer les fichiers qui sont périmés.
les récupérer dans la feuille ça me sert pas à grand chose ou alors il y a une étape que j'ai raté.
merci
 

2passage

XLDnaute Impliqué
Bonjour,

Bon.. voila là macro toute finie, mais keep cool, j'ai aussi un métier... Attention, elle marche et elle ne pardonne pas elle SUPPRIME tout fichier dont le format correspond antérieur à 7 jours :

Code:
Private Sub CommandButton1_Click()
Dim strtst As String
strtst = Dir('')
Do While strtst <> ''
    If IsDate(Mid(strtst, 9, 2) & '/' & Mid(strtst, 11, Len(strtst) - 16) & '/' & Mid(strtst, Len(strtst) - 5, 2)) = False Then GoTo suivant
    If CVDate(Mid(strtst, 9, 2) & '/' & Mid(strtst, 11, Len(strtst) - 16) & '/' & Mid(strtst, Len(strtst) - 5, 2)) < Now() - 7 Then
        Kill strtst
    End If
suivant:
   strtst = Dir
Loop
End Sub

La prochaine fois que tu veux une macro, demande une macro, pas un coup de main...
A+
 
C

crinquinette

Guest
re re bonjour,
j'ai testé et j'ai un message d'erreur 'erreur d'exécution 5, argument ou appel de procédure incorrecte. le problème c'est que j'ai essayé de changer la directory et me placer dans la bonne mais il prend par défaut celle de windows.
encore mille excuses
 

2passage

XLDnaute Impliqué
Re,

L'erreur d'execution 5, ca doit etre le découpage de chaine trop courte (prendre le 9ème caractère d'une chaine de 4, ca foire ^^)
Il y a d'autres fichiers que les alertes_*** dans le répertoire ?

Je te propose de remplacer la ligne

strtst = Dir('')
par
strtst = Dir('alertes_*.xls')

vala
A+
 
C

crinquinette

Guest
re re bonjour,
j'avais déjà essayé et j'ai refais voici ce que j'ai :
Sub CommandButton1_Click()
Dim strtst As String

ChDrive 'R'
ChDir 'R:\\01 - Sujets transverses\\00 - Suivi et Documents communs\\ZDEM Portefeuille des demandes\\Gestionnaire des demandes\\Alertes'

strtst = Dir('')
Do While strtst <> ''
If IsDate(Mid(strtst, 9, 2) & '/' & Mid(strtst, 11, Len(strtst) - 16) & '/' & Mid(strtst, Len(strtst) - 5, 2)) = False Then GoTo suivant
If CVDate(Mid(strtst, 9, 2) & '/' & Mid(strtst, 11, Len(strtst) - 16) & '/' & Mid(strtst, Len(strtst) - 5, 2)) < Now() - 7 Then
Kill strtst
End If
suivant:
strtst = Dir
Loop
End Sub
et malgré cela il ne va pas dans le bon répertoire pour tuer les fichiers, je deviens chèvre
merci
clo
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 292
Membres
103 171
dernier inscrit
clemm