Fermeture automatique du classeur s'il n'est pas utilisé

coco_lapin

XLDnaute Impliqué
Bonjour,

J'avais récupéré sur ce forum une application VBA qui permet d'enregistrer puis de fermer un classeur si celui-ci n'est pas utilisé pendant un certain temps.

Cette application fonctionne très bien si Excel apparaît à l'écran mais ne fonctionne plus si une autre application (courrier électronique ou word ou explorateur ou...) apparaît à l'écran.

En d'autre termes ce classeur est sous un réseau et si un utilisateur l'ouvre puis utilise une autre application et bien l'application VBA n'enregistre pas et ne ferme pas le classeur (ce qui bloque le classeur pour un autre utilisateur).

Je joins un exemple en annexe avec une temporisation de 7 secondes c'est-à-dire qu'au bout de 7+10 secondes le classeur s'enregistre et se ferme automatiquement.

Merci pour votre aide
 

Pièces jointes

  • interruption.xls
    30 KB · Affichages: 363

PMO2

XLDnaute Accro
Re : Fermeture automatique du classeur s'il n'est pas utilisé

Bonjour,

Essayez avec cette procédure modifiée

Code:
Private Sub Interruption()
  With ThisWorkbook
    If .Sheets(1).[Chrono] = 0 Then
          UserForm1.Show vbModeless '///ajout
    Else
      Programmation
    End If
  End With
End Sub

Cordialement.

PMO
Patrick Morange
 

coco_lapin

XLDnaute Impliqué
Re : Fermeture automatique du classeur s'il n'est pas utilisé

Bonjour PM02 et le forum,

Merci PM02 pour ta réponse. L'ajour de vbModeless permet à l'UserForm de ne pas être modal.
Ta proposition permet de résoudre mon problème mais en génère un autre.

A l'ouverture du classeur ta solution fonctionne une première fois mais à la seconde ouverture le message d'erreur "Erreur d'exécution 429. Un composant ActiveX ne peut pas créer d'objet" apparaît. A la 3ème ouverture cela fonctionne, à la 4ème un message d'erreur apparaît et ainsi de suite.

En tout cas déjà merci beaucoup pour ton idée.
 

PMO2

XLDnaute Accro
Re : Fermeture automatique du classeur s'il n'est pas utilisé

Bonjour,

Peut-être

Code:
Private Sub Interruption()
With ThisWorkbook
  If .Sheets(1).[Chrono] = 0 Then
    On Error Resume Next
    Do
      Err.Clear
      UserForm1.Show vbModeless
    Loop Until Err = 0
  Else
    Programmation
  End If
End With
End Sub

Est-ce mieux ?

Cordialement.

PMO
Patrick Morange
 

coco_lapin

XLDnaute Impliqué
Re : Fermeture automatique du classeur s'il n'est pas utilisé

Bonjour PM02 et le forum,

Merci Patrick pour ta solution "On Error" qui supprime le message d'erreur.
J'ai compris ce que tu as fais mais je ne m'explique pas pourquoi vbModeless générait le message d'erreur 1 fois sur 2.

Le principal est que maintenant l'ensemble de l'application fonctionne très bien.
Merci encore pour ton aide et bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 091
Membres
103 467
dernier inscrit
Pandiska