Existe-t-il un test pour voir si un classeur est ouvert ???
(Afin de ne pas faire un OnTime sur un classeur fermé qui est donc obligé de redémarrer...)
Mici !
Az
Existe-t-il un test pour voir si un classeur est ouvert ???
(Afin de ne pas faire un OnTime sur un classeur fermé qui est donc obligé de redémarrer...)
Mici !
Az
Bonjour
Je suppose que tu connais le nom de ton fichier donc:
Il y a peut être plus rapide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 For I = 1 To Application.Workbooks.Count if application.Workbooks(i).Name=Nom_Fichier then ... Next
Slts
Ca dépend par qui il a été ouvert :
- la même instance d'Excel :
http://www.developpez.net/forums/showthread.php?t=98510
http://www.developpez.net/forums/sho...d.php?t=190645
- une autre instance d'Excel ou un autre ordinateur :
http://www.developpez.net/forums/sho...d.php?t=158804
http://www.developpez.net/forums/showthread.php?t=88464
j'espere que cela t'aidera.
Pour l'instant ça ira mais si quelqu'un a ça sans boucle ça m'arrange parce que mon truc est déjà bien lourd (sans mauvais jeu de mot...)
Merci Plateforme pour cette boucle tout de même astucieuse !!
Az
Dsl Dadavyvy mais j'avais posté avant de voir ton message, entre temps je suis allé voir sur les liens que tu m'a conseillé et je dois avoué qu'il n'ont pas résolu mon problème, aussi vais-je l'expliciter un peu plus.
J'ai une procédure qui ferme mon fichier excel lorsque je ne l'utilise pas pendant 20 sec. Seulement si je le ferme manuellement, la procédure se poursuit et il m'ouvre, puis me referme mon fichier 20 sec après mon dernier clic sur la page.
Ce problème vient je pense du OnTime et je voulais donc lui demander de n'éxécuter la procédure que si le fichier était ouvert au moment ou le OnTime lance la procédure... j'espère que vous me suivez, je vous joint le code pour d'avantage de clarté :En espérant que vous voyez ce que je veux dire !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 Dim deconnexion Const tps_deconnect = "00:00:20" Private Sub Workbook_Open() deconnexion = Now + TimeValue(tps_deconnect) Call Verif_Inactivite End Sub Sub Verif_Inactivite() If deconnexion < Now + TimeValue("00:00:01") Then ThisWorkbook.Save ThisWorkbook.Close Else Application.OnTime deconnexion, "ThisWorkbook.Verif_Inactivite", False End If End Sub Private Sub Workbook_SheetCalculate(ByVal Sh As Object) deconnexion = Now + TimeValue(tps_deconnect) End Sub Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) deconnexion = Now + TimeValue(tps_deconnect) End Sub Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) deconnexion = Now + TimeValue(tps_deconnect) End Sub
Az
Il faut rajouter :
Par contre, si la personne au final ne ferme pas le classeur après l'alerte d'enregistrement...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Private Sub Workbook_BeforeClose(Cancel As Boolean) On Error Resume Next Call Application.OnTime(deconnexion, "ThisWorkbook.Verif_Inactivite", , False) End Sub
Je vais modifier mon précédent post sur le sujet.
Coucou,
J'ai essayé et j'ai pas l'impression que ça marche mieux...
Une fois qu'il a décidé qu'il allait exécuté à cette heure précise, il ne veut pas faire demi-tour...
Sinon est-ce que tu peux me donner plus d'infos sur la méthode OnTime (et plus particulièrement le Schedule...)parce que dans l'aide c'est pas super clair pour moi...
Merci d'avance !
Az
Partager