macro enregistrement automatique

bobafric

XLDnaute Occasionnel
Bonjour à tous

J'ai une macro, ci-dessous,pour enregistrer automatiquementmon classeur toutes les 5 mn dans un dossier c:\22.
Le problème c'est que les enregistrements s'accumulent dans le dossier et je n'ai besoin que du dernier enregistrement ou à la rigueur des 3 derniers.
Que dois-je rajouter à ma macro pour que cela s'exécute automatiquement.

Private Sub Workbook_Open()

debut:

Start = Timer
intervalle = 300

Do While Timer < Start + intervalle
DoEvents ' Donne le contrôle à d'autres processus.
Loop

ChDir "C:\22\"

fname = "TEST - " & Day(Date) & "-" & Month(Date) & "-" & Year(Date) & " - " & Hour(Time) & "H" & Minute(Time) & "m" & Second(Time) & "s"

ActiveWorkbook.SaveAs Filename:=fname

GoTo debut

End Sub

Merci d'avance pour votre précieuse aide

Bob
 

bobafric

XLDnaute Occasionnel
Re : macro enregistrement automatique

Salut JNP, salut Pierrot

La sauce commence à prendre puisque Pierrot vient nous rejoindre.
Alors pour JNP
La correction Public début as Date pose toujours le même problème.
Par contre à l'exécution la macro enregistrementSous fonctionne.
Pierrot
la correction Dim debut As Single ne fait apparaître aucun message, mais ne fonctionne pas non plus.

Rappel pour Pierrot
Donc il faut trouver le code sur thisworkbook pour déclencher la macro EnregistrementSous lorsqu'on ajoute une donnée dans une cellule après 10 sec (les 10 secondes pour éviter d'attendre trop longtemps entre chaque essai)

Voilà moi j'essaye de mon côté mais je n'ai vraiment pas assez de connaissance en vb pour vous aider.
Bon courage et merci beaucoup à tous les deux
Bob
 

bobafric

XLDnaute Occasionnel
Re : macro enregistrement automatique

Salut JNP, salut Pierrot

La sauce commence à prendre puisque Pierrot vient nous rejoindre.
Alors pour JNP
La correction Public début as Date pose toujours le même problème.
Par contre à l'exécution la macro enregistrementSous fonctionne.
Pierrot
la correction Dim debut As Single ne fait apparaître aucun message, mais ne fonctionne pas non plus.

Rappel pour Pierrot
Donc il faut trouver le code sur thisworkbook pour déclencher la macro EnregistrementSous lorsqu'on ajoute une donnée dans une cellule après 10 sec (les 10 secondes pour éviter d'attendre trop longtemps entre chaque essai)

Voilà moi j'essaye de mon côté mais je n'ai vraiment pas assez de connaissance en vb pour vous aider.
Bon courage et merci beaucoup à tous les deux
Bob
 

Pierrot93

XLDnaute Barbatruc
Re : macro enregistrement automatique

Re

regarde le classeur ci-joint, à l'air de fonctionner ou alors quelque chose doit m'échapper...

bon après midi
@+
 

Pièces jointes

  • classeur1.xls
    30 KB · Affichages: 120
  • classeur1.xls
    30 KB · Affichages: 125
  • classeur1.xls
    30 KB · Affichages: 123

Pierrot93

XLDnaute Barbatruc
Re : macro enregistrement automatique

Re

modifie comme suit :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If (debut + 10) < Timer Then
        Application.DisplayAlerts = False
        ThisWorkbook.SaveAs "classeur1.xls"
        Application.DisplayAlerts = True
        debut = Timer
    End If
End Sub

@+
 

vadelacaisse

XLDnaute Junior
Re : macro enregistrement automatique

Bonjour

Cette discussion est ancienne mais elle m'a servi : merci à tous
J'ai modifié la macro à partir d'une macro écrite par un membre du forum, il y a aussi un peu de temps
Elle marche sans définir le nom du fichier (je renomme ma feuille de calcul à chaque fois, d'où ce besoin)

Option Explicit
Private Sub Workbook_Open()
debut = Timer
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If (debut + 1000) < Timer Then
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
debut = Timer
End If
End Sub


Là, j'ai mis 1000 sec (env 1/4 h)
J'aimerais faire référence à une cellule du fichier où l'utilisateur pourrait paramétrer le délai
- soit en faisant référence à une commande du genre "feuille!cell ligne, col"
- soit en faisant référence à une cellule nommée dans le fichier "celldélai" où ce délai serait saisi

J'imagine que c'est possible, vu la puissance d'excel et l'ingéniosité que je vois ici - mais je suis ignare en VBA
Merci de votre aide !
 
Dernière édition:

camarchepas

XLDnaute Barbatruc
Re : macro enregistrement automatique

Bonjour ,

Voici donc ,

ton réglage sera donc dans l'onglet nommé Reglages et dans la cellule A1

Code:
Option Explicit
Private Sub Workbook_Open()
debut = Timer
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If (debut + sheets("Reglages").range("A1")) < Timer Then
Application.DisplayAlerts = False
ActiveWorkbook.Save
Application.DisplayAlerts = True
debut = Timer
End If
End Sub
 

Statistiques des forums

Discussions
312 777
Messages
2 092 032
Membres
105 159
dernier inscrit
frontera930