VBA sauvegarde clef USB récalcitrante

gaelick

XLDnaute Nouveau
Bonsoir à tous, bonsoir au forum XLD et à tous les excéliens !
Voici mon grooooooooos problème.
J'ai crée une macro qui quand on ferme le fichier (17 megas!) par la croix en haut à droite sauvegarde sur place et enregistre le fichier dans le disque dur "maître" jusque là rien de bien nouveau mais en suivant il envoie et sauvegarde sur une clef USB ce même fichier en ajoutant la date et l'heure dans le titre. Mais en plus il fait cela 7 fois puis arrivé à la 8° il "écrase" la 1° sauvegarde
(de sorte que sur la clef il ne doit rester que les 7 dernières sauvegardes).
Ouep mais problème il y a... Le débogueur dit = Erreur d'execution 70:permission refusée sur FichSauv.Delete
Je joins mon code.
------------------
Sub SauvegardeClasseur1()
Dim Nom As String, Fichier As String, Jour As String, Mois As String, Année As String, Heure1 As String, Heure2 As String
'Permet de sauvegarder le classeur sur son emplacement, rien d'extraordinaire'
ActiveWorkbook.Save
'Mise en forme de la date et l'heure. Le 0 semble permettre de gérer la forme "04" janvier au lieu de "4" janvier''
Année = Year(Date)
Mois = Format(Month(Date), "0#")
Jour = Format(Day(Date), "0#")
Heure1 = Format(Hour(Time), "0#")
Heure2 = Format(Minute(Time), "0#")
'Mise en forme de la dénomination de la sauvegarde'
Fichier = "Happy Hour 7.8 " & "du " & Année & "-" & Mois & "-" & Jour & " à " & Heure1 & "H" & Heure2
'Chemin de destination'
Fichier = "E:\SauvegardeFichiers\" & Fichier
'Mise en forme de la sauvegarde'
ActiveWorkbook.SaveAs Filename:=Fichier, FileFormat:=xlNormal
'Début de la partie gestion des archives de sauvegarde'
Dim Dossier As Object, FichSauv As Object
Dim Chemin As String, Nb As Byte
'Indication du chemin où se trouve la sauvegarde'
Chemin = "E:\SauvegardeFichiers\"
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
'Gestion des 7 sauvegardes avec écrasement systématique de la plus ancienne'
Nb = Dossier.Files.Count
For Each FichSauv In Dossier.Files
If Nb > 7 Then
FichSauv.Delete
Exit Sub
End If
Next
Application.Quit
End Sub
--------------------------
Je soumet mon problème à votre sagacité.
J'ai essayé de virer le End If mais evidemment ça march pô :rolleyes:
Etc etc Je suis à cours d'arguments. Pouvez vous m'aider
Merci d'avance
XP Pro SP2 - Excel 2000
 

gaelick

XLDnaute Nouveau
Re : VBA sauvegarde clef USB récalcitrante

Bonjour le forum,bonjour ninbihan, bonjour à tous
Ce matin je m'y suis remis est je suis revenu à ta soluce en la séparant en deux Sub.
Et par hasard en cherchant sur le forum je suis retombé sur mon fil et je viens de voir ton post ! :D
Effectivement c'est cette solution que je creuse. Je tiens au courant.
A plus et merci de repenser à mon prob :rolleyes:
Merci aussi MJ13
 

gaelick

XLDnaute Nouveau
Re : VBA sauvegarde clef USB récalcitrante

Re bonjour ninbihan,
J'ai quitté mon idéee de faire deux Sub.
La nouvelle mouture que tu proposes écrase le dernier fichier crée mais pas le premier.
C'est dommage là parce que là oui qu'on est pas loin !
CAD qu'il crée le nouveau fichier (cool!) mais le met à la place de la plus récente sauvegarde au lieu d'aller virer la plus ancienne sauvegarde!
C'est tout ce qu'il fait de "mal".

Sinon
J'ai rajouté un MsgBox pour rassurer la personne qui utilise ce fichier!
Je continue et persévere à nouveau.
A +
 

gaelick

XLDnaute Nouveau
Re : VBA sauvegarde clef USB récalcitrante

Je suis revenu à la soluce de ninbihan
------------
Sub SauvegardeClasseur1()

