Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tempo avec fermeture automatique

6 réponses
Avatar
Olivier VB
est ce qqn auait un coup de pouce =E0 me filer :=20
explications :=20
je souhaite faire une sorte de tempo=20
on ouvre une feuille excel, on travaille dessus et au bout=20
de 30s le fichier excel est enregistr=E9 et se ferme (si le=20
fichier n’est pas en lecture seule)=20

=E7a parait simple =E0 faire mais……….=20

1er solution : pas top car je n'ai pas acces au touches :=20
gras, italique, couleurs sans la choisir=20
et ca ralenti vachement le systeme=20

Code:=20
'lancement =E0 l'ouverture du fichier=20
Sub auto_open()=20

'si le fichier n'est pas en lecture seule : false=20
If ActiveWorkbook.ReadOnly =3D False Then=20

Dim PauseTime, Start=20

PauseTime =3D 30 ' D=E9finit la dur=E9e de la tempo=20
Start =3D timer ' D=E9finit l'heure de d=E9but=20
actuelle=20
=20
'boucle=20
Do While timer < Start + PauseTime=20
DoEvents ' Donne le contr=F4le =E0 d'autres=20
processus.=20
Loop=20
=20
temp =3D MsgBox("ca marche " & tps, Style, "V=E9rification :")=20

'active le classeur : si d'autres fichiers excel ouvert=20
Workbooks("essai.xls").Activate=20

'sauvegarde automatique=20
ActiveWorkbook.Save=20

'ferme le classeur ouvert=20
'si qqc est rentr=E9 il demande l'enregistrement :=20
'vu "ActiveWorkbook.Save" enregistre automatiquement cela=20
entraine=20
'donc la fermeture excel=20

ActiveWorkbook.Close=20
'active pour selectionner la feuille qui est active=20

End If=20

End Sub =20




2=E8me solution=20

mais le pb : quand je sauvegarde mon fichier avant la fin=20
de la tempo : c'est la merde car celle ci est m=E9moiris=E9 :=20
quand j'ouvre =E0 nouveau mon fichier la tempo reprend =E0 la=20
suite : elle ne dure donc pas 30s et se ferme plusieurs=20
fois sauf si je ferme v=E9ritable=F9ment excel et non juste le=20
fichier=20
je cherche =E0 faire un reset de la tempo lors de chaque=20
ouverture pour que cela dure tjs 30 s par ex=20

Code:=20
'lancement =E0 l'ouverture du fichier=20
Sub auto_open()=20

'si le fichier n'est pas en lecture seule : false=20
Application.OnTime Now + TimeValue("00:00:30"), "tempo"=20

End Sub=20



Sub tempo()=20

temp =3D MsgBox("ca marche " & tps, Style, "V=E9rification :")=20

'active le classeur : si d'autres fichiers excel ouvert=20
Workbooks("nv essai.xls").Activate=20

'sauvegarde automatique=20
ActiveWorkbook.Save=20

'ferme le classeur ouvert=20
'si qqc est rentr=E9 il demande l'enregistrement :=20
'vu "ActiveWorkbook.Save" enregistre automatiquement cela=20
entraine=20
'donc la fermeture excel=20

ActiveWorkbook.Close=20
'active pour selectionner la feuille qui est active=20
End Sub =20




au lieu de faire une Sub Auto_open : j&#8217;ai mis le code dans=20
WorkBook_open() : idem=20

merci du coup de pouce

6 réponses

Avatar
Dédé
Salut Olivier

J'ai pas lu ton message parce que CDO et que CDO n'affiche pas correctement
les message sur mon OE !!

Mais pour ton info, tu peux aller faire un tour à l'adresse suivante où tu
pourra peut-être y trouver ton bonheur :
http://www.excelabo.net/xl/fichiers.htm#fermetureauto

Salutations
Dédé (Qui travail avec OE et non pas CDO !)

