Comment fermer ontime à la fermeture du classeur

Bonjour à tous,

je cherche depuis 5 heures une solution à mon problème:

j'ai plusieurs documents partagés excel que je dois ouvrir puis fermer. Chacun est "ouvrable" par plusieurs utilisateurs en même temps.

Les saisies de chacun doivent alimenter le classeur partagé. Pour ceci, j'ai créé un code avec ontime qui enregistre les saisies toutes les 20 secondes avec ontime:

dans un module:

Sub miseajour()

Application.OnTime Now + TimeValue("00:00:30"), "miseajour"

Call Actualisation

End Sub

Sub Actualisation()

ActiveWorkbook.Save

End Sub

et dans thisworkbook:

Private Sub Workbook_Open()

Call miseajour

End Sub

Mon problème est que chaque utilisateur travaille sur une fiche reflexe excel. Donc quand je suitte un classeur excele quia la macr "miseajour", elle se réouvre automatiquement.

Je n'arrive pas à trouver:

1/ le code à écrire pour stopper la macro du classeur fermé

2/ savoir si je dois mettre un code dans un module ou dans "this workbook"

Merci beaucoup pour votre aide

Bonjour,

A vérifier mais je pense que tu pourrais contourner cela en utilisant les option d'excel - Enregistrement

Sinon essaie comme ceci :

- Dans le module, place ces deux codes (veille bien à ce que l'instruction Public ... soit en haut du module avant tout code

Public ok As Boolean
Sub miseajour()
If ok Then
Application.OnTime Now + TimeValue("00:00:30"), "miseajour"
Call Actualisation
Else: End
End If
End Sub

Sub Actualisation()
ActiveWorkbook.Save
End Sub

- Dans thisworkbook, place ces deux codes

Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Save
ok = False
End Sub

Private Sub Workbook_Open()
ok = True
Call miseajour
End Sub

Si ok, clique sur le v vert lors de ta réponse afin de cloturer le fil

Amicalement

Bonjour Dan

Merci beaucoup je crois que ça fonctionne nickel.

Bonne journée

Ben en fait non ça marche pas. Le document se ré ouvre systématiquement après sa fermeture.

Je suis dépité!!!!!

Re,

Tu as bien placé l'instruction "Public Ok as boolean" tout au dessus dans le module ? elle doit être avant toutes les macros du module

Sinon essaie aussi en modifiant "If ok Then" par --> "If ok=True Then"

A te relire

ben non ça ne marche pas.

J'ai bien mis l'instruction tout au dessus du module!

Le classeur se rouvre quand même et l'actualisation ne se fait que lorsque je demande la fermeture du classeur (avec les données notées sur un autre poste) et non pas toutes les 30 secondes!

Bonjour le fil

Davy03, à la fermeture de ton classeur, il faut désactiver le timer.

Pour ce faire il faut connaitre l'heure du prochain timer (à mettre dans une variable public)

Application.OnTime TpsProchainTimer, "miseajour", , False

A+

Ca y est!!!

en fait dans le module j'ai mis ce code:

Option Explicit

Dim Tps As Date

Sub miseajour()

'Programmation de l'évènement toutes les secondes

Tps = Now + TimeValue("00:00:30")

Application.OnTime Tps, "miseajour"

Call Actualisation

End Sub

Sub StopTempo()

On Error Resume Next

'Stopper la gestion de l'évènement OnTime en cours

Application.OnTime Tps, "miseajour", , False

End Sub

Sub Actualisation()

ActiveWorkbook.Save

End Sub

et dans this workbook celui ci:

Option Explicit

Private Sub Workbook_BeforeClose(Cancel As Boolean)

StopTempo

End Sub

Private Sub Workbook_Open()

Call miseajour

End Sub

et ça fonctionne parfaitement.

Merci à vous pour le coup de main

bonne fin de journée

Rechercher des sujets similaires à "comment fermer ontime fermeture classeur"