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 SubPouvez 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'.
Dans le module 'ThisWorkbook' :
Option Explicit
Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("00:00:05"), "Message"
End SubDans 'Module1' :
Option Explicit
Option Private Module
Public Sub Message()
MsgBox _
Format(Date, "dddd dd mmmm yyyy") & Chr(10) & Format(Time, "hh:mm")
End SubBonjour 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
Bonjour,
Voir ton fichier modifié (suppression des modules doublons, par exemple).
Sinon merci pour le partage de ton fichier 'SetReminders'.
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 : DotNetMethodExceptionJe 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.