--
Pour répondre, enlever le NOSPAM
"Olivier VB" a écrit dans le message de
news:102301c38cdb$5cbafa70$
est ce qqn auait un coup de pouce à me filer :
explications :
je souhaite faire une sorte de tempo
on ouvre une feuille excel, on travaille dessus et au bout
de 30s le fichier excel est enregistré et se ferme (si le
fichier n&#8217;est pas en lecture seule)

ça parait simple à faire mais&#8230;&#8230;&#8230;.

1er solution : pas top car je n'ai pas acces au touches :
gras, italique, couleurs sans la choisir
et ca ralenti vachement le systeme

Code:
'lancement à l'ouverture du fichier
Sub auto_open()

'si le fichier n'est pas en lecture seule : false
If ActiveWorkbook.ReadOnly = False Then

Dim PauseTime, Start

PauseTime = 30 ' Définit la durée de la tempo
Start = timer ' Définit l'heure de début
actuelle

'boucle
Do While timer < Start + PauseTime
DoEvents ' Donne le contrôle à d'autres
processus.
Loop

temp = MsgBox("ca marche " & tps, Style, "Vérification :")

'active le classeur : si d'autres fichiers excel ouvert
Workbooks("essai.xls").Activate

'sauvegarde automatique
ActiveWorkbook.Save

'ferme le classeur ouvert
'si qqc est rentré il demande l'enregistrement :
'vu "ActiveWorkbook.Save" enregistre automatiquement cela
entraine
'donc la fermeture excel

ActiveWorkbook.Close
'active pour selectionner la feuille qui est active

End If

End Sub




2ème solution

mais le pb : quand je sauvegarde mon fichier avant la fin
de la tempo : c'est la merde car celle ci est mémoirisé :
quand j'ouvre à nouveau mon fichier la tempo reprend à la
suite : elle ne dure donc pas 30s et se ferme plusieurs
fois sauf si je ferme véritableùment excel et non juste le
fichier
je cherche à faire un reset de la tempo lors de chaque
ouverture pour que cela dure tjs 30 s par ex

Code:
'lancement à l'ouverture du fichier
Sub auto_open()

'si le fichier n'est pas en lecture seule : false
Application.OnTime Now + TimeValue("00:00:30"), "tempo"

End Sub



Sub tempo()

temp = MsgBox("ca marche " & tps, Style, "Vérification :")

'active le classeur : si d'autres fichiers excel ouvert
Workbooks("nv essai.xls").Activate

'sauvegarde automatique
ActiveWorkbook.Save

'ferme le classeur ouvert
'si qqc est rentré il demande l'enregistrement :
'vu "ActiveWorkbook.Save" enregistre automatiquement cela
entraine
'donc la fermeture excel

ActiveWorkbook.Close
'active pour selectionner la feuille qui est active
End Sub




au lieu de faire une Sub Auto_open : j&#8217;ai mis le code dans
WorkBook_open() : idem

merci du coup de pouce
Avatar
Frédéric Sigonneau
Bonjour,

Regarde du côté de la méthode OnTime.
Par exemple, dans le module ThisWorkbook du classeur :

Private Sub Workbook_Open()
Application.OnTime Now + TimeValue("0:0:30"), "FermeLe"
End Sub

Et dans un module standard du même classeur :

Sub FermeLe()
ThisWorkbook.Close True
End Sub

La procédure FermeLe est appelée 30 secondes après l'ouverture du classeur. Elle
le ferme en l'enregistrant.

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


est ce qqn auait un coup de pouce à me filer :
explications :
je souhaite faire une sorte de tempo
on ouvre une feuille excel, on travaille dessus et au bout
de 30s le fichier excel est enregistré et se ferme (si le
fichier n&#8217;est pas en lecture seule)

ça parait simple à faire mais&#8230;&#8230;&#8230;.

1er solution : pas top car je n'ai pas acces au touches :
gras, italique, couleurs sans la choisir
et ca ralenti vachement le systeme

Code:
'lancement à l'ouverture du fichier
Sub auto_open()

'si le fichier n'est pas en lecture seule : false
If ActiveWorkbook.ReadOnly = False Then

Dim PauseTime, Start

PauseTime = 30 ' Définit la durée de la tempo
Start = timer ' Définit l'heure de début
actuelle

'boucle
Do While timer < Start + PauseTime
DoEvents ' Donne le contrôle à d'autres
processus.
Loop

temp = MsgBox("ca marche " & tps, Style, "Vérification :")

'active le classeur : si d'autres fichiers excel ouvert
Workbooks("essai.xls").Activate

'sauvegarde automatique
ActiveWorkbook.Save

'ferme le classeur ouvert
'si qqc est rentré il demande l'enregistrement :
'vu "ActiveWorkbook.Save" enregistre automatiquement cela
entraine
'donc la fermeture excel

ActiveWorkbook.Close
'active pour selectionner la feuille qui est active

End If

End Sub

2ème solution

mais le pb : quand je sauvegarde mon fichier avant la fin
de la tempo : c'est la merde car celle ci est mémoirisé :
quand j'ouvre à nouveau mon fichier la tempo reprend à la
suite : elle ne dure donc pas 30s et se ferme plusieurs
fois sauf si je ferme véritableùment excel et non juste le
fichier
je cherche à faire un reset de la tempo lors de chaque
ouverture pour que cela dure tjs 30 s par ex

Code:
'lancement à l'ouverture du fichier
Sub auto_open()

'si le fichier n'est pas en lecture seule : false
Application.OnTime Now + TimeValue("00:00:30"), "tempo"

End Sub

Sub tempo()

temp = MsgBox("ca marche " & tps, Style, "Vérification :")

'active le classeur : si d'autres fichiers excel ouvert
Workbooks("nv essai.xls").Activate

'sauvegarde automatique
ActiveWorkbook.Save

'ferme le classeur ouvert
'si qqc est rentré il demande l'enregistrement :
'vu "ActiveWorkbook.Save" enregistre automatiquement cela
entraine
'donc la fermeture excel

ActiveWorkbook.Close
'active pour selectionner la feuille qui est active
End Sub

au lieu de faire une Sub Auto_open : j&#8217;ai mis le code dans
WorkBook_open() : idem

merci du coup de pouce


Avatar
Olivier VB
ce que je veux faire :
je souhaite faire une sorte de tempo
on ouvre une feuille excel, on travaille dessus et au bout
de 2mn le fichier excel est enregistré et se ferme (si le
fichier n&#8217;est pas en lecture seule)

ça parait simple à faire mais...


vous avez tous les deux raisons mais le pb : quand je
sauvegarde mon fichier avant la fin de la tempo : c'est la
merde car celle ci est mémoirisé : quand j'ouvre à nouveau
mon fichier la tempo reprend à la suite : elle ne dure
donc pas 30s et se ferme plusieurs fois sauf si je ferme
véritableùment excel et non juste le fichier
je cherche à faire un reset de la tempo lors de chaque
ouverture pour que cela dure tjs 30 s par ex

je viens de trouver la solution à ce pb maun un autre pb
se pose à moi :

tout fonctionne sauf un truc
quand tu écris qqc dans une cellule mais que tu n'a pas
tapé "entrée" ou cliquer sur une autre cellule le curseur
reste à la fin du texte et la tempo est fini mais attends
que tu cliques ailleurs : le prog se ferme donc pas : il
faudrait pouvoir cliquer n'importe par le programme





dans ThisWorkbook
Code:

'déclaration de la variable
Dim Start_time As Variant

'lancement à l'ouverture du fichier
Sub Workbook_Open()

'si le fichier n'est pas en lecture seule : ReadOnly =
False
If ActiveWorkbook.ReadOnly = False Then
Start_time = Now + TimeValue("00:00:10") 'mettre les
infos dans une variable
Application.OnTime Start_time, "tempo" 'lancement de
la tempo
End If

End Sub


'si le fichier est fermé avant la fin de la tempo :
réinstialiser la variable
'Cette fonction est appellé avant la fermeture du fichier
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'si le fichier n'est pas en lecture seule : ReadOnly =
False
If ActiveWorkbook.ReadOnly = False Then
Application.OnTime EarliestTime:=Start_time, _
Procedure:="tempo", Schedule:úlse 'supprime
la tempo(Schedule:úlse)
End If

End Sub



et dans un module

Code:

Sub tempo()

'active le classeur : si d'autres fichiers excel sont
ouvert
Workbooks("nv essai.xls").Activate

'sauvegarde automatique
ActiveWorkbook.Save

'ferme le classeur ouvert
'si qqc est rentré il demande l'enregistrement :
vu "ActiveWorkbook.Save" : enregistre automatiquement
cela entraine la fermeture du fichier sans message
ActiveWorkbook.Close
'-> active : pour selectionner la feuille qui est active

End Sub



Au secours
merci de votre aide
@+
Olivier qui n'arrete pas de chercher
Avatar
olivier vb
personne a une idée parceque la je galère vraiment
au secours
peut etre trouver une autre méthode mais facile à
dire ????????

-----Message d'origine-----
ce que je veux faire :
je souhaite faire une sorte de tempo
on ouvre une feuille excel, on travaille dessus et au
bout

de 2mn le fichier excel est enregistré et se ferme (si le
fichier n&#8217;est pas en lecture seule)

ça parait simple à faire mais...


tout fonctionne sauf un truc
quand tu écris qqc dans une cellule mais que tu n'a pas
tapé "entrée" ou cliquer sur une autre cellule le curseur
reste à la fin du texte et la tempo est fini mais attends
que tu cliques ailleurs : le prog se ferme donc pas : il
faudrait pouvoir cliquer n'importe par le programme





dans ThisWorkbook
Code:

'déclaration de la variable
Dim Start_time As Variant

'lancement à l'ouverture du fichier
Sub Workbook_Open()

'si le fichier n'est pas en lecture seule : ReadOnly =
False
If ActiveWorkbook.ReadOnly = False Then
Start_time = Now + TimeValue("00:00:10") 'mettre les
infos dans une variable
Application.OnTime Start_time, "tempo" 'lancement de
la tempo
End If

End Sub


'si le fichier est fermé avant la fin de la tempo :
réinstialiser la variable
'Cette fonction est appellé avant la fermeture du fichier
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'si le fichier n'est pas en lecture seule : ReadOnly =
False
If ActiveWorkbook.ReadOnly = False Then
Application.OnTime EarliestTime:=Start_time, _
Procedure:="tempo",
Schedule:úlse 'supprime

la tempo(Schedule:úlse)
End If

End Sub



et dans un module

Code:

Sub tempo()

'active le classeur : si d'autres fichiers excel sont
ouvert
Workbooks("nv essai.xls").Activate

'sauvegarde automatique
ActiveWorkbook.Save

'ferme le classeur ouvert
'si qqc est rentré il demande l'enregistrement :
vu "ActiveWorkbook.Save" : enregistre automatiquement
cela entraine la fermeture du fichier sans message
ActiveWorkbook.Close
'-> active : pour selectionner la feuille qui est active

End Sub



Au secours
merci de votre aide
@+
Olivier qui n'arrete pas de chercher
.



Avatar
Dédé
Salut Olivier !

Tu veux une réponse ... alors oublie CDO et consulte les NG avec Outlook
Express !!!

Pour cela clique sur le lien suivant :
news://news.microsoft.com/microsoft.public.fr.excel

merci de ta collaboration et de ta compréhension !

@ +

Dédé

--
Pour répondre, enlever le NOSPAM
"olivier vb" a écrit dans le message de
news:1bbd01c38e54$08267140$
personne a une idée parceque la je galère vraiment
au secours
peut etre trouver une autre méthode mais facile à
dire ????????

-----Message d'origine-----
ce que je veux faire :
je souhaite faire une sorte de tempo
on ouvre une feuille excel, on travaille dessus et au
bout

de 2mn le fichier excel est enregistré et se ferme (si le
fichier n&#8217;est pas en lecture seule)

ça parait simple à faire mais...


tout fonctionne sauf un truc
quand tu écris qqc dans une cellule mais que tu n'a pas
tapé "entrée" ou cliquer sur une autre cellule le curseur
reste à la fin du texte et la tempo est fini mais attends
que tu cliques ailleurs : le prog se ferme donc pas : il
faudrait pouvoir cliquer n'importe par le programme





dans ThisWorkbook
Code:

'déclaration de la variable
Dim Start_time As Variant

'lancement à l'ouverture du fichier
Sub Workbook_Open()

'si le fichier n'est pas en lecture seule : ReadOnly >False
If ActiveWorkbook.ReadOnly = False Then
Start_time = Now + TimeValue("00:00:10") 'mettre les
infos dans une variable
Application.OnTime Start_time, "tempo" 'lancement de
la tempo
End If

End Sub


'si le fichier est fermé avant la fin de la tempo :
réinstialiser la variable
'Cette fonction est appellé avant la fermeture du fichier
Private Sub Workbook_BeforeClose(Cancel As Boolean)

'si le fichier n'est pas en lecture seule : ReadOnly >False
If ActiveWorkbook.ReadOnly = False Then
Application.OnTime EarliestTime:=Start_time, _
Procedure:="tempo",
Schedule:úlse 'supprime

la tempo(Schedule:úlse)
End If

End Sub



et dans un module

Code:

Sub tempo()

'active le classeur : si d'autres fichiers excel sont
ouvert
Workbooks("nv essai.xls").Activate

'sauvegarde automatique
ActiveWorkbook.Save

'ferme le classeur ouvert
'si qqc est rentré il demande l'enregistrement :
vu "ActiveWorkbook.Save" : enregistre automatiquement
cela entraine la fermeture du fichier sans message
ActiveWorkbook.Close
'-> active : pour selectionner la feuille qui est active

End Sub



Au secours
merci de votre aide
@+
Olivier qui n'arrete pas de chercher
.



Avatar
alainnantais
Olivier VB a écrit le 07/10/2003 à 16h00 :
est ce qqn auait un coup de pouce à me filer :
explications :
je souhaite faire une sorte de tempo
on ouvre une feuille excel, on travaille dessus et au bout
de 30s le fichier excel est enregistré et se ferme (si le
fichier n&#8217;est pas en lecture seule)

ça parait simple à faire mais&#8230;&#8230;&#8230;.

1er solution : pas top car je n'ai pas acces au touches :
gras, italique, couleurs sans la choisir
et ca ralenti vachement le systeme

Code:
'lancement à l'ouverture du fichier
Sub auto_open()

'si le fichier n'est pas en lecture seule : false
If ActiveWorkbook.ReadOnly = False Then

Dim PauseTime, Start

PauseTime = 30 ' Définit la durée de la tempo
Start = timer ' Définit l'heure de début
actuelle

'boucle
Do While timer < Start + PauseTime
DoEvents ' Donne le contrôle à d'autres
processus.
Loop

temp = MsgBox("ca marche " & tps, Style, "Vérification
:")

'active le classeur : si d'autres fichiers excel ouvert
Workbooks("essai.xls").Activate

'sauvegarde automatique
ActiveWorkbook.Save

'ferme le classeur ouvert
'si qqc est rentré il demande l'enregistrement :
'vu "ActiveWorkbook.Save" enregistre automatiquement cela
entraine
'donc la fermeture excel

ActiveWorkbook.Close
'active pour selectionner la feuille qui est active

End If

End Sub




2ème solution

mais le pb : quand je sauvegarde mon fichier avant la fin
de la tempo : c'est la merde car celle ci est mémoirisé :
quand j'ouvre à nouveau mon fichier la tempo reprend à la
suite : elle ne dure donc pas 30s et se ferme plusieurs
fois sauf si je ferme véritableùment excel et non juste le
fichier
je cherche à faire un reset de la tempo lors de chaque
ouverture pour que cela dure tjs 30 s par ex

Code:
'lancement à l'ouverture du fichier
Sub auto_open()

'si le fichier n'est pas en lecture seule : false
Application.OnTime Now + TimeValue("00:00:30"), "tempo"

End Sub



Sub tempo()

temp = MsgBox("ca marche " & tps, Style, "Vérification
:")

'active le classeur : si d'autres fichiers excel ouvert
Workbooks("nv essai.xls").Activate

'sauvegarde automatique
ActiveWorkbook.Save

'ferme le classeur ouvert
'si qqc est rentré il demande l'enregistrement :
'vu "ActiveWorkbook.Save" enregistre automatiquement cela
entraine
'donc la fermeture excel

ActiveWorkbook.Close
'active pour selectionner la feuille qui est active
End Sub




au lieu de faire une Sub Auto_open : j&#8217;ai mis le code dans
WorkBook_open() : idem

merci du coup de pouce


Bonjour je suis confronté au problème suivant : Je souhaite que si dans une des feuilles d un classeur (feuille qui demeure toujours la même) il n'y a pas eu de modif pendant un temps donne le classeur se ferme aprés sauvegarde . Peux tu m'aider je n arrive pas à ecrire la macro .
Merci d'avance