Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

vba messages temporisés

6 réponses
Avatar
j-pascal
Bonsoir,

Est-il possible de faire apparaître un msgbox toutes les 5' pour
inviter l'utilisateur à fermer le classeur ?

Merci pour votre aide,


JP

6 réponses

Avatar
Daniel.C
Bonsoir.
Utilise la méthode OnTime (des exeemples sur www.excelabo.net)
Daniel

Bonsoir,

Est-il possible de faire apparaître un msgbox toutes les 5' pour inviter
l'utilisateur à fermer le classeur ?

Merci pour votre aide,


JP


Avatar
j-pascal
Merci Daniel,

JP

Bonsoir.
Utilise la méthode OnTime (des exeemples sur www.excelabo.net)
Daniel

Bonsoir,

Est-il possible de faire apparaître un msgbox toutes les 5' pour inviter
l'utilisateur à fermer le classeur ?

Merci pour votre aide,


JP




Avatar
j-pascal
Re,

J'ai trouvé un exemple de JB :

Dans le module, j'ai mis ceci :

'---
Public HeureAlerte
Sub ProchaineAlerte()
HeureAlerte = Now + TimeValue("00:01:00")
Application.OnTime HeureAlerte, "Fin"
End Sub
Sub Fin()

On Error Resume Next
Application.OnTime HeureAlerte, Procedure:="Fin", Schedule:úlse

Réponse = MsgBox("Avez-vous fini d'utiliser le classeur ?", vbYesNo
+ vbQuestion)
If Réponse = vbNo Then
Call ProchaineAlerte
Else
MsgBox "Au revoir ..."
ThisWorkbook.Close True
End If

End Sub
'---

J'ai l'impression que certaines actions sur la feuille relance la
procédure (Si je remplace, "ThisWorkbook.Close" par un MsgBox pour
essai bien sûr !).

Est-ce que ma boucle ou ma sortie de procédure est correcte ?

@+ ?

JP

Bonsoir.
Utilise la méthode OnTime (des exeemples sur www.excelabo.net)
Daniel

Bonsoir,

Est-il possible de faire apparaître un msgbox toutes les 5' pour inviter
l'utilisateur à fermer le classeur ?

Merci pour votre aide,


JP




Avatar
JB
Bonjour,

Public HeureAlerte
Sub ProchaineAlerte()
HeureAlerte = Now + TimeValue("00:1:00")
Application.OnTime HeureAlerte, "Fin"
End Sub

Sub Fin()
On Error Resume Next
Application.OnTime HeureAlerte, Procedure:="Fin", Schedule:úlse
Réponse = MsgBox("Avez-vous fini d'utiliser le classeur ?",
vbYesNo + vbQuestion)
If Réponse = vbNo Then
Call ProchaineAlerte
Else
On Error Resume Next
Application.OnTime EarliestTime:=HeureAlerte,
Procedure:="fin", Schedule:úlse
MsgBox "Au revoir ..."
ThisWorkbook.Close True
End If
End Sub

Sub auto_close()
On Error Resume Next
Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin",
Schedule:úlse
End Sub

Sub auto_open()
ProchaineAlerte
End Sub

JB

On 3 déc, 23:29, j-pascal wrote:
Re,

J'ai trouvé un exemple de JB :

Dans le module, j'ai mis ceci :

'---
Public HeureAlerte
Sub ProchaineAlerte()
    HeureAlerte = Now + TimeValue("00:01:00")
    Application.OnTime HeureAlerte, "Fin"
End Sub
Sub Fin()

    On Error Resume Next
    Application.OnTime HeureAlerte, Procedure:="Fin", Schedule:=F alse

    Réponse = MsgBox("Avez-vous fini d'utiliser le classeur ?", v bYesNo
+ vbQuestion)
    If Réponse = vbNo Then
        Call ProchaineAlerte
    Else
        MsgBox "Au revoir ..."
        ThisWorkbook.Close True
    End If

End Sub
'---

J'ai l'impression que certaines actions sur la feuille relance la
procédure (Si je remplace, "ThisWorkbook.Close" par un MsgBox pour
essai bien sûr !).

Est-ce que ma boucle ou ma sortie de procédure est correcte ?

@+ ?

JP



> Bonsoir.
> Utilise la méthode OnTime (des exeemples surwww.excelabo.net)
> Daniel

>> Bonsoir,

>> Est-il possible de faire apparaître un msgbox toutes les 5' pour inv iter
>> l'utilisateur à fermer le classeur ?

>> Merci pour votre aide,

>> JP- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
j-pascal
Bonjour Jacques,

Merci pour ta réponse.
J'ai bien noté la différence de code pour la première procédure.

Dans la seconde :
'---
Sub auto_open()
ProchaineAlerte
End Sub


'---

