Comment lancer automatiquement une procédure à heure fixe, tous les (mardi) .

Dicas

XLDnaute Junior
Bonjour à toutes et tous !
J'ai une procédure de mise à jour qui me permet, chaque semaine (de mardi à lundi), d'entériner les consommations et les entrées sur un stock de médicaments.
La voici !
Sub Actualisation_Nouvelle_Semaine()
'
' Actualisation_Nouvelle_Semaine Macro
'
Range("BN9:BN75").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-2
ActiveWindow.LargeScroll Down:=-3
Range("BK9:BK75").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.LargeScroll Down:=-3
Range("BO9:BP75").Select
Application.CutCopyMode = False
Selection.ClearContents
ActiveWindow.LargeScroll Down:=-3
Range("BO9").Select
End Sub

Cette macro est activée chaque mardi par un clic de souris sur un bouton.
Je cherche la partie de macro à ajouter avant la mienne et qui dirait :
Si la date d'AUJOURDHUI() mardi (jour 3) à 0h est plus petite ou égale à MAINTENANT(); Alors ...
ce qui engagerait la procédure chaque mardi à 0h passé. Du moins, c'est ce que je crois !!
Mais peut-être avez-vous plus simple à me proposer.....
Toutes les suggestions m'intéressent...
Merci de vos lumières !
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Cette macro est activée chaque mardi par un clic de souris sur un bouton.
Je cherche la partie de macro à ajouter avant la mienne et qui dirait :
Si la date d'AUJOURDHUI() mardi (jour 3) à 0h est plus petite ou égale à MAINTENANT(); Alors ...
ce qui engagerait la procédure chaque mardi à 0h passé. Du moins, c'est ce que je crois !!!
;)pour cela il faut que le fichier excel soit actif au moment voulu...
il vaut mieux prévoir une tâche Windows (pourvu que le PC soit allumé) qui exécutera le fichier excel...
 

Dicas

XLDnaute Junior
Bonjour DoubleZero !!
Ta proposition me plait ! Et j'ai tenté de la mettre en application ; Mais Lorsque j'entre pour ('Date') en la désignant en ("H5") la syntaxe "AUJOURDHUI()" en obtenant ceci:

Option Explicit
Sub Actualisation_Nouvelle_Semaine()
If Weekday("H5") >= 3 Then
Range("BK9:BK75").Value = Range("BN9:BN75").Value
Range("BO9:BP75") = ""
End If
End Sub

ça bloque sur
If Weekday("H5") >= 3 Then
N'est-ce pas justement parce qu'à cet instant la condition n'est pas acquise (le Weekday d'AUJOURDHUI() n'est pas 3) et qu'il n'y a pas d'alternative ??
 

Dranreb

XLDnaute Barbatruc
Je verrais donc plutôt quelque chose comme ça dans ThisWorkbook :
VB:
Option Explicit

Private Sub Workbook_Open()
Dim DAct As Date
On Error Resume Next
DAct = Evaluate(ThisWorkbook.Names("ActuPrévue").RefersTo)
If Err Then DAct = Date
On Error GoTo 0
If Date >= DAct Then
  With ThisWorkbook.Worksheets(1) ' à adapter
  .[BK9:BK75].Value = .[BN9:BN75].Value
  .[BO9:BP75].Value = Empty: End With
  ThisWorkbook.Names.Add "ActuPrévue", Format(Date - Weekday(Date, 4) _
  + 7, """=DATE(""yyyy"",""mm"",""dd"")""")
  End If
End Sub
À tester…
 

Statistiques des forums

Discussions
312 472
Messages
2 088 715
Membres
103 932
dernier inscrit
clotilde26