comment lancer avec un bouton differentes macros suivant condition
5 réponses
John-Pet
Salut à tous
dans excel j'ai deux macro
M1 et M2
j'ai un bouton qui lance suivant le cas M1 ou M2
si le bouton n'as pas encore était validé dans l'heure, a la premiere
validation cela execute M1
la macro M1 ne peux se lancer qu'une seule et unique fois par heure
sinon si cette macro a deja était lancée dans l'heure en cours cela
lance M2
et cela pour chaque heure
comment faire ?
merci
JP
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
End Sub '*** Sub mcr1() MsgBox "execution de mcr1" End Sub '*** Sub mcr2() MsgBox "execution de mcr2"
End Sub '**************************
'lSteph
"John-Pet" a écrit dans le message de news:
Salut à tous
dans excel j'ai deux macro M1 et M2
j'ai un bouton qui lance suivant le cas M1 ou M2
si le bouton n'as pas encore était validé dans l'heure, a la premiere validation cela execute M1 la macro M1 ne peux se lancer qu'une seule et unique fois par heure sinon si cette macro a deja était lancée dans l'heure en cours cela lance M2 et cela pour chaque heure
comment faire ?
merci
JP
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Bonjour JP,
Peut-être cet exemple :
'************************
Public lastuse
'***
Private Sub commandbutton1_click()
Static Dstep
If IsEmpty(lastuse) Then lastuse = Timer
Dstep = Timer - lastuse
End Sub
'***
Sub mcr1()
MsgBox "execution de mcr1"
End Sub
'***
Sub mcr2()
MsgBox "execution de mcr2"
End Sub
'**************************
'lSteph
"John-Pet" <John-Pet@wanadoo.fr> a écrit dans le message de news:
mn.4b3e7d5180f4a6e7.24667@wanadoo.fr...
Salut à tous
dans excel j'ai deux macro
M1 et M2
j'ai un bouton qui lance suivant le cas M1 ou M2
si le bouton n'as pas encore était validé dans l'heure, a la premiere
validation cela execute M1
la macro M1 ne peux se lancer qu'une seule et unique fois par heure sinon
si cette macro a deja était lancée dans l'heure en cours cela lance M2
et cela pour chaque heure
comment faire ?
merci
JP
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
End Sub '*** Sub mcr1() MsgBox "execution de mcr1" End Sub '*** Sub mcr2() MsgBox "execution de mcr2"
End Sub '**************************
'lSteph
"John-Pet" a écrit dans le message de news:
Salut à tous
dans excel j'ai deux macro M1 et M2
j'ai un bouton qui lance suivant le cas M1 ou M2
si le bouton n'as pas encore était validé dans l'heure, a la premiere validation cela execute M1 la macro M1 ne peux se lancer qu'une seule et unique fois par heure sinon si cette macro a deja était lancée dans l'heure en cours cela lance M2 et cela pour chaque heure
comment faire ?
merci
JP
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
papou
Bonjour Une solution pourrait consister à tenir un historique de l'exécution de chaque macro sur une feuille de ton classeur. A chaque exécution de tes macros, tu pourrais inscrire sur cette feuille l'heure d'exécution dans une colonne différente (ex : M1 en colonne A et M2 en colonne B) Public LaDiff As Long Public DerniereM1 As Long Public DerniereM2 As Long Public Sub M1() Feuil2.Range("A65536").End(xlUp)(2) = Format(Now, "HH:MM") MsgBox "C'est M1" End Sub Public Sub M2() Feuil2.Range("B65536").End(xlUp)(2) = Format(Now, "HH:MM") MsgBox "C'est M2" End Sub Puis d'aller avant de lancer quoi que ce soit, vérifier dans cette feuille quand a eut lieu la dernière exécution en récupérant le numéro de la dernière ligne. Donc quelque chose dans ce goût-là :
Private Sub CommandButton1_Click() DerniereM1 = Feuil2.Range("A65536").End(xlUp).Row DerniereM2 = Feuil2.Range("B65536").End(xlUp).Row Select Case DerniereM1 - DerniereM2 Case 0 M1 Case Is > 0 M2 End Select End Sub
Après il faudrait intégrer un contrôle quant à l'heure de l'exécution, mais pour ça je te laisse chercher un peu ;-)
Cordialement Pascal
"John-Pet" a écrit dans le message de news:
Salut à tous
dans excel j'ai deux macro M1 et M2
j'ai un bouton qui lance suivant le cas M1 ou M2
si le bouton n'as pas encore était validé dans l'heure, a la premiere validation cela execute M1 la macro M1 ne peux se lancer qu'une seule et unique fois par heure sinon si cette macro a deja était lancée dans l'heure en cours cela lance M2 et cela pour chaque heure
comment faire ?
merci
JP
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Bonjour
Une solution pourrait consister à tenir un historique de l'exécution de
chaque macro sur une feuille de ton classeur.
A chaque exécution de tes macros, tu pourrais inscrire sur cette feuille
l'heure d'exécution dans une colonne différente (ex : M1 en colonne A et M2
en colonne B)
Public LaDiff As Long
Public DerniereM1 As Long
Public DerniereM2 As Long
Public Sub M1()
Feuil2.Range("A65536").End(xlUp)(2) = Format(Now, "HH:MM")
MsgBox "C'est M1"
End Sub
Public Sub M2()
Feuil2.Range("B65536").End(xlUp)(2) = Format(Now, "HH:MM")
MsgBox "C'est M2"
End Sub
Puis d'aller avant de lancer quoi que ce soit, vérifier dans cette feuille
quand a eut lieu la dernière exécution en récupérant le numéro de la
dernière ligne.
Donc quelque chose dans ce goût-là :
Private Sub CommandButton1_Click()
DerniereM1 = Feuil2.Range("A65536").End(xlUp).Row
DerniereM2 = Feuil2.Range("B65536").End(xlUp).Row
Select Case DerniereM1 - DerniereM2
Case 0
M1
Case Is > 0
M2
End Select
End Sub
Après il faudrait intégrer un contrôle quant à l'heure de l'exécution, mais
pour ça je te laisse chercher un peu ;-)
Cordialement
Pascal
"John-Pet" <John-Pet@wanadoo.fr> a écrit dans le message de news:
mn.4b3e7d5180f4a6e7.24667@wanadoo.fr...
Salut à tous
dans excel j'ai deux macro
M1 et M2
j'ai un bouton qui lance suivant le cas M1 ou M2
si le bouton n'as pas encore était validé dans l'heure, a la premiere
validation cela execute M1
la macro M1 ne peux se lancer qu'une seule et unique fois par heure sinon
si cette macro a deja était lancée dans l'heure en cours cela lance M2
et cela pour chaque heure
comment faire ?
merci
JP
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Bonjour Une solution pourrait consister à tenir un historique de l'exécution de chaque macro sur une feuille de ton classeur. A chaque exécution de tes macros, tu pourrais inscrire sur cette feuille l'heure d'exécution dans une colonne différente (ex : M1 en colonne A et M2 en colonne B) Public LaDiff As Long Public DerniereM1 As Long Public DerniereM2 As Long Public Sub M1() Feuil2.Range("A65536").End(xlUp)(2) = Format(Now, "HH:MM") MsgBox "C'est M1" End Sub Public Sub M2() Feuil2.Range("B65536").End(xlUp)(2) = Format(Now, "HH:MM") MsgBox "C'est M2" End Sub Puis d'aller avant de lancer quoi que ce soit, vérifier dans cette feuille quand a eut lieu la dernière exécution en récupérant le numéro de la dernière ligne. Donc quelque chose dans ce goût-là :
Private Sub CommandButton1_Click() DerniereM1 = Feuil2.Range("A65536").End(xlUp).Row DerniereM2 = Feuil2.Range("B65536").End(xlUp).Row Select Case DerniereM1 - DerniereM2 Case 0 M1 Case Is > 0 M2 End Select End Sub
Après il faudrait intégrer un contrôle quant à l'heure de l'exécution, mais pour ça je te laisse chercher un peu ;-)
Cordialement Pascal
"John-Pet" a écrit dans le message de news:
Salut à tous
dans excel j'ai deux macro M1 et M2
j'ai un bouton qui lance suivant le cas M1 ou M2
si le bouton n'as pas encore était validé dans l'heure, a la premiere validation cela execute M1 la macro M1 ne peux se lancer qu'une seule et unique fois par heure sinon si cette macro a deja était lancée dans l'heure en cours cela lance M2 et cela pour chaque heure
comment faire ?
merci
JP
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
John-Pet
Merci à vous deux pour vos réponses, je suis donc passé par un autre chemin car la premiere solution me donnait toujours comme réponse execution de mcr2 , je me suis un peu inspiré de la deuxieme avec une date en clair sur la feuille
Private Sub commandbutton1_click() date_actu = Range("a1").Value heure = Hour(Time) heure1 = heure + 1 If date_actu < (heure * 1 / 24) Or date_actu > (heure1 * 1 / 24) Then Call mcr1 Else Call mcr2 End If End Sub
Sub mcr1() Range("A1").Value = Time MsgBox "execution de mcr1" End Sub
Sub mcr2() Range("A1").Value = Time MsgBox "execution de mcr2"
End Sub
merci encore
JP
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Merci à vous deux pour vos réponses, je suis donc passé par un autre
chemin car la premiere solution me donnait toujours comme réponse
execution de mcr2 , je me suis un peu inspiré de la deuxieme avec une
date en clair sur la feuille
Private Sub commandbutton1_click()
date_actu = Range("a1").Value
heure = Hour(Time)
heure1 = heure + 1
If date_actu < (heure * 1 / 24) Or date_actu > (heure1 * 1 / 24) Then
Call mcr1
Else
Call mcr2
End If
End Sub
Sub mcr1()
Range("A1").Value = Time
MsgBox "execution de mcr1"
End Sub
Sub mcr2()
Range("A1").Value = Time
MsgBox "execution de mcr2"
End Sub
merci encore
JP
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Merci à vous deux pour vos réponses, je suis donc passé par un autre chemin car la premiere solution me donnait toujours comme réponse execution de mcr2 , je me suis un peu inspiré de la deuxieme avec une date en clair sur la feuille
Private Sub commandbutton1_click() date_actu = Range("a1").Value heure = Hour(Time) heure1 = heure + 1 If date_actu < (heure * 1 / 24) Or date_actu > (heure1 * 1 / 24) Then Call mcr1 Else Call mcr2 End If End Sub
Sub mcr1() Range("A1").Value = Time MsgBox "execution de mcr1" End Sub
Sub mcr2() Range("A1").Value = Time MsgBox "execution de mcr2"
End Sub
merci encore
JP
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
LSteph
Bonjour,
chemin car la premiere solution me donnait toujours comme réponse execution de mcr2 , c'est normal pendant 3600 secondes , tu avais demandé un intervalle d'une
heure Il suffit de règler à 1 ou 2 au lieu de3600 pour voir que cela fonctionne.
;-) lSteph
"John-Pet" a écrit dans le message de news:
Merci à vous deux pour vos réponses, je suis donc passé par un autre chemin car la premiere solution me donnait toujours comme réponse execution de mcr2 , je me suis un peu inspiré de la deuxieme avec une date en clair sur la feuille
Private Sub commandbutton1_click() date_actu = Range("a1").Value heure = Hour(Time) heure1 = heure + 1 If date_actu < (heure * 1 / 24) Or date_actu > (heure1 * 1 / 24) Then Call mcr1 Else Call mcr2 End If End Sub
Sub mcr1() Range("A1").Value = Time MsgBox "execution de mcr1" End Sub
Sub mcr2() Range("A1").Value = Time MsgBox "execution de mcr2"
End Sub
merci encore
JP
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Bonjour,
chemin car la premiere solution me donnait toujours comme réponse
execution de mcr2 ,
c'est normal pendant 3600 secondes , tu avais demandé un intervalle d'une
heure
Il suffit de règler à 1 ou 2 au lieu de3600
pour voir que cela fonctionne.
;-)
lSteph
"John-Pet" <John-Pet@wanadoo.fr> a écrit dans le message de news:
mn.4cfc7d510fd897c4.24667@wanadoo.fr...
Merci à vous deux pour vos réponses, je suis donc passé par un autre
chemin car la premiere solution me donnait toujours comme réponse
execution de mcr2 , je me suis un peu inspiré de la deuxieme avec une date
en clair sur la feuille
Private Sub commandbutton1_click()
date_actu = Range("a1").Value
heure = Hour(Time)
heure1 = heure + 1
If date_actu < (heure * 1 / 24) Or date_actu > (heure1 * 1 / 24) Then
Call mcr1
Else
Call mcr2
End If
End Sub
Sub mcr1()
Range("A1").Value = Time
MsgBox "execution de mcr1"
End Sub
Sub mcr2()
Range("A1").Value = Time
MsgBox "execution de mcr2"
End Sub
merci encore
JP
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
chemin car la premiere solution me donnait toujours comme réponse execution de mcr2 , c'est normal pendant 3600 secondes , tu avais demandé un intervalle d'une
heure Il suffit de règler à 1 ou 2 au lieu de3600 pour voir que cela fonctionne.
;-) lSteph
"John-Pet" a écrit dans le message de news:
Merci à vous deux pour vos réponses, je suis donc passé par un autre chemin car la premiere solution me donnait toujours comme réponse execution de mcr2 , je me suis un peu inspiré de la deuxieme avec une date en clair sur la feuille
Private Sub commandbutton1_click() date_actu = Range("a1").Value heure = Hour(Time) heure1 = heure + 1 If date_actu < (heure * 1 / 24) Or date_actu > (heure1 * 1 / 24) Then Call mcr1 Else Call mcr2 End If End Sub
Sub mcr1() Range("A1").Value = Time MsgBox "execution de mcr1" End Sub
Sub mcr2() Range("A1").Value = Time MsgBox "execution de mcr2"
End Sub
merci encore
JP
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
LSteph
Re, bonjour, et oupss..autant pour moi ce que je t'ai donné après plusieurs test va à ceci près qu'il fallait commencer par executer une 1ère fois mcr1 donc je corrige (ici avec délai de 10 secondes) '************************ Public lastuse '*** Private Sub commandbutton1_click()
Static Dstep If IsEmpty(lastuse) Then lastuse = Timer Call mcr1 End If
End Sub '*** Sub mcr1() MsgBox "execution de mcr1" End Sub '*** Sub mcr2() MsgBox "execution de mcr2"
End Sub '************************** 'lsteph
"John-Pet" a écrit dans le message de news:
Merci à vous deux pour vos réponses, je suis donc passé par un autre chemin car la premiere solution me donnait toujours comme réponse execution de mcr2 , je me suis un peu inspiré de la deuxieme avec une date en clair sur la feuille
Private Sub commandbutton1_click() date_actu = Range("a1").Value heure = Hour(Time) heure1 = heure + 1 If date_actu < (heure * 1 / 24) Or date_actu > (heure1 * 1 / 24) Then Call mcr1 Else Call mcr2 End If End Sub
Sub mcr1() Range("A1").Value = Time MsgBox "execution de mcr1" End Sub
Sub mcr2() Range("A1").Value = Time MsgBox "execution de mcr2"
End Sub
merci encore
JP
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Re, bonjour,
et oupss..autant pour moi ce que je t'ai donné après plusieurs test va
à ceci près qu'il fallait commencer par executer une 1ère fois mcr1
donc je corrige (ici avec délai de 10 secondes)
'************************
Public lastuse
'***
Private Sub commandbutton1_click()
Static Dstep
If IsEmpty(lastuse) Then
lastuse = Timer
Call mcr1
End If
End Sub
'***
Sub mcr1()
MsgBox "execution de mcr1"
End Sub
'***
Sub mcr2()
MsgBox "execution de mcr2"
End Sub
'**************************
'lsteph
"John-Pet" <John-Pet@wanadoo.fr> a écrit dans le message de news:
mn.4cfc7d510fd897c4.24667@wanadoo.fr...
Merci à vous deux pour vos réponses, je suis donc passé par un autre
chemin car la premiere solution me donnait toujours comme réponse
execution de mcr2 , je me suis un peu inspiré de la deuxieme avec une date
en clair sur la feuille
Private Sub commandbutton1_click()
date_actu = Range("a1").Value
heure = Hour(Time)
heure1 = heure + 1
If date_actu < (heure * 1 / 24) Or date_actu > (heure1 * 1 / 24) Then
Call mcr1
Else
Call mcr2
End If
End Sub
Sub mcr1()
Range("A1").Value = Time
MsgBox "execution de mcr1"
End Sub
Sub mcr2()
Range("A1").Value = Time
MsgBox "execution de mcr2"
End Sub
merci encore
JP
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Re, bonjour, et oupss..autant pour moi ce que je t'ai donné après plusieurs test va à ceci près qu'il fallait commencer par executer une 1ère fois mcr1 donc je corrige (ici avec délai de 10 secondes) '************************ Public lastuse '*** Private Sub commandbutton1_click()
Static Dstep If IsEmpty(lastuse) Then lastuse = Timer Call mcr1 End If
End Sub '*** Sub mcr1() MsgBox "execution de mcr1" End Sub '*** Sub mcr2() MsgBox "execution de mcr2"
End Sub '************************** 'lsteph
"John-Pet" a écrit dans le message de news:
Merci à vous deux pour vos réponses, je suis donc passé par un autre chemin car la premiere solution me donnait toujours comme réponse execution de mcr2 , je me suis un peu inspiré de la deuxieme avec une date en clair sur la feuille
Private Sub commandbutton1_click() date_actu = Range("a1").Value heure = Hour(Time) heure1 = heure + 1 If date_actu < (heure * 1 / 24) Or date_actu > (heure1 * 1 / 24) Then Call mcr1 Else Call mcr2 End If End Sub
Sub mcr1() Range("A1").Value = Time MsgBox "execution de mcr1" End Sub
Sub mcr2() Range("A1").Value = Time MsgBox "execution de mcr2"
End Sub
merci encore
JP
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net