Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 !
 

DoubleZero

XLDnaute Barbatruc
Bonjour, Dicas, le Forum,

Peut-être ainsi :

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

A bientôt
 

Modeste geedee

XLDnaute Barbatruc
Bonsour® 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 ??
 

DoubleZero

XLDnaute Barbatruc
Bonjour à toutes et à tous,

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

A bientôt
 

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…
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…