Je ne l'ai pas précisé, mais j'avais :
'---
Private Sub Workbook_Open()
Dim Sh As Worksheet
Call ProchaineAlerte
etc .
'---
(sans incidence, j'imagine)

Dans la 2nd :
'---
Sub auto_close()
On Error Resume Next
Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin",
Schedule:úlse
End Sub


'---

J'avais :
'---
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim Sh As Worksheet
Dim MaPlageDeSaisies
Dim PlageDeSaisies

If SaveAsUI Then
MsgBox "Désolé, l'option Enregistrer sous... est impossible !",
_
vbExclamation, "choix possibles : Enregistrer ou Fermer"
Cancel = True
Exit Sub
Else
With ThisWorkbook
ChDrive "C"
ChDir .Path

Application.ScreenUpdating = False

Feuil2.Unprotect 'ActiveSheet.Unprotect
Feuil2.Activate

Range("B3:K2000").Locked = False

MaPlageDeSaisies = Range("B3:K" &
Application.CountA(Range("G:G"))).Address

With Range(MaPlageDeSaisies)
.Locked = True
.FormulaHidden = False
End With

With ActiveSheet
.Protect _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True
'.EnableSelection = xlUnlockedCells
End With

Feuil3.Visible = True 'True ou xlSheetVisible
Feuil3.Activate
ActiveWindow.ScrollRow = 1

For Each Sh In ThisWorkbook.Sheets
If Sh.CodeName <> "Feuil3" Then Sh.Visible =
xlSheetVeryHidden
Next
.SaveCopyAs Format(Now, "yyyymmdd-hh""h""nn") & " " &
.Name

End With
End If

' Application.EnableCancelKey = xlDisabled

Feuil3.Visible = True

For Each Sh In ThisWorkbook.Sheets
If Sh.CodeName <> "Feuil3" Then Sh.Visible = xlSheetVeryHidden
Next

End Sub
'---

J'imagine que c'est là que je dois insérer ton code ?

@+ ?

JP



Bonjour,

Public HeureAlerte
Sub ProchaineAlerte()
HeureAlerte = Now + TimeValue("00:1:00")
Application.OnTime HeureAlerte, "Fin"
End Sub

Sub Fin()
On Error Resume Next
Application.OnTime HeureAlerte, Procedure:="Fin", Schedule:úlse
Réponse = MsgBox("Avez-vous fini d'utiliser le classeur ?",
vbYesNo + vbQuestion)
If Réponse = vbNo Then
Call ProchaineAlerte
Else
On Error Resume Next
Application.OnTime EarliestTime:=HeureAlerte,
Procedure:="fin", Schedule:úlse
MsgBox "Au revoir ..."
ThisWorkbook.Close True
End If
End Sub

Sub auto_close()
On Error Resume Next
Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin",
Schedule:úlse
End Sub

Sub auto_open()
ProchaineAlerte
End Sub

JB

On 3 déc, 23:29, j-pascal wrote:
Re,

J'ai trouvé un exemple de JB :

Dans le module, j'ai mis ceci :

'---
Public HeureAlerte
Sub ProchaineAlerte()
    HeureAlerte = Now + TimeValue("00:01:00")
    Application.OnTime HeureAlerte, "Fin"
End Sub
Sub Fin()

    On Error Resume Next
    Application.OnTime HeureAlerte, Procedure:="Fin", Schedule:úlse

    Réponse = MsgBox("Avez-vous fini d'utiliser le classeur ?", vbYesNo
+ vbQuestion)
    If Réponse = vbNo Then
        Call ProchaineAlerte
    Else
        MsgBox "Au revoir ..."
        ThisWorkbook.Close True
    End If

End Sub
'---

J'ai l'impression que certaines actions sur la feuille relance la
procédure (Si je remplace, "ThisWorkbook.Close" par un MsgBox pour
essai bien sûr !).

Est-ce que ma boucle ou ma sortie de procédure est correcte ?

@+ ?

JP



Bonsoir.
Utilise la méthode OnTime (des exeemples surwww.excelabo.net)
Daniel



Bonsoir,





Est-il possible de faire apparaître un msgbox toutes les 5' pour inviter
l'utilisateur à fermer le classeur ?
Merci pour votre aide,





JP- Masquer le texte des messages précédents -





- Afficher le texte des messages précédents -




Avatar
JB
Cette instruction annule l'événement à venir en cas de fermeture
directe par l'utilisateur.

Application.OnTime EarliestTime:=HeureAlerte, Procedure:="fin",
Schedule:úlse

JB

On 4 déc, 07:55, j-pascal wrote:
Bonjour Jacques,

Merci pour ta réponse.
J'ai bien noté la différence de code pour la première procédure.

Dans la seconde :
'---> Sub auto_open()
>   ProchaineAlerte
> End Sub

'---

Je ne l'ai pas précisé, mais j'avais :
'---
Private Sub Workbook_Open()
Dim Sh As Worksheet
    Call ProchaineAlerte
etc .
'---
(sans incidence, j'imagine)

Dans la 2nd :
'---> Sub auto_close()
>     On Error Resume Next
>     Application.OnTime EarliestTime:=HeureAlerte, Procedure:="f in",
> Schedule:úlse
> End Sub

'---

J'avais :
'---
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As
Boolean)
Dim Sh As Worksheet
Dim MaPlageDeSaisies
Dim PlageDeSaisies

    If SaveAsUI Then
        MsgBox "Désolé, l'option Enregistrer sous... est impo ssible !",
_
            vbExclamation, "choix possibles : Enregistrer ou Fermer"
        Cancel = True
        Exit Sub
    Else
        With ThisWorkbook
            ChDrive "C"
            ChDir .Path

            Application.ScreenUpdating = False

            Feuil2.Unprotect  'ActiveSheet.Unprotect
            Feuil2.Activate

            Range("B3:K2000").Locked = False

            MaPlageDeSaisies = Range("B3:K" &
Application.CountA(Range("G:G"))).Address

                With Range(MaPlageDeSaisies)
                    .Locked = True
                    .FormulaHidden = False
                End With

                With ActiveSheet
                    .Protect _
                        DrawingObjects:=True, _
                        Contents:=True, _
                        Scenarios:=True
                    '.EnableSelection = xlUnlockedC ells
                End With

            Feuil3.Visible = True   'True ou xlSheetVisib le
            Feuil3.Activate
            ActiveWindow.ScrollRow = 1

            For Each Sh In ThisWorkbook.Sheets
                If Sh.CodeName <> "Feuil3" Then Sh.Visibl e =
xlSheetVeryHidden
            Next
                .SaveCopyAs Format(Now, "yyyymmdd-hh""h"" nn") & " " &
.Name

        End With
    End If

'   Application.EnableCancelKey = xlDisabled

    Feuil3.Visible = True

    For Each Sh In ThisWorkbook.Sheets
        If Sh.CodeName <> "Feuil3" Then Sh.Visible = xlSheetVer yHidden
    Next

End Sub
'---

J'imagine que c'est là que je dois insérer ton code ?

@+ ?

JP



> Bonjour,

> Public HeureAlerte
> Sub ProchaineAlerte()
>     HeureAlerte = Now + TimeValue("00:1:00")
>     Application.OnTime HeureAlerte, "Fin"
> End Sub

> Sub Fin()
>     On Error Resume Next
>     Application.OnTime HeureAlerte, Procedure:="Fin", Schedule: úlse
>     Réponse = MsgBox("Avez-vous fini d'utiliser le classeur ?",
> vbYesNo + vbQuestion)
>     If Réponse = vbNo Then
>         Call ProchaineAlerte
>     Else
>         On Error Resume Next
>         Application.OnTime EarliestTime:=HeureAlerte,
> Procedure:="fin", Schedule:úlse
>         MsgBox "Au revoir ..."
>         ThisWorkbook.Close True
>     End If
> End Sub

> Sub auto_close()
>     On Error Resume Next
>     Application.OnTime EarliestTime:=HeureAlerte, Procedure:="f in",
> Schedule:úlse
> End Sub

> Sub auto_open()
>   ProchaineAlerte
> End Sub

> JB

> On 3 déc, 23:29, j-pascal wrote:
>> Re,

>> J'ai trouvé un exemple de JB :

>> Dans le module, j'ai mis ceci :

>> '---
>> Public HeureAlerte
>> Sub ProchaineAlerte()
>>     HeureAlerte = Now + TimeValue("00:01:00")
>>     Application.OnTime HeureAlerte, "Fin"
>> End Sub
>> Sub Fin()

>>     On Error Resume Next
>>     Application.OnTime HeureAlerte, Procedure:="Fin", Schedule: úlse

>>     Réponse = MsgBox("Avez-vous fini d'utiliser le classeur ?" , vbYesNo
>> + vbQuestion)
>>     If Réponse = vbNo Then
>>         Call ProchaineAlerte
>>     Else
>>         MsgBox "Au revoir ..."
>>         ThisWorkbook.Close True
>>     End If

>> End Sub
>> '---

>> J'ai l'impression que certaines actions sur la feuille relance la
>> procédure (Si je remplace, "ThisWorkbook.Close" par un MsgBox pour
>> essai bien sûr !).

>> Est-ce que ma boucle ou ma sortie de procédure est correcte ?

>> @+ ?

>> JP

>>> Bonsoir.
>>> Utilise la méthode OnTime (des exeemples surwww.excelabo.net)
>>> Daniel

>>>> Bonsoir,

>>>> Est-il possible de faire apparaître un msgbox toutes les 5' pour i nviter
>>>> l'utilisateur à fermer le classeur ?
>>>> Merci pour votre aide,

>>>> JP- Masquer le texte des messages précédents -

>> - Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -

- Afficher le texte des messages précédents -