[Abandon] Enregistrement automatique par VBA

Neo37

XLDnaute Junior
Bonjour à tous,

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?

Merci d'avance.
 
Dernière édition:

fhoest

XLDnaute Accro
Re : Enregistrement automatique par VBA

Bonjour,
voici un code:
Code:
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
A mettre dans un module standard
A+
 

Neo37

XLDnaute Junior
Re : Enregistrement automatique par VBA

Merci fhoest pour ta réponse rapide.

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.
 

fhoest

XLDnaute Accro
Re : Enregistrement automatique par VBA

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)

Code:
Private Sub Workbook_Open()
Call temps
End Sub
 

Pièces jointes

  • exemple Neo enregistrement_fhoest.xlsm
    16.9 KB · Affichages: 40
  • exemple Neo enregistrement_fhoest.xlsm
    16.9 KB · Affichages: 45
  • exemple Neo enregistrement_fhoest.xlsm
    16.9 KB · Affichages: 45
Dernière édition:

Neo37

XLDnaute Junior
Re : [Résolu] Enregistrement automatique par VBA

Heu....

Un ptit soucis :p

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


Ai-je fais une boulette?
 

fhoest

XLDnaute Accro
Re : [Résolu] Enregistrement automatique par VBA

Procède de cette façon:
A bientôt.:eek:
 

Pièces jointes

  • exemple Neo enregistrement_fhoest.xlsm
    18.3 KB · Affichages: 37
  • exemple Neo enregistrement_fhoest.xlsm
    18.3 KB · Affichages: 43
  • exemple Neo enregistrement_fhoest.xlsm
    18.3 KB · Affichages: 47

Neo37

XLDnaute Junior
Re : [Résolu] Enregistrement automatique par VBA

:eek:
Pas mieux... si je ferme le fichier sans fermer l'application Excel, là ça me met:

Erreur d'exécution '1004'
La méthode 'OnTime' de l'objet '_Application' a échoué


Pour ouvrir ton fichier j'ai du télécharger un Pack de conversion pour Excel 2002.

Avec ta première proposition, dans le thisworkbook

Private Sub Workbook_Open()
Call temps
End Sub

Ne peut-on pas rajouter un truc du style

If Workbook_close()
Stop temps
End Sub

Bon bien entendu tout ça codé correctement :p
 

fhoest

XLDnaute Accro
Re : [Résolu] Enregistrement automatique par VBA

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
A tester.
 

fhoest

XLDnaute Accro
Re : [Résolu] Enregistrement automatique par VBA

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. :rolleyes:
 

Pièces jointes

  • exemple Neo enregistrement_fhoest.xls
    49 KB · Affichages: 43
  • exemple Neo enregistrement_fhoest.xls
    49 KB · Affichages: 40
  • exemple Neo enregistrement_fhoest.xls
    49 KB · Affichages: 39
Dernière édition:

Neo37

XLDnaute Junior
Re : [Résolu] Enregistrement automatique par VBA

Merci pour ton aide fhoest

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.
 

fhoest

XLDnaute Accro
Re : Enregistrement automatique par VBA

Bonjour,
une autre manière d'aborder la chose:
voir fichier sans temporisation.
 

Pièces jointes

  • exemple Neo enregistrement_fhoest.xls
    44.5 KB · Affichages: 50
  • exemple Neo enregistrement_fhoest.xls
    44.5 KB · Affichages: 58
  • exemple Neo enregistrement_fhoest.xls
    44.5 KB · Affichages: 51

Discussions similaires

Statistiques des forums

Discussions
312 208
Messages
2 086 257
Membres
103 167
dernier inscrit
miriame