XL 2016 Fichiers Excel qui s'ouvrent tout seul ???

JSP22

XLDnaute Nouveau
Bonjour à tous,
J'ai créé plusieurs fichiers Excel qui sont reliés entre et liés également à une base Access. Lorsqu'on ouvre un de ces fichiers, les autres fichiers liés s'ouvrent en lecture seule également. De quoi cela peut il venir ?
Je n'arrive pas à déterminer à quel moment cela se produit mais c'est très fréquent.
Merci d'avance pour votre aide...
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour JSP,
S'ils s'ouvrent c'est qu'on leur a demandé de s'ouvrir. ;)
Plusieurs possibilités comme :
- une sub Workbook_Open qui ouvre ces fichiers.
- une sub OnTime qui s'active car elle n'a pas été stoppé correctement.
Le plus simple est de chercher dans le fichier que vous ouvrez le nom d'un fichier qui s'ouvre intempestivement, à rechercher dans toutes les feuilles ainsi que dans les macros, dans les macros des feuilles et dans ThisWorkbook.
 

JSP22

XLDnaute Nouveau
Bonjour et merci pour ta réponse. En effet, j'ai bien une macro pour un enregistrement automatique toutes les 15 minutes :

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

Sub enregistrement()
Application.DisplayAlerts = False
DoEvents
ThisWorkbook.Save
Application.OnTime Now + TimeValue("00:15:00"), "enregistrement"
End Sub


J'ai ça sur tous les fichiers qui sont reliés à la base Access.
Je vais surveiller de ce côté également.
j'ai retrouvé une vieille macro qui traînait dans un des fichiers, je l'ai virée également !
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @JSP22, @sylvanu, le Forum

Il faut que tu mémorises le Schedule de déclenchement. Dans une Variable Public RunScheduler (module standard)

Sub enregistrement()

'....
RunScheduler = Now + TimeSerial(0, 15, 0)
Application.OnTime RunScheduler ), "enregistrement"
'....
End Sub

Ensuite sur WorkBook_Close (si on le ferme avant les 15'') il faut un code de ce style :

Application.OnTime EarliestTime:=RunScheduler), _
Procedure:=" enregistrement ", Schedule:=False

Le OnTime a besoin de connaitre le Time du RunScheduler en plus du nom de la Macro pour identifier un OnTime à stopper.

Un truc comme ça...

Bonne soirée
@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonsoir @JSP22, @sylvanu , le Forum

En clair tu nous expliques que tous les fichiers qui sont reliés à la base Access. ont dans le Workbook_Open un déclenchement de OneTime 15 Minutes pour " ThisWorkbook.Save " ...
Par exemple :
  • Fichier_01_Relié_Base_Access.xlsm
  • Fichier_02_Relié_Base_Access.xlsm
  • Fichier_03_Relié_Base_Access.xlsm
  • ...

Que toi, sur PC01 tu ouvres volontairement à 22:45 le "Fichier_03_Relié_Base_Access.xlsm" mais que ensuite à 22:55 tu as le fichier "Fichier_02_Relié_Base_Access.xlsm" qui s'ouvre tout seul intempestivement sur ton PC01 parcequ'il a été ouvert (à 22:40) par un collèque sur le PC02 qui ne l'a pas fermé... En plus vu qu'il doit s'ouvrir en Read Only, la macro "enregistrement" doit planter je suppose ?

C'est sacrément bizare.... Normalement le OnTime s'enregistre dans la session utilisateur sur laquelle il a été lancé... Mais bon c'est toujours très délicat d'utilisation, surtout en prime sur des classeurs partagés.... C'est plus souvent plus sources d'ennuis qu'autre chose ce OnTime schedulé....

Une idée, au lieu d'avoir aussi la même macro "Enresgistrement" essaies de les nommer différemment dans chaque classeur concerné :
  • Auto_Enregistrement_Fichier_01
  • Auto_Enregistrement_Fichier_02
  • Auto_Enregistrement_Fichier_03
Ainsi le Scheduler OnTime enregistrera distinctement chaque macro... dans le classeur lui-même.
Application.OnTime EarliestTime:=RunScheduler, Procedure:="Auto_Enregistrement_Fichier_02", Schedule:=False

Je ne sais pas si ca améliorera le schmilblick, mais bon ca vaut le coup d'essayer...

Ce que j'ai écrit en Post #9 reste valable pour Stopper le Scheduler en cas de fermeture avant les 15 minutes...

Bon courage
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
312 323
Messages
2 087 291
Membres
103 510
dernier inscrit
baloty