VBA Lancer un classeur qui s'autoferme mais qu'on puisse stopper

MJ13

XLDnaute Barbatruc
Bonjour à tous

J'aimerais avoir dans un fichier, une procédure VBA qui déclencherait une tempo de 10 secondes à l'ouverture et si on n'appuie pas sur la touche F1, une macro se lance et le fichier se ferme.

Mais, si on appuie sur la touche F1 avant 10 secondes après l'ouverture du fchier, la macro ne se lance pas et le fichier reste ouvert.

Merci d'avance :).
 

mromain

XLDnaute Barbatruc
Re : VBA Lancer un classeur qui s'autoferme mais qu'on puisse stopper

Bonjour Michel, le forum :)


Ci-dessous une possibilité :

Mettre ce code dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
    Application.OnKey "{F1}", "AppuiF1"
    ToucheF1 = False
    Application.OnTime Now + TimeValue("00:00:10"), "FermerClasseur"
End Sub
Et celui-ci dans un module standard :
VB:
Public ToucheF1 As Boolean
    

Public Sub AppuiF1()
    ToucheF1 = True
End Sub

Public Sub FermerClasseur()
    If ToucheF1 Then
        MsgBox "Vous avez appuyé sur la touche F1 dans le temps imparti"
    Else
        MsgBox "Vous n'avez pas appuyé sur la touche F1 dans le temps imparti"
    End If
End Sub


Edit :
Il serait peut-être intéressant de réactiver la touche F1 en ajoutant Application.OnKey "{F1}" au début de la procédure FermerClasseur()

A+
 

Pièces jointes

  • Classeur1.xlsm
    13 KB · Affichages: 56
  • Classeur1.xlsm
    13 KB · Affichages: 57
  • Classeur1.xlsm
    13 KB · Affichages: 56
Dernière édition:

MJ13

XLDnaute Barbatruc
Re : VBA Lancer un classeur qui s'autoferme mais qu'on puisse stopper

Bonjour Mickaël

Merci beaucoup pour ce code qui à l'air de fonctionner :).

Je verrai sur mon fichier d'origine si j'ai des problèmes.
 

job75

XLDnaute Barbatruc
Re : VBA Lancer un classeur qui s'autoferme mais qu'on puisse stopper

Bonjour Michel, mromain, Robert,

Une solution en appuyant sur la touche <Entrée> :

Code:
Dim flag As Boolean 'mémorise la variable

Private Sub Workbook_Open()
'touche <Entrée> pour éviter la fermeture du fichier
Dim t#
t = Now + 10 / 86400
While Now < t
  If flag Then Exit Sub
  DoEvents
Wend
Me.Saved = True
If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End Sub

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
flag = True
End Sub
J'ai regardé pour F1 mais cette touche n'a pas le même effet sur Excel 2003 et sur Excel 2010.

A+
 

job75

XLDnaute Barbatruc
Re : VBA Lancer un classeur qui s'autoferme mais qu'on puisse stopper

Re,

Si des fonctions volatiles comme AUJOURDHUI ou DECALER sont utilisées, on appuiera sur la touche F9 :

Code:
Dim flag As Boolean 'mémorisation de la variable

Private Sub Workbook_Open()
'touche F9 pour éviter la fermeture du fichier
Dim t#
t = Now + 10 / 86400
While Now < t
  If flag Then Exit Sub
  DoEvents
Wend
Me.Saved = True
If Workbooks.Count = 1 Then Application.Quit Else Me.Close
End Sub

Private Sub Workbook_SheetCalculate(ByVal Sh As Object)
flag = True
End Sub
A+
 

MJ13

XLDnaute Barbatruc
Re : VBA Lancer un classeur qui s'autoferme mais qu'on puisse stopper

Re, Bonjour Robert, Gérard

Merci aussi à vous 2 pour votre aide :).

Ton code Gérard fonctionne en routine, mais il ne me permet pas de modifier le code si je suis en développement pour modifier le code VBA :eek:.

Je garde donc le code de Mickaël, c'était la solution que j'avais commencé à développer, mais c'était un peu trop compliqué pour moi :eek:.

Robert, tu as pris aussi de ton temps pour m'aider, merci , alors cela mérite un like, tout travail mérite salaire :).
 

MJ13

XLDnaute Barbatruc
Re : VBA Lancer un classeur qui s'autoferme mais qu'on puisse stopper

Re, Bonjour Jean-Marie

Oui, tu as raison :eek:.

Du coup, vu toutes les touches de raccourcis que je me sers, je ne vais plus en avoir qui soient utilisables :D.
 

Discussions similaires

Réponses
6
Affichages
441

Statistiques des forums

Discussions
311 733
Messages
2 082 015
Membres
101 870
dernier inscrit
Dethomas