Enregistrement régulier (Ctrl S) tous les 1/4 d'heure en VBA ?

Bonjour à tous,

Je me sers d'un fichier de surveillance que j'ouvre le matin à une date et heure que je dois mentionner, que j'incrémente toute la journée avec des faits passés, que je dois enregistrer en Pdf, toujours avec heure et date de clôture. Ca c'est fait et fonctionne très bien.

Une fois fait je fais RAZ le fichier retrouve son aspect du départ (vierge) sur le bureau en attente de son réouverture le lendemain

Problème donc lorsqu'il y a une coupure de courant si non enregistré de façon régulière, vous en conviendrez !

Question donc :

Est-il possible s'il vous plait de faire un enregistrement régulier en Macro, comme "Ctrl S" sur un classeur, toutes les 10 mn ou 1/4 d'heure par exemple ?

Ligne à incorporer à un autre bout de code puisque j'en ai déjà sur Feuil!1 et ThisWorkook ;-)

Merci par avance

Bien à vous

Bonjour dasaquit, comme ceci ! Pour les coupures de courant, le mieux c'est d'avoir un onduleur derrière ta tour et ta box.

Sub EnregistrementPeriodique()
    ' Définir l'intervalle de temps en secondes (900 secondes = 15 minutes)
    Dim IntervalleEnSecondes As Double
    IntervalleEnSecondes = 900

    ' Planifier l'enregistrement automatique
    Application.OnTime Now + TimeSerial(0, 0, IntervalleEnSecondes), "EnregistrerFichier"
End Sub

Sub EnregistrerFichier()
    ' Enregistrer le classeur actif
    ThisWorkbook.Save

    ' Appeler à nouveau la macro pour planifier le prochain enregistrement
    EnregistrementPeriodique
End Sub

Hello stepaustras,

Un GRAAAAAAAND MEEEERCI pour ce code que je vais tester dès que possible et te faire un retour.

Oui je sais pour l'onduleur, mais vas expliquer ça à mon patron

J'insère ton code dans le miens dans ThisWorkook c'est ça ?

Dans ThisWorkook oui tu peux mettre ça à l'ouverture du classeur et arrêter la minuterie à la fermeture.

Private Sub Workbook_Open()
    ' Appelez la macro d'enregistrement périodique au démarrage du classeur
    EnregistrementPeriodique
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' Désactivez la minuterie avant de fermer le classeur
    On Error Resume Next
    Application.OnTime Now + TimeValue("00:00:10"), "EnregistrementPeriodique", , False
    On Error GoTo 0
End Sub

Sub EnregistrementPeriodique()
    ' Définissez l'intervalle d'enregistrement (en secondes)
    Dim Interval As Double
    Interval = 900 ' 15 minutes (900 secondes)

    ' Enregistrez le classeur
    ThisWorkbook.Save

    ' Programmez l'exécution de la macro à nouveau après l'intervalle spécifié
    Application.OnTime Now + TimeValue("00:00:" & Interval), "EnregistrementPeriodique"
End Sub

Alors j'ai un petit problème à l'ouverture sur cette ligne !

J'ai "arrangé" sur "ThisWorbook en "Workbook Open car déjà un, et ai copié tes deux autres codes dessous

capture333
Private Sub Workbook_Open()

    Application.ScreenUpdating = False

        Application.WindowState = xlMaximized

            Range("A1048576").Value = Format(Now, "YYYY")
                Range("G2").Value = WorksheetFunction.Proper(Format(Now, " DDDD D MMMM YYYY à hh\Hmm"))
                    Range("A1").Select

                        'Appelez la macro d'enregistrement périodique au démarrage du classeur
                                EnregistrementPeriodique

    Application.ScreenUpdating = True

End Sub
Sub EnregistrementPeriodique()
    ' Définissez l'intervalle d'enregistrement (en secondes)
    Dim Interval As Double
    Interval = 300 ' 5 minutes (300 secondes)

    ' Enregistrez le classeur
    ThisWorkbook.Save

    ' Programmez l'exécution de la macro à nouveau après l'intervalle spécifié
    Application.OnTime Now + TimeValue("00:00:" & Interval), "EnregistrementPeriodique"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' Désactivez la minuterie avant de fermer le classeur
    On Error Resume Next
    Application.OnTime Now + TimeValue("00:00:10"), "EnregistrementPeriodique", , False
    On Error GoTo 0
End Sub

remplace la ligne par ça

Application.OnTime Now + TimeSerial(0, 0, Interval), "EnregistrementPeriodique"

J'ai oubliez de te dire tu met ça dans ThisWorbook

