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

Je tourne en boucle pendant1s et ça m'embête

3 réponses
Avatar
Shaulva
Bonjour,

La macro suivante permet d'afficher l'heure puis en fonction de la valeur
d'une cellule, elle execute un calcul et affiche un message (MErci aux
membres des forums )

Dim temps
Sub majHeure()
Sheets("feuil1").Calculate
temps = Now + TimeValue("00:00:1")
Application.OnTime temps, "majHeure"
End Sub
Sub auto_open()
majHeure
End Sub
Sub auto_close()
On Error Resume Next
Application.OnTime temps, Procedure:="majHeure", Schedule:=False
End Sub

ça marche, mais j'ai appris csur ce forum que le calcul qui suite relance le
calculate()

Private Sub Worksheet_Calculate()
If [A23] = 1 Then
MsgBox "coucou"
[A27] = [B27] * [C27] """"""""""c'est lui qui relance qu'il soit avant ou
après msgbox, si je l'enlève, plus de boucle :) """"""""""""""""

End If

End Sub

Hors je ne souhaite pas pa que ça tourne en boucle peandant tout le temps
que la condition est vrai. Néanmoins, je souhaite garder mon calcul. Je dois
être sûr que msgbox s'affiche 1 seule fois (même on clic sur Ok et que A23
est tjs égal à 1, il ne doit pas réapparaitre), et que le calcul s'effectue
une seule fois.

Ya t-il une methode qui permet d'éviter cette boucle?? Arpès tout , je ne
lui ai rien demandé...

http://cjoint.com/?ccairxroxi

Merci à tous
PS: les cellules "intermédiaires" sont volontaires

3 réponses

Avatar
isabelle
bonjour Shaulva,

regarde la propriété de l'application, "EnableEvents"
je crois bien que c'est ce que tu recherche.

isabelle

Bonjour,

La macro suivante permet d'afficher l'heure puis en fonction de la valeur
d'une cellule, elle execute un calcul et affiche un message (MErci aux
membres des forums )

Dim temps
Sub majHeure()
Sheets("feuil1").Calculate
temps = Now + TimeValue("00:00:1")
Application.OnTime temps, "majHeure"
End Sub
Sub auto_open()
majHeure
End Sub
Sub auto_close()
On Error Resume Next
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

ça marche, mais j'ai appris csur ce forum que le calcul qui suite relance le
calculate()

Private Sub Worksheet_Calculate()
If [A23] = 1 Then
MsgBox "coucou"
[A27] = [B27] * [C27] """"""""""c'est lui qui relance qu'il soit avant ou
après msgbox, si je l'enlève, plus de boucle :) """"""""""""""""

End If

End Sub

Hors je ne souhaite pas pa que ça tourne en boucle peandant tout le temps
que la condition est vrai. Néanmoins, je souhaite garder mon calcul. Je dois
être sûr que msgbox s'affiche 1 seule fois (même on clic sur Ok et que A23
est tjs égal à 1, il ne doit pas réapparaitre), et que le calcul s'effectue
une seule fois.

Ya t-il une methode qui permet d'éviter cette boucle?? Arpès tout , je ne
lui ai rien demandé...

http://cjoint.com/?ccairxroxi

Merci à tous
PS: les cellules "intermédiaires" sont volontaires


Avatar
JB
On 2 fév, 00:11, Shaulva wrote:
Bonjour,

La macro suivante permet d'afficher l'heure puis en fonction de la valeur
d'une cellule, elle execute un calcul et affiche un message (MErci aux
membres des forums )

Dim temps
Sub majHeure()
Sheets("feuil1").Calculate
temps = Now + TimeValue("00:00:1")
Application.OnTime temps, "majHeure"
End Sub
Sub auto_open()
majHeure
End Sub
Sub auto_close()
On Error Resume Next
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

ça marche, mais j'ai appris csur ce forum que le calcul qui suite relan ce le
calculate()

Private Sub Worksheet_Calculate()
If [A23] = 1 Then
MsgBox "coucou"
[A27] = [B27] * [C27] """"""""""c'est lui qui relance qu'il soit avant ou
après msgbox, si je l'enlève, plus de boucle :) """"""""""""""""

