Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
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.
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
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.
Bonjour et merci pour vos propositions ,
J'essaie avec la solution de vgendron , mais j'ai un débogage sur : NumSemDeb =Vide alors qu'en A1 j'ai mis une date du 10/02/2018
Bonjour.
Avec cette information, je peux maintenant dire qu'avec ma solution au lieu de :
If Err Then DCyc = Date: NoterDCyc = True
vous pouvez mettre :
If Err Then DCyc = DateSerial(2018, 2, 1): NoterDCyc = True
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.
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
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD