Alerte par msgbox toutes les 5 semaines

ascal44

XLDnaute Occasionnel
Bonjour ,
Je sollicite votre aide pour afficher une alerte par msgbox toutes les 5 semaines a l'ouverture d'un classeur et ce sur la durée de la semaine.

Je vous remercie par avance pour vos idées
 

vgendron

XLDnaute Barbatruc
Hello
un essai avec ce code à mettre dans le code du ThisWorkbook

VB:
Private Sub Workbook_Open()
dateDebut = Range("A1") 'contient la date de début à partir de laquelle le controle se fait

NumSemDeb = WorksheetFunction.WeekNum(dateDebut) 'récupère le numéro de semaine de la date de début
NumSemAct = WorksheetFunction.WeekNum(Date) 'récupère le numéro de semaine en cours

If (NumSemAct - NumSemDeb) Mod 5 = 4 Then 'si il y a un écart de x*5semaines
    MsgBox NumSemAct - NumSemDeb + 1 & " semaines"
End If

End Sub
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Dans le module ThisWorkbook :
VB:
Option Explicit

Private Sub Workbook_Open()
Dim DCyc As Date, NoterDCyc As Boolean
On Error Resume Next
DCyc = [DébutCycle]
If Err Then DCyc = Date: NoterDCyc = True
On Error GoTo 0
Select Case Date - DCyc
   Case Is >= 7: DCyc = DCyc + 35: NoterDCyc = True
   Case Is >= 0: MsgBox "Coucou"
   End Select
If NoterDCyc Then ThisWorkbook.Names.Add "DébutCycle", _
   "=DATEVALUE(""" & Format(DCyc, "dd/mm/yyyy") & """)"
End Sub

Pas vu ta solution vgendron, désolé.

Remarque: avec la mienne il faudra probablement corriger un coup manuellement la référence du nom "DébutCycle" pour qu'elle désigne le lundi où le message doit être émis.
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Remarque: il est possible d'utiliser la touche F5 pour lancer une Private Sub Workbook_Open du module ThisWorkbook pour qu'elle s'exécute immédiatement, en dehors du contexte où elle doit s'exécuter toute seule, c'est à dire à l'ouverture du classeur.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Vous n'aviez pas dit que la date de la dernière maintenance était inscrite dans une cellule.
Alors j'avais pour ma part considéré qu'elle n'y était pas, mais notée en référence d'un nom du classeur et automatiquement reconduite toutes les 5 semaines.
Essayez comme ça :
VB:
Private Sub Workbook_Open()
Dim NbJr As Long
NbJr = Date - Feuil1.[C3].Value
If NbJr >= 35 And NbJr < 40 Then MsgBox "maintenence à faire.", vbInformation, "Ouverture " & Me.Name
End Sub
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
148
Réponses
6
Affichages
334

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 206
Messages
2 086 219
Membres
103 158
dernier inscrit
laufin