salut,
j'ai reproduit la base à peu de choses près :)
voir PJ :)
Version imprimable
salut,
j'ai reproduit la base à peu de choses près :)
voir PJ :)
Bonsoir,
Pour le moment, je n’ai pas encore trouvé de solution pour lier Excel et les fichiers Batch pour créer des tâches planifiées…
Mais En cherchant, j'ai trouvé ce code VBA qui assure ce travail, mais il contient encore des lacunes après adaptation :
1 - Les tâches sont créés pour s'exécuter périodiquement, or j'aimerais que chaque tâche soit exécutée selon le délai défini.
Par exemple : à 22:12:10 le 22/04/2012
Et la tâche sera détruite après.
2 - Une fois le délai venu, j'ai un message d'erreur dans "Etat" me disant "N'a pas pu démarrer"
Je crois qu'il faut configurer la session dans laquelle sera exécutée la tâche.
macro TraitementTache :Code:
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
66
67
68
69
70
71
72
73 Option Explicit Private Declare Function NetScheduleJobAdd& Lib "netapi32.dll" _ (ByVal Servername$, Buffer As Any, JobID&) Private Declare Function GetComputerName& Lib "kernel32" Alias _ "GetComputerNameA" (ByVal lpBuffer$, nSize&) Private Type AT_INFO JobTime As Long DaysOfMonth As Long DaysOfWeek As Byte Flags As Byte dummy As Integer command As String End Type Private Sub CreateTask(H$, D$, F$, Optional I As Boolean = False, Optional P As Boolean = True) Dim Start$, Jrs$(), dWeek() As Variant Dim j%, w%, AT As AT_INFO, JobID&, Computer$ Computer = StrConv(ComputerName, vbUnicode) MsgBox "Computer " & Computer dWeek = Array("M", "T", "W", "TH", "F", "S", "SU") With AT Start = Format(H, "hh:mm") .JobTime = (Hour(Start) * 3600 + Minute(Start) * 60) * 1000 Jrs = Split(D, ",") ' Dates de chaque mois If Val(D) Then For j = 0 To UBound(Jrs) .DaysOfMonth = .DaysOfMonth + 2 ^ (Jrs(j) - 1) Next ' Jours de chaque semaine Else For j = 0 To UBound(Jrs) For w = 0 To UBound(dWeek) If UCase(Jrs(j)) = dWeek(w) Then .DaysOfWeek = .DaysOfWeek + 2 ^ w End If Next Next End If ' Interactivité If Not I Then .Flags = .Flags Or &H10 ' Periodicité If P Then .Flags = .Flags Or &H1 .command = StrConv(F, vbUnicode) End With If NetScheduleJobAdd(Computer, AT, JobID) Then MsgBox "Impossible de créer la Tâche !", 64 Else MsgBox "Tâche (" & JobID & ") ajoutée !", 64 End If End Sub Private Function ComputerName() As String Dim PCName As String PCName = String(50, Chr(0)) GetComputerName PCName, 50 ComputerName = "\\" & Trim(PCName) End Function Sub AddScheduledTask() Dim iTime$, iFreq$, iProg$ Dim Cel As Range '---- For Each Cel In Range("A2:A" & [A65000].End(xlUp).Row) iTime = Right(Cel, 8) iFreq = Day(Left(Cel, 8)) iProg = "TestDates.xls!TraitementTache" CreateTask iTime, iFreq, iProg Next Cel '---- End Sub
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 Option Explicit '------------------------------------------ Sub TraitementTache() Dim Frm As Date Dim Rg As Range With Feuil1 .Activate Frm = Format(Now, "dd/mm/yy hh:mm:ss") 'Frm = Date ThisWorkbook.Application.Visible = True Set Rg = .Range("A:A").Find(What:=Frm, LookIn:=xlFormulas, LookAt:=xlPart) If Not Rg Is Nothing Then 'MsgBox "La date " & Frm & " est trouvée à l'adresse " & Rg.Address MsgBox "Vous avez un rendez-vous " & Rg.Offset(0, 1).Value Else MsgBox "La date : " & Frm & " n'a pas été trouvée" End If End With ThisWorkbook.Close End Sub '------------------------------------------
la partie de génération avec SCHTASK
http://jpcheck.developpez.com/tutori...uis-access/#LV
le lien msdn dans le paragraphe te donne toute la syntaxe batch pour créer la tâche : http://msdn.microsoft.com/en-us/libr...57(VS.85).aspx
Cela ne te convient-il pas ? :cry:
Bonsoir jcheck,
J'ai essayé avec ce code, mais ça ne marche pas :
Code:
1
2
3
4
5
6
7
8
9
10
11
12 Login = "LoginPiou" PWD = "PWDPiou" iTime = "23:00" iDate = "23/04/2012" strCreateScheduleTask = "SCHTASKS /Create /RU " & Login & " " strCreateScheduleTask = strCreateScheduleTask & "/RP " & PWD & " " strCreateScheduleTask = strCreateScheduleTask & "/SC once " strCreateScheduleTask = strCreateScheduleTask & "/ST " & iTime & " " strCreateScheduleTask = strCreateScheduleTask & "/SD " & iDate & "" strCreateScheduleTask = strCreateScheduleTask & "/TR " & """\""" & "E:\Excel\tests\Dates\Planificateur\1.bat"" /TN R" & "_" & "1" & "_" & "23042012" & "_" & "230000" Shell strCreateScheduleTask
Hello,
il manque un espace après ta date du SD.
Et les logins mdp sont bien entendu en lien avec ta machine :aie:
bonjour a tous les deux
jpcheck:
dans le lien que tu donne il y aa la finCode:shell strinput
ce doit etre une erreur je pense ?
au plaisir
c'est exact :oops:
je vais planifier une mise à jour automatique de mon article tiens :aie:
bonjour jpcheck
j'ai essayé quand meme aveca la placeCode:strCreateScheduleTask
mais il est vrai que ca ne fonctionne pas chez moi
il doit y avoir des subtilités (windows 7) car en regardant la syntaxes sur le lien que tu a fournis
il n'est pas necessaire de tout metre avec windows 7 ,enfin il me semble
Bonjour jpcheck, Patrick,
J'ai rectifié sans résultat
Même j'ai essayé avec mon login seulement, parce qu'il n'y a pas de mot passe dans mon compte administrateur, et ça n'a pas réussi.Citation:
Et les logins mdp sont bien entendu en lien avec ta machine :aie:
Pourtant ton code, avant modification, à pu créer une tâche planifiée avec l'utilisateur LoginPiou et mot de passe PWDPiou ???
Mais en mettant les miens dans des chaines de caractères (Login et PWD) et les ajouter dans les lignes de commande, ca n’a pas marché ???
bonjour apt
tu a de la chance si il y a eu contact avec le planificateur pour ma part moi c'est choux blanc
la tache est inexistante mais bon je le repete je tourne sur windows 7 (64 bits)
je patoge moi aussi :aie::aie::mouarf::mouarf:
au plaisir
J'ai utilisé ce code pendant plusieurs mois sous XP et 2003, jamais eu l'occasion de le tester sur des versions plus récentes :cry:
la syntaxe semble toujours d'actualité
http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
en anglais, datant de février 2012...
effectivement j'ai moi meme fait cette recherche il semblerait qu'il n'y ai pas de modification
mis a part que la ligne de commande "SCHTASKS" fonctionne en 32 bits mais en 64 connais pas :cry:
je trouve ca tres bizarre
je cherche je donne des nouvelles tres vites
au plaisir