Temporisation Fermeture d'un fichier excel

Le
alainnantais
Bonjour,

Je viens vous "embêter" avec le probléme suivant . Je recherche le moyen de sauvegarder puis de fermer un fichier excel automatiquement si durant un temps donné il n'a pas été utilisé.
Pour être complet ce fichier est ouvert à partir d'une macro se trouvant dans un fichier distinct. Je recherche une personne qui pourrait m'écrire une macro de temporisation en sachant que la temporisation doit être remise à 0 à chacune des ouvertures du fichier. Pardon d'avance pour ce degré d'exigence mais cette macro m'éviterai bien des soucis. Je jette donc cette bouteille à la mer Merci d'avance Alain
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
parci
Le #18036471
On 3 déc, 18:33, alainnantais
Bonjour,

Je viens vous "embêter" avec le probléme suivant . Je recherche le mo yen de
sauvegarder puis de fermer un fichier excel automatiquement si durant un temps
donné il n'a pas été utilisé.
Pour être complet ce fichier est ouvert à partir d'une macro se trouv ant dans
un fichier distinct. Je recherche une personne qui pourrait m'écrire un e macro
de temporisation en sachant que la temporisation doit être remise à 0 à chacune
des ouvertures du fichier. Pardon d'avance pour ce degré d'exigence mai s cette
macro m'éviterai bien des soucis. Je jette donc cette bouteille à la mer Merci
d'avance Alain



Qu'est ce que tu entends par "pas utilisé" ?

J'essaie un crosspost et suivi sur :
microsoft.public.fr.excel
alainnantais
Le #18041691
parci a écrit le 03/12/2008 à 18h35 :
On 3 déc, 18:33, alainnantais wrote:
Bonjour,

Je viens vous "embêter" avec le probléme suivant . Je
recherche le mo yen de
sauvegarder puis de fermer un fichier excel automatiquement si durant un
temps
donné il n'a pas été utilisé.
Pour être complet ce fichier est ouvert à partir d'une macro se
trouv ant dans
un fichier distinct. Je recherche une personne qui pourrait m'écrire un
e macro
de temporisation en sachant que la temporisation doit être remise
à 0 à chacune
des ouvertures du fichier. Pardon d'avance pour ce degré d'exigence mai
s cette
macro m'éviterai bien des soucis. Je jette donc cette bouteille
à la mer Merci
d'avance Alain




Qu'est ce que tu entends par "pas utilisé" ?

J'essaie un crosspost et suivi sur :
microsoft.public.fr.excel


par pas utilisé j'entends aucune donnée saisie dans une feuille cette feuille de classeur est toujours la meme merci si tu peux m aider Bonne soirée
parci
Le #18045431
On 4 déc, 09:51, alainnantais

par pas utilisé j'entends aucune donnée saisie dans une feuille cette feuille
de classeur est toujours la meme merci si tu peux m aider Bonne soirée



Quand il y a une saisie sur une feuille de calcul, l'évènement Change
de la feuille est déclenché. Pour lancer une procédure à un interva lle
de temps régulier, on peut utiliser dans Excel Application.OnTime.
Voilà comment je ferais :

' module de classe cWsh

Option Explicit

Private WithEvents m_Wsh As Excel.Worksheet
Private m_bSaisie As Boolean

Public Property Set Wsh(newvalue As Excel.Worksheet)
Set m_Wsh = newvalue
End Property

Public Property Let WshSaisie(newvalue As Boolean)
m_bSaisie = newvalue
End Property

Public Property Get WshSaisie() As Boolean
WshSaisie = m_bSaisie
End Property

Private Sub m_Wsh_Change(ByVal Target As Range)
m_bSaisie = True
End Sub

Private Sub Class_Terminate()
Set m_Wsh = Nothing
End Sub


' dans un module

' toutes les 15s
Private Const S_DELAIS As String = "00:00:15"

' variables locales
Private m_cWsh As New cWsh
Private m_Wbk As Excel.Workbook

Public Sub Main()

Dim sFile As String
Dim sWshName As String

' path du classeur et nom de la feuille
sFile = "D:test.xls"
sWshName = "Feuil1"

' ouverture du classeur
Set m_Wbk = Application.Workbooks.Open(sFile)

' connexion entre la feuille de calcul et notre objet cWsh
Set m_cWsh.Wsh = m_Wbk.Worksheets(sWshName)

Timer

End Sub

Public Sub CloseAndSaveWbk()
' si pas de saisie depuis le dernier appel
' de la fonction
' ferme et sauve le classeur m_Wbk
' sinon, réinitialise le flag de saisie
' pour la feuille m_cWsh et relance
' l'appel de la fonction
If Not m_cWsh.WshSaisie Then
m_Wbk.Close True
Set m_Wbk = Nothing
Else
m_cWsh.WshSaisie = False
Timer
End If
End Sub

Public Sub Timer()
' appel de "CloseAndSaveWbk" pour S_DELAIS
' la procédure appelée par Application.OnTime
' doit être publique et dans un module
Application.OnTime Now + TimeValue(S_DELAIS), "CloseAndSaveWbk"
End Sub
Publicité
Poster une réponse
Anonyme