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

XL 2010 Evenement unique en fonction d'une date

Wyrgle

XLDnaute Junior
Bonjour à tous,

Je cherche à déclencher une sous-macro qui se déclenche une fois seulement après une date.
Ma macro principale tourne tous les jours de la semaine (jours travaillés seulement), et vérifie si on est le 16 mai (par exemple).
Si on est le 16 mai ou le 1er jour ouvré après le 16 mai, on appelle la sous-macro.
Sinon rien ne se passe.
Comment faire cela ?

Merci pour votre aide
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Une piste à creuser
VB:
Sub test()
Dim LEJOUR
LEJOUR = DateSerial(Year(Now), 5, 16)
If Date = LEJOUR Then
MsgBox "Nous sommes le " & LEJOUR, vbCritical
Else
MsgBox "Nous sommes le " & Date
End If
End Sub
 

patricktoulon

XLDnaute Barbatruc
une ebauche sur la base de staple
VB:
Sub test()
'test du 15 aout
    Dim lejour
    lejour = DateSerial(Year(Now), 5, 15)
    goodDay lejour
End Sub
Sub test2()
    lejour = Date
    goodDay lejour
End Sub
Sub test3()
'test du 1er janvier
    lejour = DateSerial(Year(Now), 1, 1)
    goodDay lejour

End Sub
Sub test4()
'test du 14 juillet
    lejour = DateSerial(Year(Now), 7, 14)
    goodDay lejour

End Sub
Sub test5()
'test du dimanche 25 aout
    lejour = DateSerial(Year(Now), 8, 25)
    goodDay lejour

End Sub

Sub goodDay(lejour)
    Dim d&, ouvré As Boolean
    d = Day(lejour)
    ouvré = Weekday(lejour) >= vbMonday And Weekday(lejour) <= vbFriday
    Select Case Month(lejour)
    Case 1
        j = 1
    Case 5
        j = 15
    Case 7
        j = 14
    Case 8

    Case Else
        ouvré = Weekday(lejour) >= vbMonday And Weekday(lejour) <= vbFriday

    End Select


    If Day(lejour) <> j And ouvré = True Then
        MsgBox "c'est bon Nous sommes le " & Format(lejour, "dddd dd mm yyyy"), vbCritical
    Else
        MsgBox "c'est pas bon Nous sommes le " & Format(lejour, "dddd dd mm yyyy")
    End If
End Sub
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonsoir chacun,

Un petit grain de sel:
VB:
Sub JyVaisOuJyVaisPas()
' Premier jour ouvré après le 15
 Dim dte As Date: dte = Application.WorkDay(DateSerial(Year(Date), 5, 15), 1)
 If Date = dte Then
    MsgBox "Je lance la macro"
 Else
    MsgBox "C'est pas le moment"
 End If
End Sub

Bonne soirée
 

Discussions similaires

Réponses
15
Affichages
444
Réponses
11
Affichages
529
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…