'Début de la partie gestion des archives de sauvegarde'
Dim Dossier As Object, FichSauv As Object
Dim Chemin As String, Nb As Byte
'Indication du chemin où se trouve la sauvegarde'
Chemin = "E:\SauvegardeFichiers\"
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFold er(Chemin)
'Gestion des 7 sauvegardes avec écrasement systématique de la plus ancienne'
Nb = Dossier.Files.Count
For Each FichSauv In Dossier.Files
If Nb > 6 Then
FichSauv.Delete

End If
Next
Dim Nom As String, Fichier As String, Jour As String, Mois As String, Année As String, Heure1 As String, Heure2 As String
'Permet de sauvegarder le classeur sur son emplacement, rien d'extraordinaire'
ActiveWorkbook.Save
'Mise en forme de la date et l'heure. Le 0 semble permettre de gérer la forme "04" janvier au lieu de "4" janvier''
Année = Year(Date)
Mois = Format(Month(Date), "0#")
Jour = Format(Day(Date), "0#")
Heure1 = Format(Hour(Time), "0#")
Heure2 = Format(Minute(Time), "0#")
'Mise en forme de la dénomination de la sauvegarde'
Fichier = "Happy Hour 7.8 " & "du " & Année & "-" & Mois & "-" & Jour & " à " & Heure1 & "H" & Heure2
'Chemin de destination'
Fichier = "E:\SauvegardeFichiers\" & Fichier
'Mise en forme de la sauvegarde'
ActiveWorkbook.SaveAs Filename:=Fichier, FileFormat:=xlNormal
Application.Quit
End Sub
-----------------
C'est un systeme qui efface tous les fichiers des qu'on arrive à 7, mais bon c'est pas mal non plus.
Je vais fouiner je finirai bien par y arriver. Je suis tetu ! :cool:
 

gaelick

XLDnaute Nouveau
Re : VBA sauvegarde clef USB récalcitrante

Rebonsoir à tous,
J'ai modifié cette partie du code mais il sort une
Erreur 13 = incompatibilité de type