End If

End Sub

Hors je ne souhaite pas pa que ça tourne en boucle peandant tout le tem ps
que la condition est vrai. Néanmoins, je souhaite garder mon calcul. Je dois
être sûr que msgbox s'affiche 1 seule fois (même on clic sur Ok et que A23
est tjs égal à 1, il ne doit pas réapparaitre), et que le calcul s' effectue
une seule fois.

Ya t-il une methode qui permet d'éviter cette boucle?? Arpès tout , je ne
lui ai rien demandé...

http://cjoint.com/?ccairxroxi

Merci à tous
PS: les cellules "intermédiaires" sont volontaires


Bonjour,

Dim temps
Sub majHeure()
[A1] = Now
If [A23] = 1 Then
MsgBox "coucou"
[A27] = [B27] * [C27]
Else
temps = Now + TimeValue("00:00:1")
Application.OnTime temps, "majHeure"
End If
End Sub

Sub auto_open()
majHeure
End Sub

Sub auto_close()
On Error Resume Next
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

http://cjoint.com/?ccfSXU11d6

JB

Avatar
Shaulva
Bonjour JB,
Merci pour le fichier, je l'ai modifié pour le faire fonctionner dans mes
conditions (cf/ ci-joint). Ca fonctionne, mais dès que le message s'affiche ,
l'heure ne se met plus à jour.
Est-ce que c'est lié à la commande msgbox qui fait apparaître une boite de
dialogue qui pourrait générer ce genre de problème?
Dans mon cas à moi, cette ligne msgbox (qui me sert uniquement test pour le
moment) sera remplacée par une ligne de commande DDE.

Finalement le temps d'écrire cette réponse, j'ai modifié le fichier, et
maintenant ça marche selon mes conditions.
Je vais essayer d'implémenter ça à mon autre fichier un peu plus compliqué.
Si ça ne marche pas je le joindrai en ajoutant des explications.

Merci beaucoup,
http://cjoint.com/?cfm7JA2yh3


On 2 fév, 00:11, Shaulva wrote:
Bonjour,

La macro suivante permet d'afficher l'heure puis en fonction de la valeur
d'une cellule, elle execute un calcul et affiche un message (MErci aux
membres des forums )

Dim temps
Sub majHeure()
Sheets("feuil1").Calculate
temps = Now + TimeValue("00:00:1")
Application.OnTime temps, "majHeure"
End Sub
Sub auto_open()
majHeure
End Sub
Sub auto_close()
On Error Resume Next
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

ça marche, mais j'ai appris csur ce forum que le calcul qui suite relance le
calculate()

Private Sub Worksheet_Calculate()
If [A23] = 1 Then
MsgBox "coucou"
[A27] = [B27] * [C27] """"""""""c'est lui qui relance qu'il soit avant ou
après msgbox, si je l'enlève, plus de boucle :) """"""""""""""""

End If

End Sub

Hors je ne souhaite pas pa que ça tourne en boucle peandant tout le temps
que la condition est vrai. Néanmoins, je souhaite garder mon calcul. Je dois
être sûr que msgbox s'affiche 1 seule fois (même on clic sur Ok et que A23
est tjs égal à 1, il ne doit pas réapparaitre), et que le calcul s'effectue
une seule fois.

Ya t-il une methode qui permet d'éviter cette boucle?? Arpès tout , je ne
lui ai rien demandé...

http://cjoint.com/?ccairxroxi

Merci à tous
PS: les cellules "intermédiaires" sont volontaires


Bonjour,

Dim temps
Sub majHeure()
[A1] = Now
If [A23] = 1 Then
MsgBox "coucou"
[A27] = [B27] * [C27]
Else
temps = Now + TimeValue("00:00:1")
Application.OnTime temps, "majHeure"
End If
End Sub

Sub auto_open()
majHeure
End Sub

Sub auto_close()
On Error Resume Next
Application.OnTime temps, Procedure:="majHeure", Schedule:úlse
End Sub

http://cjoint.com/?ccfSXU11d6

JB