XL 2016 enregistrer sur le bureau chaque 5mn classeur actif sous son nom +1

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

Afin d'éviter ou de réduire les risques de pertes de données saisies, je voudrais faire ce qui suit :

Enregistrement automatique chaque 5 mn (ou à paramétrer selon besoin) du fichier sous un autre nom
actuellement : nom du fichier = valeur A1

J'ai relevé le code sur : https://forum.excel-pratique.com/viewtopic.php?t=18819 que je remercie au passage

Le code enregistre dans "mes documents"
J'ai besoin que l'enregistrement se fasse sur le bureau de l'ordinateur (ou autre nom du bureau, quel que soit l'ordinateur)

D'autre part et si possible LOL
en remplacement des codes : Range("b1").Value = Range("b1").Value + 1 et [a1] = "=""enregistrement""&RC[1]"
qui m'obligent à occuper 2 cellules (a1 et b1) de ma feuille … est-il possible d'écrire un code qui enregistre directement sous le nom du classeur actif +1
J'ai cherché et fait des tests sans meilleure réussite.

Comme d'hab, je fais appel à votre expertise pour une solution qui m'arrangerait bien :)
Je joins le fichier test paramétré pour tests toutes les 10 secondes.

Un grand merci une fois de plus à toutes et à tous,
Amicalement,
Lionel,
 

Pièces jointes

  • enregistrement69.xlsm
    20 KB · Affichages: 18
Dernière édition:

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Re-Gérard,

Je comprends ta réaction :)
C'est vrai que je suis un incorrigible "bidouilleur".
Toutefois le fichier test que j'ai joint au post #28 fonctionne parfaitement bien que j'ai modifié pour qu'il affiche le nom sans les secondes.

Mais j'ai repris ton code d'origine que tu m'as remis au post #29.
j'ai copié tel quel (à l'identique) les codes dans mon fichier de travail :
- codes module et dans le ThisWorkbook

et même problème :
- il garde tous les fichiers sauvegardés

J'ai pensé qu'il y avait peut-être un code dans le ThisWorkbook "Private Sub Workbook_Open()" de mon fichier de travail qui pouvait poser problème.
J'ai donc tout supprimer pour ne laisser que :
VB:
Option Explicit

Private Sub Workbook_Open()
    Columns("B:B").Select
    Selection.ClearContents
    Range("a2").Select

t = Now + 1 / 1440 'délai 1 minute
Application.OnTime t, "Enregistrer" 'lance le processus
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
On Error Resume Next
Application.OnTime t, "Enregistrer", , False 'arrête le processus
End Sub
Et c'est pareil le code "Sub tri(a, gauc, droi)" qui ne s'exécute pas !

Je suis désolé de peut-être t'irriter avec ça mais c'est un vrai mystère que je ne comprends pas.
Peut-être un module vba masqué ??, que je ne vois pas et donc pas copié dans mon fichier de travail !
Je continue à chercher :)
lionel,
 
Dernière édition:

job75

XLDnaute Barbatruc
Pour chercher correctement teste en modifiant ainsi la fin de la macro :
VB:
'---on ne garde que les 2 derniers fichiers---
For n = 0 To UBound(a) - 2
    If Dir(chemin & x & Format(a(n), "dd-mm-yy hh-mm-ss") & ".xlsm") = "" Then _
        MsgBox chemin & x & Format(a(n), "dd-mm-yy hh-mm-ss") & ".xlsm" & " n'existe pas..."
    Kill chemin & x & Format(a(n), "dd-mm-yy hh-mm-ss") & ".xlsm"
Next
Note aussi que l'instruction Kill ne fonctionne pas si le fichier est ouvert.
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
J'ai testé et modifié le code comme comme indiqué :
VB:
'---on ne garde que les 2 derniers fichiers---
For n = 0 To UBound(a) - 2
    If Dir(chemin & x & Format(a(n), "dd-mm-yy hh-mm-ss") & ".xlsm") = "" Then _
        MsgBox chemin & x & Format(a(n), "dd-mm-yy hh-mm-ss") & ".xlsm" & " n'existe pas..."
    Kill chemin & x & Format(a(n), "dd-mm-yy hh-mm-ss") & ".xlsm"
Next

Il ne me renvoie pas le message " n'existe pas..."

D'un autre côté, je ne comprends pas bien ta phrase :
"Note aussi que l'instruction Kill ne fonctionne pas si le fichier est ouvert."

Pourtant le fichier test fonctionne et le fichier est bien ouvert à chaque fois sous son nouveau nom !
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Encore merci Gérard :)
J'ai mis le code comme ça :
VB:
For n = 0 To UBound(a) - 2
    If Dir(chemin & x & Format(a(n), "dd-mm-yy hh-mm-ss") & ".xlsm") = "" Then _
        MsgBox chemin & x & Format(a(n), "dd-mm-yy hh-mm-ss") & ".xlsm" & " n'existe pas..."
    Kill chemin & x & Format(a(n), "dd-mm-yy hh-mm-ss") & ".xlsm"
Next
MsgBox "Dimension du tableau a : " & UBound(a)
End Sub

le kill n'est pas exécuté et aucun message n’apparaît
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Rectification :
Pourtant le fichier test fonctionne et le fichier est bien ouvert à chaque fois sous son nouveau nom !
les fichiers antérieurs sont bien fermés puisque le fichier est enregistré sous le nouveau nom.
C'est certainement pour ça que le KILL fonctionne sur le fichier test.


Bon, je vais arrêter de te prendre la tête avec ça, je vais voir comment faire pour que mes commerciales ne soient pas envahies de fichiers LOL
Vraiment merci Gérard pour tout ce que tu fais :)
lionel,
[/QUOTE]
 

job75

XLDnaute Barbatruc
Puisque l'instruction MsgBox "Dimension du tableau a : " & UBound(a) ne renvoie pas de message c'est que la boucle While/Wend n'est pas exécutée.

Donc que Dir(chemin & x & "*.xlsm") ne correspond a aucun fichier.

Alors peut-être que tes fichiers ne sont pas des fichiers .xlsm ?



 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Bon JM, le Forum,
Bon dimanche à toutes et à tous,

Non pas de commentaire car, bien évidemment, je connais cette fonctionnalité d'excel.
L'utilisation avec mes commerciales serait trop longue à expliquer.
lionel :)
Le préciser dès le premier message aurait pu être utile ;)
Pour le moins, il t'aurait éviter de lire ce message-ci (et le #30) ;)

NB: Faire suivre une formation Excel (de base) à tes commerciales pourraient être un plus, non ?
Et réduirait peut-être les potentiels (et rééls) déboires* avec ton usine à gaz ? ;)
(* dont tu parles dans diffèrentes de tes questions sur le forum)
 

Discussions similaires

Statistiques des forums

Discussions
311 730
Messages
2 081 991
Membres
101 856
dernier inscrit
Marina40