-------------
Sub SauvegardeClasseur1()
MsgBox ("Cela va prendre du temps ! PAS D'INQUIETUDE ! Vous pouvez vaquer à vos occupations ! Happy Hour va s'enregistrer automatiquement!")
'Début de la partie gestion des archives de sauvegarde'
Dim Dossier As Object, FichSauv As Object
Dim Chemin As String, Nb As Byte
'Indication du chemin où se trouve la sauvegarde'
Chemin = "E:\SauvegardeFichiers\"
Set Dossier = CreateObject("Scripting.FileSystemObject").GetFolder(Chemin)
'Gestion des 7 sauvegardes avec écrasement systématique de la plus ancienne'
Dim O As String
O = Dir("E:\SauvegardeFichiers\")
If Dir("E:\SauvegardeFichiers\", vbNormal) > 6 Then
Kill O
End If

Dim Nom As String, Fichier As String, Jour As String, Mois As String, Année As String, Heure1 As String, Heure2 As String
'Permet de sauvegarder le classeur sur son emplacement, rien d'extraordinaire'
ActiveWorkbook.Save
'Mise en forme de la date et l'heure. Le 0 semble permettre de gérer la forme "04" janvier au lieu de "4" janvier''
Année = Year(Date)
Mois = Format(Month(Date), "0#")
Jour = Format(Day(Date), "0#")
Heure1 = Format(Hour(Time), "0#")
Heure2 = Format(Minute(Time), "0#")
'Mise en forme de la dénomination de la sauvegarde'
Fichier = "Happy Hour 7.8 " & "du " & Année & "-" & Mois & "-" & Jour & " à " & Heure1 & "H" & Heure2
'Chemin de destination'
Fichier = "E:\SauvegardeFichiers\" & Fichier
'Mise en forme de la sauvegarde'
ActiveWorkbook.SaveAs Filename:=Fichier, FileFormat:=xlNormal

Application.Quit
End Sub
----------------

Quelqu'un aurait une idée pour débloquer la chose ?!
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA sauvegarde clef USB récalcitrante

Gaelick,

j'ai pas tout suivi par manque de PC et de temps.

dans ton dernier post si tu as recopier tout ton code, je ne vois pas la boucle qui permet de faire toutes les sauvegardes

est-ce un oubli ou sauve-tu tous les fichiers avec le même nom ?
ou aurais-je trop tiré sur la bouteille ?

remet une fois Application.DisplayAlerts = True et réessaye en prenant note des noms de fichiers des messages de confirmation
:eek::eek: c'est peut-être là que ça merde:mad::mad:
 

gaelick

XLDnaute Nouveau
Re : VBA sauvegarde clef USB récalcitrante

Bonsoir phlaurent55,

Pour la sauvegarde il n y a pas de boucle à proprement parler.:)
Simplement le fichier est sauvé par ajout du nom de fichier "Happy Hour 7.8" + "du" + "année etc.
La boucle s'il doit y en avoir une c'est au niveau de l'effacement de la sauvegarde la plus ancienne.:mad:
Quant mettre un display alert : surtout pas car je veux que le fichier se referme sans confirmer quoi que ce soit en effet si on ferme la session c'est que ... bé on ferme et basta, le travail est fini basta ! :D
Mais comment tu es encore sur la toile y a pas réveillon ? Remarque je dis ça mais moi aussi le réveillon bof:eek:
 

gaelick

XLDnaute Nouveau
Re : VBA sauvegarde clef USB récalcitrante

Re,
Non mon prob maintenant est de trouver un code en If .. Then (et Else surement..) pour indiquer que c'est la sauvegarde la plus ancienne que je veux virer ! Mais j'y arriverai ! Je suis largement pas un crack en Excel mais je l'aurai un jour ! je l'aurai ! comme on dit dans la pub ! :D:D
 

gaelick

XLDnaute Nouveau
Re : VBA sauvegarde clef USB récalcitrante

Bonsoir Guillaumega,

Toi aussi le réveillon c'est bof ? :D

Non je rigoles :p

Oui c'est vrai que je cherche un bout de code de surement 3 ou 4 lignes pour killer la sauvegarde la plus ancienne sur une liste de fichier finissant en .xls :eek:
 

gaelick

XLDnaute Nouveau
Re : VBA sauvegarde clef USB récalcitrante

Re,
Les fichiers ont la forme suivante aprés sauvegarde =
Happy Hour 7.8 du 2007-12-31 à 18H10.xls

(L'année puis le mois puis le jour puis l'heure sous cette forme parce que sinon Windows ne les classe pas par ordre chronologique !)
 

Guillaumega

XLDnaute Impliqué
Re : VBA sauvegarde clef USB récalcitrante

Je veux pas refaire le monde mais j'ai encore un espoir que mon réveillon ne soit pas bof :)
Donc laisse moi quelques minutes et avec un peu de chances j'arrêterai de spammer le forum.

Pour ton code, 1 je suis une brèle en VBA. Jamais appris et j'ai fait de toute ma vie une seule boucle idiote tout seul - que dis-je... en me faisant aider !!!

Tout ca pour dire que si j'étais toi (de toutes les façons je pige rien au code mdr), je renommerais le fichier alcon_version2.xls en alacon_version1.xls ce qui écrase le fichier le plus ancien. Et ainsi de suite jusqu'à 7. Ton nouveau fichier peut alors écraser ton fichier alacon_version8 (qui est alors sauvegardé en alacon_version7).

Et si c'est trop long. Faire l'opération sur le C: puis rebalancer l'ensemble sur le usb stick.

Stupide ou non? ;)
A+
Guillaumega
 

jeanpierre

Nous a quitté
Repose en paix
Re : VBA sauvegarde clef USB récalcitrante

Re,

A bien lire, c'est peut-être normal que tes fichiers anciens ne soient pas virés.....

Comment veux-tu que le système sache que tu souhaites virer le truc de 17h43, plus que celui de 17h42....

Tes fichiers n'ont jamais le même nom..... Il faudrait voir sur un formatage de la disquette avant, ou un simple effacement. Même avec une logique propre et indélébile, je ne vois pas....

Pour Guillaméga, sur ce fil et sur d'autres ??????????????????????????????????????????????????????
 
Dernière édition:

gaelick

XLDnaute Nouveau
Re : VBA sauvegarde clef USB récalcitrante

Rebonsoir à tous,
Effectivement jeanpierre tu as tout compris le prob est bien là !
Guillaumega ton idée non n'est pas stupide je sais pas encore comment l'appliquer mais ouais en fait pourquoi pas. En fait en voulant faire précis il vaudrait mieux faire pragmatique quoi !
Mais bon
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 489
Messages
2 088 855
Membres
103 976
dernier inscrit
kaizertv2001@gmailcom