Ouverture message avec Macro

Bonjour,

Est-il possible d'ouvrir une fenetre avec un texte défini sur un classeur à une heure précise tous les jours ouvrés ?

Ex: à 17h00 ouverture d'une fenêtre sur le classeur ouvert ou est noté "controle du stock".

Merci d'avance pour vos réponses.

Bonjour

sans test

Réalisé avec l'aide du VBA

Dans le module ThisWorkbook (du fichier concerné)

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  Application.OnTime EarliestTime:=TimeValue("17:00:00"), _
                Procedure:="Mon_Message", Schedule:=False
End Sub

Private Sub Workbook_Open()
  Application.OnTime TimeValue("17:00:00"), "Mon_Message"
End Sub

et dans un module dudit fichier

Sub Mon_Message()
  MsgBox "it's tea time"
End Sub

Bonjour,

Je suis novice , je ne comprend pas le 2eme code, je ne sait pas ou le mettre et a quoi l'attribuer.

j'ai essayé d'insérer le 1er code dans le module ThisWorkbook, puis j'ai créé un module en insérant le 2eme code

mais cela ne fonctionne pas.

Je pense qu'il me manque une procédure mais je ne trouve pas, pouvez vous m'aiguillez vers le bon chemin?

Merci d'avance pour votre aide.

Bonsoir

Pas de soucis regardes le fichier joint

Si d'autres questions n'hésites pas

Bonne nuit

Bonjour Banzai et Alpha , ainsi qu' a tous les Excellistes qui passeraient par ce fil,

Juste une petite remarque :

Si ce programme est effectivement ouvert et utilisé sur le poste toute la journée , c'est une très bonne solution.

Car il faut bien sur que le classeur soit ouvert et que la macro d'alarme ai été lancée.

S' il n'est utilisé qu'a cette heure , et qu'il y a d'autres applis ouvertes voir d'autre Excel, il est surement préférable pour lancer le classeur d'utiliser le planificateur de tâches Windows ce qui permet d'ouvrir une nouvelle instance d'Excel.

Dans ce classeur , il faudrait ajouter une procédure workbook_open déclenchant la programmation de l'alarme et pourquoi pas conserver l'appel de la même procédure que Banzai propose.

Bonjour et Merci pour vos réponses qui m'aide énormément, en fait je n'avais pas fermer et réouvert le classeur, c'est donc pour cela que je n'arrivais pas à avoir le résultat.

J'ai un soucis par rapport à ce code, enfin à mon avis c'est plutôt par rapport aux autres codes présent qu'il y a une incompatibilté.

pourriez vous me donner une coup de main, je vous met ci-dessous les codes du module 1

la ligne en défaut (la 2eme) est rivate Sub Workbook_BeforeClose(Cancel As Boolean)

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

If Sh.Name <> "Vk" Then

If Target.Column = 14 Then

Cancel = True

Target = "X"

End If

End If

End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

If Sh.Name <> "Vk" Then

If Target.Count = 1 Then

If Target.Column = 14 And UCase(Target) = "X" Then

Application.Goto Sheets("Vk").Range("A1"), Scroll:=True

End If

End If

End If

End Sub

Private Sub Workbook_Open()

Application.DisplayFullScreen = True

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.WindowState = xlNormal

End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)

Application.OnTime EarliestTime:=TimeValue("21:19:00"), _

Procedure:="Mon_Message", Schedule:=False

End Sub

Private Sub Workbook_Open()

Application.OnTime TimeValue("21:19:00"), "Mon_Message"

End Sub

merci d'avance pour vos réponses.

Bonjour,

en fait tu ne peux pas avoir 2 procédures ou fonction qui portent le même nom.

Donc , il faut cumuler les instructions dans les même procédures évenementielles :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.WindowState = xlNormal
Application.OnTime EarliestTime:=TimeValue("21:19:00"), Procedure:="Mon_Message", Schedule:=False
End Sub

Private Sub Workbook_Open()
Application.DisplayFullScreen = True
Application.OnTime TimeValue("21:19:00"), "Mon_Message"
End Sub

Si join le fichier

14test.xls (19.00 Ko)

Merci Misterno,

Je me doutait bien qu'il y avait une erreur à ce niveau , un grand merci pour ton aide,

cela fonctionne mis j'ai une erreur a la fermeture du fichier sur cette ligne

Application.OnTime EarliestTime:=TimeValue("22:43:00"), Procedure:="Mon_Message", Schedule:=False

Qu'en pense tu?

JE pense que le timer n'a pas été armé et c'est pour cela qu'il génére une erreur lorsque tu essai de le désactiver en sortant.

Si tu ouvre et ferme à nouveau, as tu toujours l'erreur ?

Bonsoir

je vois 2 solutions (plus celle de Misterno)

1) Dans la procédure Workbook_BeforeClose

Places un On error Resume Next avant

Application.OnTime EarliestTime:=TimeValue("22:43:00"), Procedure:="Mon_Message", Schedule:=False

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.WindowState = xlNormal
On Error Resume Next
Application.OnTime EarliestTime:=TimeValue("21:19:00"), Procedure:="Mon_Message", Schedule:=False
End Sub

Solution 2 (Je pense la plus "logique" )

Dans la macro "Mon_Message"

Relances le "décompte"

Application.OnTime TimeValue("21:19:00"), "Mon_Message"

Bonjour,

Effectivement tu as raison il fallait juste ouvrir de nouveau le classeur, l'erreur a disparu.

Un grand Merci!

Rechercher des sujets similaires à "ouverture message macro"