Supprimer fichier excel avec macro

Résolu/Fermé
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009 - 8 avril 2009 à 10:57
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009 - 10 avril 2009 à 14:44
Bonjour,

Je suis devenu un inconditionnel du forum comment ça marche? En effet j'ai déjà fait un post ici qui a été resolu. Je dis un merci a tout le forum. Le but c'est que j'ai une macro qui me crèè , copie et sauvegarde mon fichier excel courant dans un repertoire différent et cela toutes les heures. Ce problème a été resolu maintenant j'ai envie de créer une macro qui supprimera automatiquement les fichiers sauvegarder la veille. Cette suppression doit se faire qu'une seule fois dans la journée; J'ai pu trouver une macro qui fonctionne et me supprime le contenu du dossier, car après la sauvegarde du (des) fichier(s) il va falloir faire en sorte que les fichiers ayant quelques jours soient automatiquement détruits. Mais la macro de destruction doit se déclencher une seule fois dans la journée. voic le code ma macro:



Sub SupprContenu()

Dim Fic As String

Fic = Dir("\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\")
Do While Fic <> ""
Kill "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & Fic
Fic = Dir
Loop


End Sub

Elle supprime tout le contenu du dossier mais je ne sait pas comment faire pour l'obliger a se démarrer automatiquement a l'ouverture du fichier excel et une seule fois dans la journée et où la mettre exactement.

Merci pour toutes les bonnes volontés
A voir également:

44 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 759
8 avril 2009 à 21:44
autant pour moi... Il faut effectivement tester d'abord l'existence du fichier texte :
If Dir("Chemin & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & " - " & Hour(Time) & "H" & Minute(Time) & "m" & Second(Time) & "s" & ".txt", vbNormal) = "" Then
fichiertexte = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & " - " & Hour(Time) & "H" & Minute(Time) & "m" & Second(Time) & "s" & ".txt"
Call auto_open
Call creation

peut être?
0
Utilisateur anonyme
9 avril 2009 à 08:53
Mon post n'était pas pour toi pijaku, ton code faisait bien le test. Par contre la reprise de jah_haile_selassie est erronée.

Mais bon, il semble satisfait ...
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
9 avril 2009 à 09:31
Bonjour Priouman;

C'est vrai que je suis allé trop vite :( en effet mon effacement ne se lance plus! comment faire le test que le fichier texte est créé? et ce fichier lorsque j'indique l'emplacement il n'y est pas!
Merci encore d'éclairer ma lanterne.

Bonne journée a vous
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
9 avril 2009 à 09:53
En plus je pense que j'aurais tjrs le même problème! Parceque mon but n'est pas celui d'effacer tout le contenu du dossier mais une partie du dossier. Exemple supprimer seulement des fichiers contenus dans le dossier qui ont été créé et sauvegarde il y'a par exemple 2 ou3 jours de cela... Et la je bloque.
0

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

Posez votre question
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 759
9 avril 2009 à 11:00
Bonjour,
Pour le test voit mon post n°21.
Pour le choix des fichiers à effacer, donne nous le nom de sauvegarde de tes fichiers.
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
9 avril 2009 à 11:07
Bon bon...J'ai fais ceci:

Private Sub Workbook_Open()
Dim Chemin As String
Dim fichierTexte As String
Chemin = "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\"



If Dir(Chemin & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & " - " & Hour(Time) & "H" & Minute(Time) & "m" & Second(Time) & "s" & ".txt", vbNormal) = "" Then
fichierTexte = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & " - " & Hour(Time) & "H" & Minute(Time) & "m" & Second(Time) & "s" & ".txt"
Call auto_open
Call creation
End If
Call creation

End Sub
call creation c'est l'appel de ma procedure de copie et de sauvegarde de fichier excel et call auto_open c'est celle de ma procedure de suppression de fichier. Je fait d'abords un test en créant un fichier texte ayant la date du système comme nom et je verifie s'il existe. ensuite je lance mon effacement et après je lance ma creation. Le blème c'est que mon effacement se lancement plusieurs fois dans la journée alors qu'il devrait se lancer qu'une seule fois!
Quelqu'un a t-il une idée qui marche? et dites moi s'il vous plaît comment ça marche?

Le nom de sauvegarde de mes fichiers sont : test- 9-4-2009 - 10H53m16s.xls Il s'agit juste de la date courante du nom du fichier et de l'heure courante

Je précise que je n'ai aucune erreur de compilation sur ma workbook_open.

Merci
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 759
9 avril 2009 à 11:13
Ton fichier texte ne devrait pas tenir compte de l'heure et des minutes :
fichierTexte = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".txt"
Sinon effectivement le test ne trouve pas le fichier..... car il n'existe pas.
Ensuite pour le choix de l'effacement c'est beaucoup plus difficile. Il faudrait peut être passer par un userform.
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
9 avril 2009 à 11:20
Oui justement mais je ne comprends pas pourquoi le fichier n'existe pas? Dois-je l'initialiser avant le if du test?
Dois-je faire ceci ? :--> ActiveWorkbook.Save Filename:=fichierTexte. et Où ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 759
9 avril 2009 à 11:30
Non si tu créé un fichier à l'instant T en le nommant : 9-4-2009 11h20m54s.txt. Quand tu va réouvrir ton fichier excel 5 sec plus tard, il va cherche 9-4-2009 11h20m59s.txt et ne le trouvera pas!!!
Pour la suppression de tes fichiers il serait intéressant de les enregistrer d'abord dans un sous dossier à la date du jour. essaie d'ajouter à ta sub creation : mkdir "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & CDate(date)
mkdir créé un nouveau dossier...
ensuite à ta macro auto_open tu ajoutes quelque chose comme ce que je mets en gras :
Dim Fic As String
Dim jour As String
jour = InputBox("saisir la date à laquelle vous souhaitez supprimer les fichiers", "date")

Fic = Dir("\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & jour)
Do While Fic <> ""
Kill "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & Fic
Fic = Dir
Loop
Je ne suis pas sur de moi, et ne sais pas si ça fonctionne mais c'est une piste.
0
Utilisateur anonyme
9 avril 2009 à 11:51
Pour la partie lancée à l'ouverture du classeur, voila qui marchera mieux (enfin je crois!)


Private Sub Workbook_Open()

Chemin = "c:\" ' mettre le chemin ou est le fichier à tester
NomFic = CLng(Date) & ".txt" ' nom du fichier CLng transforme la date en numérique Long ça évite les manipulation de chaine

If Dir(Chemin & NomFic) = "" Then 'si le fichier de la date du jour n'existe pas

Set fs = CreateObject("Scripting.FileSystemObject") 'on crée le fichier date du jour
Set a = fs.CreateTextFile(Chemin & NomFic, True)
a.Close

Call auto_open ' on lance l'effacement

End If ' Il n'y a pas de sinon puisque si le fichier existe on ne fait rien

Call creation 'on appelle l'autre proc

End Sub

A+
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
9 avril 2009 à 11:56
Vraiment désolé encore mais j'ai une question toute bête ; en faite dans ma procedure creation j'ai une boucle et je ne sais pas où mettre la création du dossier c'est-a-dire--> MkDir "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & CDate(Date).
je le met où? avant ou dant la boucle?
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
9 avril 2009 à 13:16
comment faire pour que l'efacement se lance une seule fois? étant donné que a l'heure du système ma macro se lance tjrs? alors que je veu juste qu'elle efface une fois et en plus je ne trouve pas mon fichier texte créé. :(

J'ai tenté de créer un dossier de sauvegarde avec mkdir comme pijaku me l'as conseillé mais rien a faire
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
9 avril 2009 à 14:39
Private Sub Workbook_Open()
Dim Chemin As String
Dim fichierTexte As String
Chemin = "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\"





NomFic = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".txt"
If Dir(Chemin & NomFic) = "" Then 'si le fichier de la date du jour n'existe pas


Call auto_open ' on lance l'effacement

Set fs = CreateObject("Scripting.FileSystemObject") 'on crée le fichier date du jour
Set a = fs.CreateTextFile(Chemin & NomFic, True)
a.Close

Call creation 'on appelle l'autre proc

End If ' Il n'y a pas de sinon puisque si le fichier existe on ne fait rien

Call creation 'on appelle l'autre proc
End Sub

Voici ce que j'ai fait et j'arrive a lancer une seule fois mon effacement et créer mon fichier texte nommé avec la date courante Trop content!!! en tout cas comment ça marche et vous les mecs c'est de la bombe!!!!

Bon j'ai toujours le problème de choisir par exemple uniquement les fichiers copiés et sauvégardés il y'a a peu près 2 ou 3 jours? Aidez moi
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 759
9 avril 2009 à 18:55
pour "choisir" les fichiers à effacer, tu ajoutes une inputbox dans ta sub "effacement". Du style :
dim jour as string
jour = inputbox("saisir la date des fichiers à effacer. Attention au format!!!","effacer")

et après ça tu efface le contenu du sous-dossier dont le nom correspond à la date que tu as saisi
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
10 avril 2009 à 10:17
Bonjour Pijaku, et merci encore pour la patience!!!

N y'a-t-il pas une solution sans que l'utilisateur ne soit appelé a saisir la date? :( Et en plus je voulais savoir c'est sur qu'elle format la date? ce format ci ----> 10-4-2009? Et---->"effacer" fait référence a quoi? . Et en plus je n'ai qu'un seul dossier de sauvegarde je veux juste effacer certains fichiers qui sont dans un même dossier mais en fonction de la date.

Merci encore et j'espères que je suis claire dans mes questions.

Bonne journée.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 759
10 avril 2009 à 10:21
Bonjour,
Non à ta question. La saisie de date est inévitable car tu veux supprimer les fichiers enregistrés il y a 3 jours ou 2 jours, ça n'est pas fixe. C'est pourquoi initialement, je te proposais de créer un sous-dossier à la date du jour (au format 10-4-2009 si tu veux), pour pouvoir supprimer simplement son contenu quand tu le souhaites (format 10-4-2009 pour répondre à ta 2ème interrogation).
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
10 avril 2009 à 11:00
Oui mais pour les rendre fixes on peut par exemple supprimer des fichiers sauvegarder il y'a 2 jours. Par exemple si j'ai fait mes sauvegardes lundi alors je les supprime le mercredi. ça c'est possible ou pas?

Et voici ce que j'ai rajouter sur ma proc d'effacement:

Sub auto_open()

Dim Fic As String
Dim Jour As String
Jour = InputBox("saisir la date à laquelle vous souhaitez supprimer les fichiers", "date")

Fic = Dir("\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & Jour)
Do While Fic <> ""

Kill "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & Fic & Jour
Fic = Dir
Loop

End Sub
J'ai mis ma question comme tu me l'as conseillé et dans ma création j'ai fait ceci:

Sub creation()


Dim Chemin As String
Dim fname As String

MkDir "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & CDate(Date)

debut:
Start = Timer
intervalle = 60

Do While Timer < Start + intervalle
DoEvents ' Donne le contrôle à d'autres processus.
Loop

Chemin = "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\"

fname = Chemin & "test- " & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & " - " & Hour(Time) & "H" & Minute(Time) & "m" & Second(Time) & "s" & ".xls"


ActiveWorkbook.SaveCopyAs Filename:=fname


GoTo debut

End Sub

Mais J'ai une erreur sur MkDir on me dit chemin introuvable. Peut-être que je fais mal ma création de dossier. Et pourtant mon chemin me semble correcte
:(
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 759
10 avril 2009 à 11:35
Dur dur!!!
Effectivement : MkDir chemin introuvable.... Après recherches... voilà pourquoi :
c'est le format de CDate(Date) qui ne convient pas!!! en effet, il ne veux pas créer un sous-dossier nommé 10/04/2009, les slash le gènent... Alors la solution est :

Dim jour As String
jour = Format(Date, "dd_mm_yyyy")
MkDir "Ton chemin complet\" & jour
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
10 avril 2009 à 12:14
Oui Dur pour moi comme tu le dit!
Avec les modification apporter il me crèe le dossier nommé par la date courante mais il ne me pose pas la question de savoir a quel date je veux supprimer mes fichiers; Ce qui est normale vu ke tu m'a conseillé de mettre ceci--->jour = Format(Date, "dd_mm_yyyy") au lieu de ceci---->Jour = InputBox("saisir la date à laquelle vous souhaitez supprimer les fichiers", "date")?
En plus il ne me crèè pas mes fichiers de sauvegarde dans le dossier nommé avec la date courante: voici le code que j'ai:

------------------------Dans ma procedure de creation--------------------------------------
Sub creation()


Dim Chemin As String
Dim fname As String
Dim jour As String
jour = Format(Date, "dd_mm_yyyy")
MkDir "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & jour


debut:
Start = Timer
intervalle = 60

Do While Timer < Start + intervalle
DoEvents ' Donne le contrôle à d'autres processus.
Loop

Chemin = "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\"

fname = Chemin & "test- " & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & " - " & Hour(Time) & "H" & Minute(Time) & "m" & Second(Time) & "s" & ".xls"
ActiveWorkbook.SaveCopyAs Filename:=fname
GoTo debut

End Sub
----------------------Dans ma procedure d'effacement-----------------------------------
Sub auto_open()

Dim Fic As String
Dim jour As String
jour = Format(Date, "dd_mm_yyyy")

Fic = Dir("\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & jour)
Do While Fic <> ""

Kill "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & Fic & jour
Fic = Dir
Loop

End Sub

En plus mon effacement des fichiers ne fonctionne plus :(
-------------
Je sais que c'est dur mais j'ai vraiment besoin d'un gros coup de pouce.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 759
10 avril 2009 à 12:16
je te propose de refaire le code en entier pour que cela fonctionne. Peux tu me remettre tout ton code ici.
1- ton workbook_open
2- ta sub creation
3- ta sub auto_open (effacement)
et je vais te bricoler un truc qui fonctionne.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 759
10 avril 2009 à 12:28
Pas la peine de remettre le code... Il y est déjà 3 ou 4 fois...
Essaye ceci :

Sub creation()
Dim Chemin As String
Dim fname As String
Dim jour As String
jour = Format(Date, "dd_mm_yyyy")
MkDir "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & jour
debut:
Start = Timer
intervalle = 60
Do While Timer < Start + intervalle
DoEvents ' Donne le contrôle à d'autres processus.
Loop
Chemin = "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\"
fname = Chemin & "test- " & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & " - " & Hour(Time) & "H" & Minute(Time) & "m" & Second(Time) & "s" & ".xls"
ActiveWorkbook.SaveCopyAs FileName:=fname
GoTo debut
End Sub

Sub auto_open()
Dim var, Fic As String
var = InputBox("Saisir la date à laquelle vous souhaitez effacer les fichiers. Attention bien saisir au format dd_mm_yyyy!!", "date d'effacement")
Fic = Dir("\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & var)
If Fic <> "" Then
Kill "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & Fic
Else
MsgBox ("le sous-dossier que vous souhaitez effacer est vide. Veuillez vérifier.")
End If
End Sub

Private Sub Workbook_Open()
Dim Chemin As String
Dim fichierTexte As String
Chemin = "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\"
NomFic = Day(Date) & "-" & Month(Date) & "-" & Year(Date) & ".txt"
If Dir(Chemin & NomFic) = "" Then 'si le fichier de la date du jour n'existe pas
Call auto_open ' on lance l'effacement
Set fs = CreateObject("Scripting.FileSystemObject") 'on crée le fichier date du jour
Set a = fs.CreateTextFile(Chemin & NomFic, True)
a.Close
Call creation 'on appelle l'autre proc
End If ' Il n'y a pas de sinon puisque si le fichier existe on ne fait rien
Call creation 'on appelle l'autre proc
End Sub
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
10 avril 2009 à 14:05
Salut,
J'ai testé exactement ce que tu m'a donné sans rien changé juste en vérifiant un peu pour ma comprehension. Mais j'ai tjrs cette erreur lié a mkdir! L'erreur d'exécution '75' Erreur d'accès chemin fichier. C'est du a quoi stp? Et pourtant j'ai mon dossier nommé avec la date qui se crèe :(
0
jah_haile_selassie Messages postés 60 Date d'inscription mardi 31 mars 2009 Statut Membre Dernière intervention 25 juin 2009
10 avril 2009 à 14:10
Et normalement quand ça crèèe le dossier ça doit créé aussi les fichiers dedans non? Mais non ça ne me crèè rien dedans.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 759
10 avril 2009 à 14:21
Fectivement!!!
Regardes ta sub creation :
tu créés un répertoire : MkDir "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\" & jour
et tu enregistres sous :
Chemin = "\\Ds-srv-hector\commun\DPAPH\Service Tarification\Sauvegarde temps réel\"
fname = Chemin & "test- " & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & " - " & Hour(Time) & "H" & Minute(Time) & "m" & Second(Time) & "s" & ".xls"
ActiveWorkbook.SaveCopyAs FileName:=fname
Il convient donc d'ajouter au Chemin : & jour
0