Private Sub Workbook_Open()
    ' Appelez la macro d'enregistrement périodique au démarrage du classeur
    EnregistrementPeriodique
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' Désactivez la minuterie avant de fermer le classeur
    On Error Resume Next
    Application.OnTime Now + TimeValue("00:00:10"), "EnregistrementPeriodique", , False
    On Error GoTo 0
End Sub

et ça dans un module

Sub EnregistrementPeriodique()
    ' Définissez l'intervalle d'enregistrement (en secondes)
    Dim Interval As Double
    Interval = 900 ' 15 minutes (900 secondes)

    ' Enregistrez le classeur
    ThisWorkbook.Save

    ' Programmez l'exécution de la macro à nouveau après l'intervalle spécifié
    Application.OnTime Now + TimeSerial(0, 0, Interval), "EnregistrementPeriodique"
End Sub

Ensuite si tu as du code dans Workbook_Open() tu rajoutes simplement ça dedans EnregistrementPeriodique

Bonjour,

Sinon, Excel le propose nativement

Il suffit de paramétrer les options d'enregistrement

image

Et en cas de plantage ou de coupure de courant, relancer Excel seul, et icelui proposera la récupération du ou des fichiers ouverts lors du "crash"

Bonne journée

Bonjour, et bien vu cousinhub j'ai jamais regardé je ne sais pas si je l'ai sur excel 2007 Pourquoi faire simple quand on peu faire compliqué

Parce que on n'a pas nécessairement besoin d'impacter TOUS nos fichiers par de l'enregistrement automatique tous les .......

@stepaustras

Je m remets au boulot sur tes précos et te dis, d'ac ?

Bonjour (ou Re-,)

Parce que on n'a pas nécessairement besoin d'impacter TOUS nos fichiers par de l'enregistrement automatique tous les .......

Ouah, excuse-moi vraiment d'avoir pollué ton fil, promis, je n'interviendrai plus sur tes sujets...

PS, juste pour info, tu as vérifié dans tes options si l'enregistrement automatique de récupération n'était pas déjà activée?
(et essaie aussi de bien comprendre ma signature)

PS2, et n'oublie surtout pas que ta macro va être active de l'ouverture de ton fichier à sa fermeture... Bridage possible sur toute autre interaction

Allez, bon courage

Re Stepaustras,

Encore un grand merci ça fonctionne du tonnerre et suis paré pour Lundi grâce à toi.

Private Sub Workbook_Open()

    Application.ScreenUpdating = False

        Application.WindowState = xlMaximized

            ActiveWindow.ScrollColumn = 1
            ActiveWindow.ScrollRow = 1

        ActiveWindow.Zoom = Sheets("CAHIER JOURNALIER AFIS").[C1048576]

        'Appelez la macro d'enregistrement périodique au démarrage du classeur
                                EnregistrementPeriodique

        If Sheets("CAHIER JOURNALIER AFIS").[G2].Value = "" Then
            Range("A1048576").Value = Format(Now, "YYYY")
                Range("G2").Value = WorksheetFunction.Proper(Format(Now, " DDDD D MMMM YYYY à hh\Hmm"))
                    Range("A1").Select

    Application.ScreenUpdating = True

End If
End Sub

En cas de Bug ou de coupure j'interdis le changement de date de départ et ça me garde le reste ,................ Super ;-)

Excellent week-end

Bien à toi

Cousinhub,

Ne te vexe pas, ce n'était pas le but !

Juste répondre à la demande initiale lorsqu'elle est bien formulée ! Ouaip, j'ai les ch'villes qui gonflent

Blague à part je n'avais pas besoin d'un fichier de récup, juste travailler sur le même fichier (même jour même heure de départ) toute la journée et de RAZ tous les soir pour un fichier vierge tous les matins ; l'aéronotique et ses audits ;-)

Au plaisir de te retrouver ici

Bien à toi

Bon week-end

Re-,

ça confirme, tu n'as compris ni ma réponse, ni ma réaction....(je t'ai fourni une solution "autre", tu me "remballes" direct)

PS,

l'aéronotique

J'espère juste que tu n'es que dans un bureau????

La base, sur Excel, c'est d'utiliser les outils fournis nativement

Et l'opportunité de pouvoir récupérer des fichiers en cas de "crash" en est une

Et si on devait se cantonner à "juste" répondre à la question "initiale lorsqu'elle est bien formulée"......

Bye

re,

Je pense aussi que la meilleure solution, c'est la solution avec les options d'enregistrement.

Et le fait que c'est un paramètre général, c'est même un avantage !

Après une coupure, on n'a qu'à renommer son fichier.

Rechercher des sujets similaires à "enregistrement regulier ctrl tous heure vba"