J'ai un peu honte de demander ça sur le forum, car ça ne doit pas être compliqué, mais là je n'arrive pas à me débrouiller par moi même. Je cherche depuis deux jours sur le net, et jamais de réponse qui colle parfaitement à mon soucis.
Je souhaiterais que mon fichier Excel s'enregistrement automatiquement toute les x secondes, dès son ouverture.
Je sais qu'il y a une fonction dans les menus d'Excel, mais ça se limite à 5 minutes, en tout sur la version installée à mon boulot (2002).
Donc sous VBA, quelle est la formule qui puisse faire cela?
Sub temps()
Application.OnTime Now + TimeValue("00:00:05"), "save"
End Sub
Sub save()
Dim reponse As Integer
reponse = MsgBox("Voulez vous continuer l'enregistrement toutes les 5 secondes", vbYesNo)
If reponse = vbNo Then Exit Sub
ActiveWorkbook.save
Call temps
End Sub
Malheureusement cela n'a pas l'air de fonctionner.
J'ai bien recopié ta formule dans un module standard, mais cela ne fonctionne pas.
Apparemment une boîte de dialogue devrait apparaitre si je comprend ta formule, mais rien ne se passe.
Boîte que je souhaiterai pas voir d'ailleur.
Je précise que c'est bien un enregistrement que je souhaite, comme si je cliqué sur l'icône disquette, pas une sauvegarde pour une éventuelle récupération arpès plantage.
Je fais le test sur un fichier quasi vierge, sans rien d'autre dans le VBA qui pourrait le géner, mais pourtant chez moi ça ne focntionne pas.
Bonjour,
tu as mis le code mais as tu mis un bouton pour lancer le code ou autre.
exemple dans le fichier joint
A+
Si tu veux qu'il s'execute dès l'ouverture au lieu du bouton il faut mettre ceci dans thisworkbook (vba)
Le fichier en lui même fonctionne bien, mais impossible de le fermer quand un autre fichier Excel différent est ouvert, il se rouvre de lui même. On dirait que la tempo d'enregistrement est toujours en fonction.
Je suis obligé de fermer entièrement Excel.
Ma formule je l'ai réduite à ça:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
ThisWorkbook.save
End Sub
Private Sub Workbook_Open()
Call temps
End Sub
Re,
c'est ce qui est fait dans le fichier
dans un modules standard:
Code:
Option Explicit
Public Tps As Date
Sub temps()
Tps = Now + TimeValue("00:00:15")
Application.OnTime Now + TimeValue("00:00:15"), "enregistrement"
End Sub
Sub enregistrement()
ActiveWorkbook.save
Call temps
End Sub
dans le code de thisworkbook
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call stop_enregistrement
End Sub
Private Sub Workbook_Open()
Call temps
End Sub
Sub stop_enregistrement()
Application.OnTime Tps, "enregistrement", , False
End Sub
Re,
a tester celui ci je n'ai pas d'autre solution que de passer par un bouton.
A+
Remarque: tu peux utiliser une cellule de la feuille avec une valeur 1 ou 0 a vérifier pour l'enregistrement automatique, ou alors une case a cocher coder plus ou moins comme le bouton.
Je n'y arrive pas pour l'instant, mes bricolages s'avèrent inefficace.
Pour l'histoire du bouton je souhaiterai faire sans, et pour l'histoire de la variable... je ne vois pas quoi faire.