Bonjour à tous,

J’ai écrit une petite procédure qui affiche un MSGBOX à l’utilisateur d’un fichier de control. Je souhaiterai que le message ne s’affiche pas seulement à l’ouverture du fichier, mais aussi quand le fichier n'est pas ouvert. Par exemple, à lancement de Windows et à des heures spécifiques. De sorte à rappeler l'utilisateur du statut de sont travail.

Je pense que c'est une ligne de code API.

Merci d’avance pour votre aide.

Ci-dessous la procédure que j’ai écrite pour afficher un msgbox, à l’ouverture du fichier et periodiquement; mais aussi sur clic d’un bouton que j’ai placé sur la feuille.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Option Explicit
Private O As Object 'déclare la variable O (Onglet)
Private DL As Integer 'déclare la variable DL (Dernière Ligne)
Private PL As Range 'déclare la variable PL (PLage)
Dim Lheure As Double
Dim Interval As Integer
 
Public Sub ArretTimer()      'Pour arrêter le timer, il suffit d'appeler cette procédure.
On Error Resume Next
      Application.OnTime Lheure, "ExecutionTimer", , False
End Sub
 
Public Sub ExecutionTimer()
      'Pour cette exemple, le code est exécuté  toutes les minutes.
      MonCountIf2
      Lheure = Now + TimeSerial(0, 1, 0)
      Application.OnTime Lheure, "ExecutionTimer"
End Sub
 
Sub MonCountIf2()
'
Set O = Sheets(1) 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, 10).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne 10 (=J) de l'onglet O(=Sheet1)
Set PL = O.Range("AA7:A" & DL) 'définit la palge PL
 
    Application.ScreenUpdating = False
    On Error Resume Next    'Comme le fichier est nouveau, au cas où il n'y a pas toutes les conditions du filtre, ne pas générer d'erreur à cause de ça.
 
        MsgBox Application.UserName & "," & vbCr & vbCr & Chr(149) & "There is " & WorksheetFunction.CountIf(PL, "Overdue") & _
        " Overdue : Prazo de pagament jà passou!" & vbCr & Chr(149) & "There is " & WorksheetFunction.CountIf(PL, "Due") & _
        " Due : Por pagar hoje!" & vbCr & Chr(149) & "There is " & WorksheetFunction.CountIf(PL, "Will be due") & _
        " Will Due : Por pagar esta semana" & vbCr & vbCr & Chr(149) & "There is " & WorksheetFunction.CountIf(PL, "Paid") & _
        " Paid : Pagamento já feito", vbInformation, _
        "Contas a pagar."
 
    Application.ScreenUpdating = True
End Sub