Run Schedule

Bonjour Messieurs,

S'il-vous-plaît j'ai besoin un module

qui me declanche un autre module a des

heures differant.

J'ai penser a sa?....

expression.OnTime(Time, Procedure, Schedule)

Public Sub RunSchedule()
    If Time Application.OnTime + TimeValue("00:08:00")
    <> Time Application.OnTime + TimeValue("00:23:00")
    expression.OnTime(Time, Test, Schedule)
End Sub

Pouvez vous m'assister pour cette petite module?

Merci,

Respectueusement

Arnold

Bonjour,

Je ne comprends pas tout mais je joins un exemple avec l'affichage d'un message 5 secondes après l'ouverture du fichier.

Consulter l'aide dans VBE avec 'OnTime'.

11arnold-v1.xlsm (14.27 Ko)

Dans le module 'ThisWorkbook' :

Option Explicit
Private Sub Workbook_Open()
    Application.OnTime Now + TimeValue("00:00:05"), "Message"
End Sub

Dans 'Module1' :

Option Explicit
Option Private Module
Public Sub Message()
    MsgBox _
        Format(Date, "dddd dd mmmm yyyy") & Chr(10) & Format(Time, "hh:mm")
End Sub

Bonjour Monsieur,

Merci pour votre réponse!

J'ai bien étudier votre proposition. Merci!

Ici j'ai bien trouver une partie pour mes souhait. (grâce a vous)

http://msdn.microsoft.com/fr-fr/library/office/ff196165(v=office.15).aspx

Donc j'ai conclue que se bien sa que je besoin:

Application.OnTime TimeValue("17:00:00"), "my_Procedure"

(a des heures précis, mais a des heures diffèrent: 8:00, 22:00 et a 23:00 heures)

Pour tester j'ai utilise pour l'instant:

Le "Geocoder_Query"

En autre j'ai trouver sur le Web un modèle :

(mais qui n'est en autre aussi qu'un "reminder"! Vous pouvez lè transformer?)

Mais très intéressent!

Respectueusement

Arnold

7geocoder.xlsm (20.50 Ko)
13setreminders.xlsm (30.23 Ko)

Bonjour,

Voir ton fichier modifié (suppression des modules doublons, par exemple).

Sinon merci pour le partage de ton fichier 'SetReminders'.

9geocoder.xlsm (17.96 Ko)

Bonjour Monsieur,

Merci pour votre derniere proposition!

Toute suit je me suis pencher, là dessus.

Je commence de voir un peut la fin du tunnel....

Question au sujet pour le Password:

Sa concerne uniquement le fichier Excel, ou c'est publique?

Parfois je doit utiliser un 'ID' avec son 'password' correspondant (pour le Web).

En autre:

Je voudrais mettre les 'Url', les 'nom de feuils' at les 'cell' dans un variable;

si non le scripte viendras trop longue....

Les [With Worksheets] aussi, on peut faire plus court. De le mettre aussi dans variable??

Que penser vous?

Le 'BackgroundQuery' se fait uniquement quand le fichier est active? (ouvert)

Merci, de vous lire,

respectueusement

Arnold

============================================================

'expression.OnTime(Time, my_Procedure_???, Schedule)
'Mis a jour générale ..... (projet)

Public Sub RunSchedule()

    If Time Application.OnTime EarliestTime:=TimeValue("08:00:00"), _ 
     Procedure:="Geocoder_Query_1", Schedule:=True
      and
       Time Application.OnTime EarliestTime:=TimeValue("08:00:00"), _ 
     Procedure:="Geocoder_Query_2", Schedule:=True

    ElseIf
       Time Application.OnTime EarliestTime:=TimeValue("22:00:00"), _ 
     Procedure:="my_Procedure_1", Schedule:=True
      and
       Time Application.OnTime EarliestTime:=TimeValue("22:00:00"), _ 
     Procedure:="my_Procedure_2", Schedule:=True

    ElseIf
       Time Application.OnTime EarliestTime:=TimeValue("23:00:00"), _ 
     Procedure:="my_Procedure_1", Schedule:=True
      and 
       Time Application.OnTime EarliestTime:=TimeValue("23:00:00"), _ 
     Procedure:="my_Procedure_2", Schedule:=True

    Application.OnTime, False

    'J'ai un doute ????
    Application.CalculateFull

End Sub

Option Explicit
Option Private Module

Public Sub Geocoder_Query_1()
Dim url As String

    url = "URL;http://rpc.geocoder.us/service/csv?address=1600+Pennsylvania+Ave,+Washington+DC"
    With Worksheets("Feuil1").QueryTables.Add(Connection:=url, Destination:=Worksheets("Feuil1").Range("A1"))
        .Name = "Geocoder_Query_1"
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 2
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=True
    End With

Public Sub Geocoder_Query_2()
Dim url As String

    url = "URL;http://any city......"
    With Worksheets("Feuil1").QueryTables.Add(Connection:=url, Destination:=Worksheets("Feuil1").Range("A2"))
        .Name = "Geocoder_Query_2"
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlOverwriteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 2
        .WebSelectionType = xlEntirePage
        .WebFormatting = xlWebFormattingNone
        .WebPreFormattedTextToColumns = True
        .WebConsecutiveDelimitersAsOne = True
        .WebSingleBlockTextImport = False
        .WebDisableDateRecognition = False
        .WebDisableRedirections = False
        .Refresh BackgroundQuery:=True
    End With

End Sub

=======================================================

Le module, si-dessus, j'ai le rajouter en utilisant Powershell.

Pas de probleme. (© Arenas, mio)

Mais, j'ai changer l'OnTime

     if ($XProcessWithMacro.isPresent)
     {
       # --- Shell out to Macro Import Script
       $XOutputMacroFile = "$($ScriptFolder)\Reports\$(($XCsvFile.Name).Replace(`".csv`", `"-$($XMacroName).xlsm`"))"
       $XMacroString = Get-Content -Path $XMacro.FullName
       # --- Launch Excel Object and invoke Macro
       $XExcel = New-Object -ComObject Excel.Application
       $XExcel.Visible = $false
       $XWorkBook = $XExcel.Workbooks.Open("$($ScriptFolder)\Reports\$($XCsvFile.Name)")
       $XExcelModule = $XWorkBook.VBProject.VBComponents.Add(1)
       $XExcelModule.CodeModule.AddFromFile($XMacro.FullName) | Out-Null
       $XExcel.Run($MacroName)
       $XWorkBook.SaveAs($XOutputMacroFile, 52)
       $XExcel.Quit()
       # --- Add new file location back to Reports array
       $XNewReports += $XOutputMacroFile
       # --- Remove Csv
       Remove-Item "$($XScriptFolder)\Reports\$($XCsvFile.Name)" -Force | Out-Null
     }

 $XExcel.Workbooks.Close()
 $XExcel.quit()
 $XExcel = $null
 [gc]::collect()
 [gc]::WaitForPendingFinalizers()

clear-variable X* -scope global -f

=================================================

J'ai demaree le fichier Excel avec Powershell

mais, j'ai ne point obtenue un resultat. Zut... (cette Refresh).

Il n'y avait pas de mis a jours....

Que la date//heures (réponse):

"01/04/2014 12:06"

cls

$Xpath = "C:\..\..\..\geocoder.xlsm"
$Xxl = New-Object -com Excel.Application
$Xxl.DisplayAlerts = $False
$Xwb = $Xxl.WorkBooks.Open($Xpath)
$Xwb.ForceFullCalculation = $True
$Xwb.Worksheets.Item(1)
$Xt = [string] "text"

$Xcell_1 = ($Xwb.ActiveSheet.Cells.Item(1,1).$Xt).trim() 
$Xcell_2 = ($Xwb.ActiveSheet.Cells.Item(3,1).$Xt).trim()
$Xcell_1
$Xcell_2

$Xxl.Workbooks.Close()

 $Xxl.quit()
 $Xxl = $null
 [gc]::collect()
 [gc]::WaitForPendingFinalizers()

clear-variable X* -scope global -f

====================================

Fin

Bonjour,

Je ne peux pas t'en dire plus, malheureusement, et je viens de plus de découvrir 'Powershell'.

Je laisse donc le soin à d'autres personnes pour t'aider dans ton projet.

Bon courage.

Bonjour Monsieur,

Merci pour votre réponse!

Avec un peut de recule, je me suis aperçus

qu'il valais utiliser l'expression "Application.Run" sous Power Shell.

Cette expression me permet de faire un "refresh" en appelant

le VBA module.

Aussi: l'expression "on.time" ne plus nécessaire a cet stade.

Puisque Powershell me donne cette possibilité.

Je croire que, même la variable "l'url", je peut l'utiliser sous PowerShell.

mais sa donne des aller et des retour. Qui n'est pas très élégant.

Ex.

VBA:

Dim val
val = Shell("powershell ""C:\interville\Excel\refresh.ps1""", 1)

(Note bien le doublement des parenthèses sous powershell!)

Power Shell:

$Excel.Application.Run("val")

[fait pas sa; ce ne que une illustration pour le comment faire]

En autre pour l'instant je reçois sous Power Shell l'erreur "31"

Le module VBA, elle n'a rien! Sauf je toucher a quelque chose ...?

(4 yeux voir plus que 2 yeux)

Un peut curieux:

Exception lors de l'appel de « Run » avec « 31 » argument(s) : « Impossible d'exécuter la macro 'excel_pratique_Query'

. Il est possible qu'elle ne soit pas disponible dans ce classeur ou que toutes les macros soient désactivées. »

Au niveau de C:\interville\Excel\refresh.ps1 : 13 Caractère : 21

+ $Xwb.Application.Run <<<< ("excel_pratique_Query")
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : DotNetMethodException

Je joint les deux fichier:

refresh.txt (mais de le renommer en "refresh.ps1")

et

refresh.xlsm

Respectueusement

Arnold

Nota Bene :

J’ai changer le lien. Qui me permet de voir toute suit s’il y a un « refresh » a étais fait

en regardant les heures/date.

10refresh.xlsm (41.00 Ko)
8refresh.txt (1.61 Ko)
Rechercher des sujets similaires à "run schedule"