Alerte sonore

Résolu
eric2027 -  
 narvalot -
Bonjour le Forum

Est-il possible de créer une alerte sonore et visuel quand un fichier est ouvert plus d'une heure,

Je travaille en réseau et mes collègues monopolisent des fichiers excel, et c'est très désagréable d'essayer de rattraper le temps

Par avance, merci

Cordialement

Éric 2027

38 réponses

  • 1
  • 2
Résumé de la discussion

Problème posé : créer une alerte sonore et visuelle lorsqu'un fichier Excel reste ouvert plus d'une heure sur un réseau afin d'éviter qu'il soit monopolisé. Des solutions basées sur VBA préconisent d'utiliser une macro Sub Alerte avec Application.OnTime pour déclencher l'alerte après une heure, puis émettre un bip et éventuellement sauver ou fermer le fichier. L'approche recommandée est d'ajouter le code dans un module et d'appeler OnTime depuis Workbook_Open pour planifier l'alerte à l'ouverture, puis d'ordonner une fermeture après l'heure. En cas de tests, plusieurs approches existent mais le fonctionnement dépend de la session Excel et des variantes qui prévoient une séquence d'alerte suivie d'un arrêt du son avant la fermeture.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Bonjour,

    pour tester colle ce code dans un module

    Sub Alerte()
    'ActiveWorkbook.Save
    'ActiveWorkbook.Close
    Application.OnTime TimeSerial(Hour(Time), Minute(Time), Second(Time) + 2), "Alerte"
    Beep
    End Sub

    et celui ci dans la Thiswokbook

    Private Sub Workbook_Open()
    Application.OnTime Now + TimeValue("01:00:00"), "Alerte"
    End Sub

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    1
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    teste ces codes, dans le module colle ces deux codes

    Sub Alerte()
    Application.OnTime TimeSerial(Hour(Time), Minute(Time), Second(Time) + 2), "Alerte"
    Beep
    End Sub

    Sub Fermeture()
    'ActiveWorkbook.Save
    'ActiveWorkbook.Close
    End Sub

    dans le Thiswokbook

    ce code

    Private Sub Workbook_Open()
    Application.OnTime Now + TimeValue("00:50:00"), "Alerte"
    Application.OnTime Now + TimeValue("01:00:00"), "Fermeture"
    End Sub

    au bout de 50 minutes ça sonne et au bout d'une heure enregistrement et fermeture du fichier
    1
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    Bonjour

    Une petit exemple qui ne répond peut être pas tout à fait à ton problème
    https://www.cjoint.com/?3LkoSCR8jxh

    Cdlmnt
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut ccm81,

      Ton idée est bonne en effet.

      On peux même y ajouter deux - trois variantes.
      Du style (pour laisser le gars bosser un peu quand même...) :
      - enregistrer et fermer le fichier 10 secondes après l'alerte...
      - relancer le compteur :
      => à chaque changement de feuille
      => à chaque changement de sélection de cellule
      => etc...
      0
    2. ccm81 Messages postés 11033 Statut Membre 2 434
       
      Merci,

      Mais j'aurais aimé que l'alerte se déclenche sans intervention sur une feuille, ça je ne sais pas faire (et je reste en .... alerte!)

      Cdlmnt
      0
  4. eric2027
     
    Mike,

    C'est tout à fait ce que je voulais, j'aimerais bien, si c'est possible mettre quand l'alerte sonne une tête de mort avec écris en dessous
    Laissez travailler ceux qu'ils veulent travailler

    Dis moi si c'est faisable sinon, l'alerte me convient, c'est suoer cool

    Encore 1000 merci à vous tous.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    oui c'est tout à fait possible mais pourquoi alourdir inutilement un fichier, je verrais plus une alerte sonore au bout de 45 minutes par exemple et au bout d'une heure enregistrement et fermeture du fichier.

    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut Mike-31,

      Pour ne pas alourdir le fichier, Excel propose également, lors d'une tentative d'ouverture d'un fichier déjà ouvert, de notifier cette demande d'ouverture à l'utilisateur...
      0
  7. eric2027
     
    c'etait pour rire un peu, ils m'énervent tellement que des fois, bref, oui ce serait mieux ainsi avec enregistrement et fermeture
    super bonne idée mieux que le mienne je te l'accorde

    merci encore
    0
  8. eric2027
     
    j'ai changé les horaires pour voir si cela fonctionne j'ai mis 5sec pour l'alerte et 10 sec pour la fermeture et ça ne fonctionne pas, l'alerte est là mais le fichier ne se ferme pas
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      enlève les apostrophes en début des deux lignes :
      Sub Fermeture()
      'ActiveWorkbook.Save
      'ActiveWorkbook.Close
      End Sub 


      devient :
      Sub Fermeture()
      ActiveWorkbook.Save
      ActiveWorkbook.Close
      End Sub 
      0
  9. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    remplace
    ActiveWorkbook.Close

    par
    Application.Quit

    mais la fermeture d'Excel peut vite devenir gênante, je regarde comment arrêter le beep avant fermeture
    0
  10. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    dans ton module colle ces codes

    Option Explicit

    Dim BlinkTime As Date

    Public Sub Alerte()
    Beep
    BlinkTime = Now() + TimeValue("00:00:02") 'le temps du clignotement
    Application.OnTime BlinkTime, "Alerte"
    End Sub
    Sub StopAlerte()
    On Error Resume Next
    Application.OnTime BlinkTime, "Alerte", , False
    End Sub

    Sub Fermeture()
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    End Sub

    si tu préfères fermer Excel et non pas le classeur, remplace

    ActiveWorkbook.Close
    par
    Application.Quit

    dans la Thiswokbook ce code

    Option Explicit

    Private Sub Workbook_Open()
    Application.OnTime Now + TimeValue("00:55:00"), "Alerte"
    Application.OnTime Now + TimeValue("00:05:00"), "StopAlerte"
    Application.OnTime Now + TimeValue("01:00:00"), "Fermeture"
    Exit Sub
    End Sub

    le beep sonore débute au bout de 55 minutes pendant 5 minutes, le fichier s'enregistre et se ferme.
    Il est possible également d'envisager un code pour forcer la fermeture du fichier après un temps d'inactivité exemple 15 minutes, ce qui pourrait être plus judicieux que d'attendre 1 heure
    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  11. eric2027
     
    oui mais si je mets
    Application.OnTime Now + TimeValue("01:00:00"), "Fermeture"
    Application.OnTime Now + TimeValue("00:15:00"), "Fermeture" , ça doit le fermer et l'enregistrer
    0
  12. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    non il y a un problème dans ta programmation cette ligne OK
    Application.OnTime Now + TimeValue("01:00:00"), "Fermeture"
    mais cette ligne doit mettre Excel en live puisque tu programme la fermeture 15 minutes plus tard
    Application.OnTime Now + TimeValue("00:15:00"), "Fermeture"

    teste ce code, celui d'hier soir (la fatigue) n'est pas chronologique, et on en reparle
    après 55 minutes, beep sonore, arrêt de la procédure sonore après 59 minutes pour libérer Excel et fermeture au bout d'une heure

    Application.OnTime Now + TimeValue("00:55:00"), "Alerte"
    Application.OnTime Now + TimeValue("00:59:00"), "StopAlerte"
    Application.OnTime Now + TimeValue("01:00:00"), "Fermeture"
    0
  13. eric2027
     
    c'est nickel de chez nickel, il vont être très très embêtés et moi je vais pouvoir travaillé tranquille sans stress grâce à toi Mike

    il y a quelque temps j'avais mis un post sur ccm concernant un soucis de cellule coloriées, en effet j'avais réussi à coloriée des cellules d'une feuille à une autre via les mfc mais le soucis j'en ai plusieurs dizaine de dizaine à faire et comme je suis sur les stats parce que fin d'année oblige, j'avais demandé si on pouvait faire une macro pour synchoniser les feuilles
    0
  14. eric2027
     
    je l'ai testé sur une feuille vierge et ça fonctionne à merveille mais quand je mets tes codes dans mon dossier ou il y a des liens et une petite macro et des mfc, ça beug, il demande d'enregistrer et quand j'annule il me fait debogage et le message suivant

    Erreur d'execution '1004'
    Dimension spécifié non valide pour le type de graphique en cours

    et quand j'annule l'enregistrement, il me renvois à la macro et j'ai
    ActiveWorkBook,save en jaune

    ??
    0
  15. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    teste ce code plus stable qui temporise l'inactivité que j'ai programmé à 5 minutes,
    remplace les codes précédents par ce code dans un module

    Option Explicit
    Option Private Module
    'Ti
    'Delai est le temps d'inactivité maxi en minutes
    Const Delai = 5
    Sub Programmation()
    Dim Heure As Date
    Heure = Now + TimeValue("00:" & Delai & ":00")
    ThisWorkbook.Names.Add Name:="ChronoTime", RefersTo:=Heure
    ThisWorkbook.Names.Add Name:="Chrono", RefersTo:=0
    Application.OnTime Heure, "Interruption"
    '[B2].Interior.ColorIndex = 3
    End Sub
    Private Sub Interruption()
    With ThisWorkbook
    If .Sheets(1).Evaluate("Chrono") = 0 Then
    .Save
    .Close
    Else
    Programmation
    End If
    End With
    End Sub
    Sub SupprimeInterruption()
    Dim Heure As Date
    On Error Resume Next
    Heure = ThisWorkbook.Sheets(1).Evaluate("ChronoTime")
    Application.OnTime Heure, "Interruption", schedule:=False
    End Sub

    et ces codes dans la Thiswokbook

    Option Explicit
    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    SupprimeInterruption
    End Sub
    Private Sub Workbook_Open()
    Programmation
    End Sub
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Excel.Range)
    ThisWorkbook.Names("Chrono").Value = 1
    End Sub

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
  16. eric2027
     
    pareil que la derniere fois, ça demande d'enregistrer et il n'y a plus d'heure ni de son
    0
  17. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Plus d'heure ni de son n'a rien à voir, peux tu copier un exemple de fichier sans note confidentielle mais avec tes macros que je vois le conflit
    0
  18. eric2027
     
    voilà le lien

    http://cjoint.com/?CLlnYGOY0hQ

    merci
    0
  19. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Dans quelle cellule utilises tu la fonction SomCoul
    0
  • 1
  • 2