Tempo sur une userform

  • Initiateur de la discussion Initiateur de la discussion Chris57
  • Date de début Date de début

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 !

Chris57

XLDnaute Occasionnel
Bonjour à tous,

j'ai un fichier excel qui tourne 24h/24 et qui affiche des messages d'alerte à certaines heures + fait résonner une alarme sonnore.

Ces messages sont affichés dans un userform qui possède un bouton acquiter, mais il arrive que la personne présente oublie d'acquiter et donc les messages suivants ne sont plus affichés.

Il faudrai que l'userform se ferme automatiquement au bout de 25 min si personne n'a acquité (car il peut y avoir un message par 1/2 heure).

Merci d'avance
 
Re : Tempo sur une userform

J'ai testé vos idées avec une tempo de 25sec, mais j'arrive pas à stopper l'alarme et fermer l'userform en même temps. Je suis paumé dans les boucles...

J'ai en fait 2 tempos : celle de l'userform et celle de l'alarme sonore :
--------------------------------------------------------------------------
MODULE :
--------------------------------------------------------------------------
Sub Surveillance()

.../...
' Lance l'alerte si modif du programme
If x.Offset(0, 6) = "x" Or x.Offset(0, 8) = "x" Or x.Offset(0, 9) = "x" Or x.Offset(0, 10) = "x" Or x.Offset(0, 12) <> "" Then 'GTA
DoEvents
Application.OnTime Now + TimeValue("00:00:25"), "ACQUITauto"
ALERTE.Show
.../...

end sub

Sub ACQUITauto()
Unload ALERTE
ALERTE.Hide
End Sub

--------------------------------------------------------------------------
USERFORM
--------------------------------------------------------------------------
Private Sub UserForm_Activate()

' Inscrit Si monté ou baisse de charge
msglibre.Caption = MESSAGElibre
msgGTA.Caption = MESSAGEGTA
msgRP.Caption = MESSAGERP
msgRS.Caption = MESSAGERS
msgTG.Caption = MESSAGETG

' Déclenche le son d'alerte
If PASDALARME = 1 Then 'variable pour supprimer l'alarme sonore (1 = son en service)
Start = Timer ' Définit l'heure de début.

Do While Timer < Start + 25 ' Tempo de 25sec
Application.DisplayAlerts = False
Worksheets("Alarme").OLEObjects("Object 6").Verb
DoEvents
Loop
STOPwav = True
Finish = Timer ' Définit l'heure de fin.
TotalTime = Finish - Start ' Calcule la durée totale.
ElseIf PASDALARME = 0 Then GoTo theend
End If
theend:
End Sub


Private Sub ACQUITER_Click()
' Bouton ACQUITER
STOPwav = True
Unload Me
ALERTE.Hide
End Sub
--------------------------------------------------------------------------
L'userform disparait bien après 25 sec, mais le problème est lorsque j'acquite avant la fin de la tempo avec le bouton de l'userform, l'alarme continue à sonner durant la tempo de 25sec et quelques fois l'userform de ré-affiche...
De plus tant que la tempo n'est pas terminée, je PC est bloqué par un sablier.

Normalement la tempo sera de 25 min (car une alarme possible toutes les 1/2 heure), et si le mec acquite de suite, le PC restera inutilisable !

NB : il y a plusieurs conditions d'enclenchement de l'alarme, c'est ptet une cause de bug !?!
 
Dernière édition:
Re : Tempo sur une userform

re:

pourquoi reecrire

prends directement les macros, tu modifies le temps de reaction,

gostop

au 1er lancement, demarre l'horloge
au 2eme l'arrete,
au 3eme la relance et ainsi de suite. quand tu quittes l'appli, stophorloge
 
Re : Tempo sur une userform

Mais je n'ai rien ré-écrit :

' Lance l'alerte si modif du programme
If x.Offset(0, 6) = "x" Or x.Offset(0, 8) = "x" Or x.Offset(0, 9) = "x" Or x.Offset(0, 10) = "x" Or x.Offset(0, 12) <> "" Then 'GTA
DoEvents
Application.OnTime Now + TimeValue("00:00:25"), "ACQUITauto"
ALERTE.Show

c'est bien la macro du lien que tu m'as donné...


Le problème réside dans la seconde boucle qui fait retentir l'alarme sonnore :


' PROCEDURE CONCERNANT L'USERFORM NOMMEE "ALERTE"
Private Sub UserForm_Activate()

' Inscrit Si monté ou baisse de charge
msglibre.Caption = MESSAGElibre
msgGTA.Caption = MESSAGEGTA
msgRP.Caption = MESSAGERP
msgRS.Caption = MESSAGERS
msgTG.Caption = MESSAGETG


' Déclenche le son d'alerte
If PASDALARME = 1 Then 'variable pour supprimer l'alarme sonore (1 = son en service)
Start = Timer ' Définit l'heure de début.

Do While Timer < Start + 25 ' Tempo de 25sec de sonneries
Application.DisplayAlerts = False
Worksheets("Alarme").OLEObjects("Object 6").Verb
DoEvents
Loop
STOPwav = True

Finish = Timer ' Définit l'heure de fin.
TotalTime = Finish - Start ' Calcule la durée totale.
ElseIf PASDALARME = 0 Then GoTo theend
End If
theend:
End Sub


Pour info ce fichier surveille le programme de charge de la production d'électricité d'une centrale thermique.
Nous recevons par mail le programme du jour suivant et chaque 1/2 heure le fichier vérifie s'il y a un changement et si c'est le cas un userform apparait accompagné d'une alarme.

Voici à quoi ressemble le tableau du programme :
15:12:25
PROGRAMME DU : lundi 16 avril 2007 de 18h53
____GROUPE____ PENTE____ RP____ RS____ TG
00h00____ 200 MW____ 5____ 0____ 8 MW
00h30____ 200 MW____ _____ _____ 10 MW
01h00____ 200 MW____ _____ _____ 10 MW
01h30____ 255 MW____ 5____ _____ 10 MW
02h00____ 255 MW____ _____ 5____ 10 MW
02h30____ 255 MW____ _____ 5____ 10 MW
03h00____ 255 MW____ _____ _____ 10 MW

(j'ai trouvé le moyen de rajouter des couleurs pour que ce soir plus clair 😉)
 
Dernière édition:
- 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
Retour