Bonjour,
Modifie la procédure comme suit : ajoute une ligne de code
Lorsque tu lanceras la procédure, elle s'arrêtera sur la commande "Stop"
utilise la touche F8 pour exécuter pas à pas le reste de la macro.
Ceci te permettra de voir si le chronomètre est effectivement en opération
et fonctionne durant l'exécution de la macro Calcul_Data
Je dois dire que je n'ai jamais utilisé ce chronomètre ou d'autre forme de
chronomètre pendant qu'une macro s'exécute. Il est "très possible"que
l'exécution
de la macro nuise à l'exécution du code du chronomètre ! Excel n'est pas
une application multi tread (Est-ce possible de faire tourner en mémoire
un processus pendant que le processeur s'active à exécuter une macro dans
un autre en simultanée ?). Personnellement j'en doute ! L'autre
alternative
est d'ajouter des lignes de code à divers endroit dans le code de ta macro
"Calcul Data". La ligne de code est la commande:
Doevents
À chaque fois que ton programme exécutera "DoEvents", ta macro donnera
la main à Windows et ce dernier exécutera les actions en attente dont la
mise
à jour du chronomètre). Comme le chrono affiche les dixièmes de seconde,
il
faudrait un nombre important de "DoEvents" pour permettre le
rafraîchissement
du chrono lors du déroulement de ta macro. Si la chose t'intéresse, fais
des tests...
Perso, je ne connais pas d'autre moyen de réaliser ce que tu tentes de
faire !
'----------------------------
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Stop '<<=====Ligne ajoutée
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
'----------------------------
"COQUITO" a écrit dans le message de groupe de
discussion :
En fait je m'aperçois que j'appelle 2 fois ma macro Calcul_Data : une fois
par le menu et une fois par le UserForm_Activate.
Donc, cela ne va pas du tout.
J'ai donc modifié ainsi : ma troisième commande de menu appelle la petite
procédure que tu me conseillais "Ouvrir_Formulaire", logée dans mon module
B_Controles
Et UserForm_Activate appelle Calcul_Data
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
Je n'ai plus le message d'erreur 400 "Feuille déjà affichée ; affichage
modal impossible" mais le chrono ne se déclenche pas.
Je ne m'en sors pas.
Merci d'avance pour ton aide précieuse.
Bonjour,
Modifie la procédure comme suit : ajoute une ligne de code
Lorsque tu lanceras la procédure, elle s'arrêtera sur la commande "Stop"
utilise la touche F8 pour exécuter pas à pas le reste de la macro.
Ceci te permettra de voir si le chronomètre est effectivement en opération
et fonctionne durant l'exécution de la macro Calcul_Data
Je dois dire que je n'ai jamais utilisé ce chronomètre ou d'autre forme de
chronomètre pendant qu'une macro s'exécute. Il est "très possible"que
l'exécution
de la macro nuise à l'exécution du code du chronomètre ! Excel n'est pas
une application multi tread (Est-ce possible de faire tourner en mémoire
un processus pendant que le processeur s'active à exécuter une macro dans
un autre en simultanée ?). Personnellement j'en doute ! L'autre
alternative
est d'ajouter des lignes de code à divers endroit dans le code de ta macro
"Calcul Data". La ligne de code est la commande:
Doevents
À chaque fois que ton programme exécutera "DoEvents", ta macro donnera
la main à Windows et ce dernier exécutera les actions en attente dont la
mise
à jour du chronomètre). Comme le chrono affiche les dixièmes de seconde,
il
faudrait un nombre important de "DoEvents" pour permettre le
rafraîchissement
du chrono lors du déroulement de ta macro. Si la chose t'intéresse, fais
des tests...
Perso, je ne connais pas d'autre moyen de réaliser ce que tu tentes de
faire !
'----------------------------
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Stop '<<=====Ligne ajoutée
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
'----------------------------
"COQUITO" <COQUITO_@wanadoo.fr> a écrit dans le message de groupe de
discussion :
575FAA2B-0A0E-46F0-AB17-E33627DC8440@microsoft.com...
En fait je m'aperçois que j'appelle 2 fois ma macro Calcul_Data : une fois
par le menu et une fois par le UserForm_Activate.
Donc, cela ne va pas du tout.
J'ai donc modifié ainsi : ma troisième commande de menu appelle la petite
procédure que tu me conseillais "Ouvrir_Formulaire", logée dans mon module
B_Controles
Et UserForm_Activate appelle Calcul_Data
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
Je n'ai plus le message d'erreur 400 "Feuille déjà affichée ; affichage
modal impossible" mais le chrono ne se déclenche pas.
Je ne m'en sors pas.
Merci d'avance pour ton aide précieuse.
Bonjour,
Modifie la procédure comme suit : ajoute une ligne de code
Lorsque tu lanceras la procédure, elle s'arrêtera sur la commande "Stop"
utilise la touche F8 pour exécuter pas à pas le reste de la macro.
Ceci te permettra de voir si le chronomètre est effectivement en opération
et fonctionne durant l'exécution de la macro Calcul_Data
Je dois dire que je n'ai jamais utilisé ce chronomètre ou d'autre forme de
chronomètre pendant qu'une macro s'exécute. Il est "très possible"que
l'exécution
de la macro nuise à l'exécution du code du chronomètre ! Excel n'est pas
une application multi tread (Est-ce possible de faire tourner en mémoire
un processus pendant que le processeur s'active à exécuter une macro dans
un autre en simultanée ?). Personnellement j'en doute ! L'autre
alternative
est d'ajouter des lignes de code à divers endroit dans le code de ta macro
"Calcul Data". La ligne de code est la commande:
Doevents
À chaque fois que ton programme exécutera "DoEvents", ta macro donnera
la main à Windows et ce dernier exécutera les actions en attente dont la
mise
à jour du chronomètre). Comme le chrono affiche les dixièmes de seconde,
il
faudrait un nombre important de "DoEvents" pour permettre le
rafraîchissement
du chrono lors du déroulement de ta macro. Si la chose t'intéresse, fais
des tests...
Perso, je ne connais pas d'autre moyen de réaliser ce que tu tentes de
faire !
'----------------------------
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Stop '<<=====Ligne ajoutée
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
'----------------------------
"COQUITO" a écrit dans le message de groupe de
discussion :
En fait je m'aperçois que j'appelle 2 fois ma macro Calcul_Data : une fois
par le menu et une fois par le UserForm_Activate.
Donc, cela ne va pas du tout.
J'ai donc modifié ainsi : ma troisième commande de menu appelle la petite
procédure que tu me conseillais "Ouvrir_Formulaire", logée dans mon module
B_Controles
Et UserForm_Activate appelle Calcul_Data
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
Je n'ai plus le message d'erreur 400 "Feuille déjà affichée ; affichage
modal impossible" mais le chrono ne se déclenche pas.
Je ne m'en sors pas.
Merci d'avance pour ton aide précieuse.
Bonjour,
Modifie la procédure comme suit : ajoute une ligne de code
Lorsque tu lanceras la procédure, elle s'arrêtera sur la commande "Stop"
utilise la touche F8 pour exécuter pas à pas le reste de la macro.
Ceci te permettra de voir si le chronomètre est effectivement en opération
et fonctionne durant l'exécution de la macro Calcul_Data
Je dois dire que je n'ai jamais utilisé ce chronomètre ou d'autre forme de
chronomètre pendant qu'une macro s'exécute. Il est "très possible"que
l'exécution
de la macro nuise à l'exécution du code du chronomètre ! Excel n'est pas
une application multi tread (Est-ce possible de faire tourner en mémoire
un processus pendant que le processeur s'active à exécuter une macro dans
un autre en simultanée ?). Personnellement j'en doute ! L'autre
alternative
est d'ajouter des lignes de code à divers endroit dans le code de ta macro
"Calcul Data". La ligne de code est la commande:
Doevents
À chaque fois que ton programme exécutera "DoEvents", ta macro donnera
la main à Windows et ce dernier exécutera les actions en attente dont la
mise
à jour du chronomètre). Comme le chrono affiche les dixièmes de seconde,
il
faudrait un nombre important de "DoEvents" pour permettre le
rafraîchissement
du chrono lors du déroulement de ta macro. Si la chose t'intéresse, fais
des tests...
Perso, je ne connais pas d'autre moyen de réaliser ce que tu tentes de
faire !
'----------------------------
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Stop '<<=====Ligne ajoutée
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
'----------------------------
"COQUITO" a écrit dans le message de groupe de
discussion :
En fait je m'aperçois que j'appelle 2 fois ma macro Calcul_Data : une fois
par le menu et une fois par le UserForm_Activate.
Donc, cela ne va pas du tout.
J'ai donc modifié ainsi : ma troisième commande de menu appelle la petite
procédure que tu me conseillais "Ouvrir_Formulaire", logée dans mon module
B_Controles
Et UserForm_Activate appelle Calcul_Data
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
Je n'ai plus le message d'erreur 400 "Feuille déjà affichée ; affichage
modal impossible" mais le chrono ne se déclenche pas.
Je ne m'en sors pas.
Merci d'avance pour ton aide précieuse.
Bonjour,
Modifie la procédure comme suit : ajoute une ligne de code
Lorsque tu lanceras la procédure, elle s'arrêtera sur la commande "Stop"
utilise la touche F8 pour exécuter pas à pas le reste de la macro.
Ceci te permettra de voir si le chronomètre est effectivement en opération
et fonctionne durant l'exécution de la macro Calcul_Data
Je dois dire que je n'ai jamais utilisé ce chronomètre ou d'autre forme de
chronomètre pendant qu'une macro s'exécute. Il est "très possible"que
l'exécution
de la macro nuise à l'exécution du code du chronomètre ! Excel n'est pas
une application multi tread (Est-ce possible de faire tourner en mémoire
un processus pendant que le processeur s'active à exécuter une macro dans
un autre en simultanée ?). Personnellement j'en doute ! L'autre
alternative
est d'ajouter des lignes de code à divers endroit dans le code de ta macro
"Calcul Data". La ligne de code est la commande:
Doevents
À chaque fois que ton programme exécutera "DoEvents", ta macro donnera
la main à Windows et ce dernier exécutera les actions en attente dont la
mise
à jour du chronomètre). Comme le chrono affiche les dixièmes de seconde,
il
faudrait un nombre important de "DoEvents" pour permettre le
rafraîchissement
du chrono lors du déroulement de ta macro. Si la chose t'intéresse, fais
des tests...
Perso, je ne connais pas d'autre moyen de réaliser ce que tu tentes de
faire !
'----------------------------
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Stop '<<=====Ligne ajoutée
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
'----------------------------
"COQUITO" <COQUITO_@wanadoo.fr> a écrit dans le message de groupe de
discussion :
575FAA2B-0A0E-46F0-AB17-E33627DC8440@microsoft.com...
En fait je m'aperçois que j'appelle 2 fois ma macro Calcul_Data : une fois
par le menu et une fois par le UserForm_Activate.
Donc, cela ne va pas du tout.
J'ai donc modifié ainsi : ma troisième commande de menu appelle la petite
procédure que tu me conseillais "Ouvrir_Formulaire", logée dans mon module
B_Controles
Et UserForm_Activate appelle Calcul_Data
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
Je n'ai plus le message d'erreur 400 "Feuille déjà affichée ; affichage
modal impossible" mais le chrono ne se déclenche pas.
Je ne m'en sors pas.
Merci d'avance pour ton aide précieuse.
Bonjour,
Modifie la procédure comme suit : ajoute une ligne de code
Lorsque tu lanceras la procédure, elle s'arrêtera sur la commande "Stop"
utilise la touche F8 pour exécuter pas à pas le reste de la macro.
Ceci te permettra de voir si le chronomètre est effectivement en opération
et fonctionne durant l'exécution de la macro Calcul_Data
Je dois dire que je n'ai jamais utilisé ce chronomètre ou d'autre forme de
chronomètre pendant qu'une macro s'exécute. Il est "très possible"que
l'exécution
de la macro nuise à l'exécution du code du chronomètre ! Excel n'est pas
une application multi tread (Est-ce possible de faire tourner en mémoire
un processus pendant que le processeur s'active à exécuter une macro dans
un autre en simultanée ?). Personnellement j'en doute ! L'autre
alternative
est d'ajouter des lignes de code à divers endroit dans le code de ta macro
"Calcul Data". La ligne de code est la commande:
Doevents
À chaque fois que ton programme exécutera "DoEvents", ta macro donnera
la main à Windows et ce dernier exécutera les actions en attente dont la
mise
à jour du chronomètre). Comme le chrono affiche les dixièmes de seconde,
il
faudrait un nombre important de "DoEvents" pour permettre le
rafraîchissement
du chrono lors du déroulement de ta macro. Si la chose t'intéresse, fais
des tests...
Perso, je ne connais pas d'autre moyen de réaliser ce que tu tentes de
faire !
'----------------------------
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Stop '<<=====Ligne ajoutée
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
'----------------------------
"COQUITO" a écrit dans le message de groupe de
discussion :
En fait je m'aperçois que j'appelle 2 fois ma macro Calcul_Data : une fois
par le menu et une fois par le UserForm_Activate.
Donc, cela ne va pas du tout.
J'ai donc modifié ainsi : ma troisième commande de menu appelle la petite
procédure que tu me conseillais "Ouvrir_Formulaire", logée dans mon module
B_Controles
Et UserForm_Activate appelle Calcul_Data
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
Je n'ai plus le message d'erreur 400 "Feuille déjà affichée ; affichage
modal impossible" mais le chrono ne se déclenche pas.
Je ne m'en sors pas.
Merci d'avance pour ton aide précieuse.
Bonjour,
Le TIMER
La procédure du timer doit englober le code de traitement de la routine
voulue (macro).
sub timer1...
macro à temporiser
end sub
Au début
dim compteur as long
timer1.value = ' vitesse en 1000e/s, ne pas descendre sous 50e/s.
timer1.enabledúlse
---------------
Au lancement
compteur = 10 ' supposons
timer1.enabled = true ' c'est parti !
sub timer1()
' la macro, son code ici s'exécute
compteur = compteur - 1 ' à chaque passage
if compteur < 1 then timer1.enabled = false ' fin de procédure timer
End sub
Nota bene, tu peux aussi prendre une variable globale qui va être actionné
depuis un autre procédure de ta macro, et dont on teste l'état dans la
procédure du timer et si x = action, par exemple pour larêter avant la
fin, tu a un bouton <stop>, tu lui assigne la variable globale
dim stopper as boolean
stopper = false
Si tu cliques sur ton bouton, dans sa procédure tu fais : stopper = true
Et dans la procédure du timer tu auras mis
if stopper = true then timer1.enabled = false
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"michdenis" a écrit dans le message de
news:Bonjour,
Modifie la procédure comme suit : ajoute une ligne de code
Lorsque tu lanceras la procédure, elle s'arrêtera sur la commande "Stop"
utilise la touche F8 pour exécuter pas à pas le reste de la macro.
Ceci te permettra de voir si le chronomètre est effectivement en
opération
et fonctionne durant l'exécution de la macro Calcul_Data
Je dois dire que je n'ai jamais utilisé ce chronomètre ou d'autre forme
de
chronomètre pendant qu'une macro s'exécute. Il est "très possible"que
l'exécution
de la macro nuise à l'exécution du code du chronomètre ! Excel n'est pas
une application multi tread (Est-ce possible de faire tourner en mémoire
un processus pendant que le processeur s'active à exécuter une macro dans
un autre en simultanée ?). Personnellement j'en doute ! L'autre
alternative
est d'ajouter des lignes de code à divers endroit dans le code de ta
macro
"Calcul Data". La ligne de code est la commande:
Doevents
À chaque fois que ton programme exécutera "DoEvents", ta macro donnera
la main à Windows et ce dernier exécutera les actions en attente dont la
mise
à jour du chronomètre). Comme le chrono affiche les dixièmes de seconde,
il
faudrait un nombre important de "DoEvents" pour permettre le
rafraîchissement
du chrono lors du déroulement de ta macro. Si la chose t'intéresse, fais
des tests...
Perso, je ne connais pas d'autre moyen de réaliser ce que tu tentes de
faire !
'----------------------------
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Stop '<<=====Ligne ajoutée
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
'----------------------------
"COQUITO" a écrit dans le message de groupe de
discussion :
En fait je m'aperçois que j'appelle 2 fois ma macro Calcul_Data : une
fois
par le menu et une fois par le UserForm_Activate.
Donc, cela ne va pas du tout.
J'ai donc modifié ainsi : ma troisième commande de menu appelle la petite
procédure que tu me conseillais "Ouvrir_Formulaire", logée dans mon
module
B_Controles
Et UserForm_Activate appelle Calcul_Data
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
Je n'ai plus le message d'erreur 400 "Feuille déjà affichée ; affichage
modal impossible" mais le chrono ne se déclenche pas.
Je ne m'en sors pas.
Merci d'avance pour ton aide précieuse.
Bonjour,
Le TIMER
La procédure du timer doit englober le code de traitement de la routine
voulue (macro).
sub timer1...
macro à temporiser
end sub
Au début
dim compteur as long
timer1.value = ' vitesse en 1000e/s, ne pas descendre sous 50e/s.
timer1.enabledúlse
---------------
Au lancement
compteur = 10 ' supposons
timer1.enabled = true ' c'est parti !
sub timer1()
' la macro, son code ici s'exécute
compteur = compteur - 1 ' à chaque passage
if compteur < 1 then timer1.enabled = false ' fin de procédure timer
End sub
Nota bene, tu peux aussi prendre une variable globale qui va être actionné
depuis un autre procédure de ta macro, et dont on teste l'état dans la
procédure du timer et si x = action, par exemple pour larêter avant la
fin, tu a un bouton <stop>, tu lui assigne la variable globale
dim stopper as boolean
stopper = false
Si tu cliques sur ton bouton, dans sa procédure tu fais : stopper = true
Et dans la procédure du timer tu auras mis
if stopper = true then timer1.enabled = false
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"michdenis" <michdenis@hotmail.com> a écrit dans le message de
news:BEDB53B5-C5E9-49EB-818C-5B99CDEED7D7@microsoft.com...
Bonjour,
Modifie la procédure comme suit : ajoute une ligne de code
Lorsque tu lanceras la procédure, elle s'arrêtera sur la commande "Stop"
utilise la touche F8 pour exécuter pas à pas le reste de la macro.
Ceci te permettra de voir si le chronomètre est effectivement en
opération
et fonctionne durant l'exécution de la macro Calcul_Data
Je dois dire que je n'ai jamais utilisé ce chronomètre ou d'autre forme
de
chronomètre pendant qu'une macro s'exécute. Il est "très possible"que
l'exécution
de la macro nuise à l'exécution du code du chronomètre ! Excel n'est pas
une application multi tread (Est-ce possible de faire tourner en mémoire
un processus pendant que le processeur s'active à exécuter une macro dans
un autre en simultanée ?). Personnellement j'en doute ! L'autre
alternative
est d'ajouter des lignes de code à divers endroit dans le code de ta
macro
"Calcul Data". La ligne de code est la commande:
Doevents
À chaque fois que ton programme exécutera "DoEvents", ta macro donnera
la main à Windows et ce dernier exécutera les actions en attente dont la
mise
à jour du chronomètre). Comme le chrono affiche les dixièmes de seconde,
il
faudrait un nombre important de "DoEvents" pour permettre le
rafraîchissement
du chrono lors du déroulement de ta macro. Si la chose t'intéresse, fais
des tests...
Perso, je ne connais pas d'autre moyen de réaliser ce que tu tentes de
faire !
'----------------------------
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Stop '<<=====Ligne ajoutée
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
'----------------------------
"COQUITO" <COQUITO_@wanadoo.fr> a écrit dans le message de groupe de
discussion :
575FAA2B-0A0E-46F0-AB17-E33627DC8440@microsoft.com...
En fait je m'aperçois que j'appelle 2 fois ma macro Calcul_Data : une
fois
par le menu et une fois par le UserForm_Activate.
Donc, cela ne va pas du tout.
J'ai donc modifié ainsi : ma troisième commande de menu appelle la petite
procédure que tu me conseillais "Ouvrir_Formulaire", logée dans mon
module
B_Controles
Et UserForm_Activate appelle Calcul_Data
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
Je n'ai plus le message d'erreur 400 "Feuille déjà affichée ; affichage
modal impossible" mais le chrono ne se déclenche pas.
Je ne m'en sors pas.
Merci d'avance pour ton aide précieuse.
Bonjour,
Le TIMER
La procédure du timer doit englober le code de traitement de la routine
voulue (macro).
sub timer1...
macro à temporiser
end sub
Au début
dim compteur as long
timer1.value = ' vitesse en 1000e/s, ne pas descendre sous 50e/s.
timer1.enabledúlse
---------------
Au lancement
compteur = 10 ' supposons
timer1.enabled = true ' c'est parti !
sub timer1()
' la macro, son code ici s'exécute
compteur = compteur - 1 ' à chaque passage
if compteur < 1 then timer1.enabled = false ' fin de procédure timer
End sub
Nota bene, tu peux aussi prendre une variable globale qui va être actionné
depuis un autre procédure de ta macro, et dont on teste l'état dans la
procédure du timer et si x = action, par exemple pour larêter avant la
fin, tu a un bouton <stop>, tu lui assigne la variable globale
dim stopper as boolean
stopper = false
Si tu cliques sur ton bouton, dans sa procédure tu fais : stopper = true
Et dans la procédure du timer tu auras mis
if stopper = true then timer1.enabled = false
Cordialement ;o)
-
Logiciels, romans, contacts : http://irolog.free.fr
_______________________
.
.
"michdenis" a écrit dans le message de
news:Bonjour,
Modifie la procédure comme suit : ajoute une ligne de code
Lorsque tu lanceras la procédure, elle s'arrêtera sur la commande "Stop"
utilise la touche F8 pour exécuter pas à pas le reste de la macro.
Ceci te permettra de voir si le chronomètre est effectivement en
opération
et fonctionne durant l'exécution de la macro Calcul_Data
Je dois dire que je n'ai jamais utilisé ce chronomètre ou d'autre forme
de
chronomètre pendant qu'une macro s'exécute. Il est "très possible"que
l'exécution
de la macro nuise à l'exécution du code du chronomètre ! Excel n'est pas
une application multi tread (Est-ce possible de faire tourner en mémoire
un processus pendant que le processeur s'active à exécuter une macro dans
un autre en simultanée ?). Personnellement j'en doute ! L'autre
alternative
est d'ajouter des lignes de code à divers endroit dans le code de ta
macro
"Calcul Data". La ligne de code est la commande:
Doevents
À chaque fois que ton programme exécutera "DoEvents", ta macro donnera
la main à Windows et ce dernier exécutera les actions en attente dont la
mise
à jour du chronomètre). Comme le chrono affiche les dixièmes de seconde,
il
faudrait un nombre important de "DoEvents" pour permettre le
rafraîchissement
du chrono lors du déroulement de ta macro. Si la chose t'intéresse, fais
des tests...
Perso, je ne connais pas d'autre moyen de réaliser ce que tu tentes de
faire !
'----------------------------
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Stop '<<=====Ligne ajoutée
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
'----------------------------
"COQUITO" a écrit dans le message de groupe de
discussion :
En fait je m'aperçois que j'appelle 2 fois ma macro Calcul_Data : une
fois
par le menu et une fois par le UserForm_Activate.
Donc, cela ne va pas du tout.
J'ai donc modifié ainsi : ma troisième commande de menu appelle la petite
procédure que tu me conseillais "Ouvrir_Formulaire", logée dans mon
module
B_Controles
Et UserForm_Activate appelle Calcul_Data
Private Sub UserForm_Activate()
Me.Repaint
TimerOn 100
Call Calcul_Data 'Appel de la macro à exécuter
Me.Hide
TimerOff
Label1.Caption = "00:00:00"
Label2.Caption = "0"
Unload Me
End Sub
Je n'ai plus le message d'erreur 400 "Feuille déjà affichée ; affichage
modal impossible" mais le chrono ne se déclenche pas.
Je ne m'en sors pas.
Merci d'avance pour ton aide précieuse.