1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
| Option Explicit
'Macro a utilisé entre une heure de démarrage et une heure de fin
'Toutes les x minute entre les 2 horaires
Private RunWhen As Double
Private Const cRunIntervalMinutes As Long = 1
Private Const cRunWhat As String = "MajEgedis"
Private Const BeginTime As Date = #9:30:00 AM#
Private Const FinishTime As Date = #5:30:00 PM#
Sub Auto_Open()
If Time < BeginTime Then
'Attend jusqu'àl'heure de démarrage
Application.OnTime earliesttime:=BeginTime, _
procedure:=cRunWhat
Else
'Démarrer la procédure
Application.Run cRunWhat
End If
End Sub
Sub StartTimer()
'Mise à jour toutes les minutes
RunWhen = Now + TimeSerial(0, cRunIntervalMinutes, 0)
Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _
Schedule:=True
End Sub
Sub MajEgedis()
'Ajoute une ligne toutes les x minutes et copie/colle en freezant les données du flux temps réel
Dim i As Integer
Dim NombreDeLignes As Integer
NombreDeLignes = 500
For i = 2 To NombreDeLignes
If IsEmpty(Range("A" & i)) = False And IsEmpty(Range("A" & i + 1)) = True Then
Range(Cells(i, 1), Cells(i, 5)).Select
Selection.Copy
Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = True
Exit For
End If
Next i
'Démarrage et arrêt de la procédure à partir d'une certaine heure
If Time < FinishTime Then
StartTimer
Else
StopTimer
End If
End Sub
Sub StopTimer()
'Arrêt de la mise à jour
On Error Resume Next
Application.OnTime earliesttime:=RunWhen, procedure:=cRunWhat, _
Schedule:=False
End Sub
Sub Auto_Close()
'si fichier fermer le timer s'arrête
'le dossier ne se réouvre pas
'et la macro ne redémarre pas
Call StopTimer
End Sub |
Partager