Macro simultanées séparées

Résolu/Fermé
Visiteurr - 1 mars 2011 à 14:35
 visiteurr - 3 mars 2011 à 10:33
Bonjour,


Voila je crois que ce n'est pas possible de lancer plusieurs macro en même temps. Et que les deux s'execute pendant quelques minutes ensemble.
Donc voila ma premiere question c'est : est il possible dans une macro de lancer une autre macro independante tout en continuant la premiere... ( dificile a expliquer j'espere que vous avez compris... )
exemple:
les chiffres a gauche sont les seconds( ou les minutes ) qui défilent.

1
2 -> attendre 9 seconds et ecrire "SUPER 1"
3
4
5 -> attendre 3 seconds et ecrire " MINCE 2"
6
7
8 ----> "MINCE 2"
9 -> attendre 7 secondes et ecrire "houla 3"
10
11 ----> "SUPER 1"
12
13
14
15
16 ----> "houla 3"
17
18

Voila en gros ce que j'aimerai faire dans 1 seul programme ...

Quelqu'un c'est comment faire ?

merci d'avance,
A voir également:

4 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
1 mars 2011 à 14:53
Salut,
Ton exemple peux aussi s'écrire :
1
2 -> attendre 8 secondes et ecrire "MINCE 2"
3
4
5
6
7
8 ----> "MINCE 2"
9 -> attendre 2 secondes et écrire "SUPER 1"
10
11 ----> "SUPER 1"
12 -> attendre 4 secondes et écrire "houla 3"
13
14
15
16 ----> "houla 3"
17
18
Bon je suppose que cela n'est qu'un exemple..... Dis nous ce que tu souhaites faire exactement.
0
Mdr merci XD mais c'est pas se que j'ai demandé =)=)

se que je demande c'est :

je lance une macro qui fait quelque chose ( peut importe quoi ) pendant cette macro je veu lancer une autre macro qui va attendre quelques seconds et qui va faire autrechose ensuite ( sans stoper la macro principale )

1
2 -> attendre 9 seconds et ecrire "SUPER 1" // premiere SOUS MACRO
3
4
5 -> attendre 3 seconds et ecrire " MINCE 2" // deuxieme SOUS MACRO
6
7
8 ----> "MINCE 2"
9 -> attendre 7 secondes et ecrire "houla 3" // 3eme SOUS MACRO
10
11 ----> "SUPER 1"
12
13
14
15
16 ----> "houla 3"
17
18

L'ORDRE NE PEUT PAS CHANGER ^^

c'est un program donc automatique on ne peut pas changer lodre des macro pour que ca nous arange =)
c'est pour ca que j'ai une dificulté =)

merci pour ta rèponse en tout cas
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
1 mars 2011 à 15:14
Tu dis :
je lance une macro qui fait quelque chose ( peut importe quoi ) Et moi je te réponds :
Et bien non pas "peu importe quoi"... Selon ce que tu veux, il y a peut être une autre solution. D'ou ma première réponse. Maintenant, s'il s'agit d'un exercice, retourne voir dans ton bouquin...
Sinon, je me répète, dis nous ce que tu souhaites faire exactement...
0
Alors si je demande ca c'est qu'il y'a une raison ^^ mais tu peux pas le deviner j'ai besoins que ca marche comme ca.

Non ce n'est pas un exercice lol je vois pas un prof demander ca XD
mais je ne peut pas te donner des infos sur ce que je veu traiter car malheureusement je n'en ai pas le droit.

Je suis devellopeur, mais vba j'ai jamais fait seulement c'est une contrainte que j'ai pour le projet que je suis entrain de faire... (a mon grd regret)

Tu as l'air de t'y connaitre , dis moi juste si c'est possible d'avoir 2 ( ou + ) macros qui tournent en même temps sachant qu'il y'a une macro principale et que les sous macros se contentent d'attendre puis de remplir une cellule avant de s'arretter.

Merci a toi
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
Modifié par pijaku le 1/03/2011 à 15:56
Alors, je vais te répondre simplement [que l'on me corrige si je me trompe], VBA procède dans l'ordre des procédures. Il termine la première avant d'exécuter la suivante.
EDIT : tu peux lancer une 2ème macro dans la 1ère, mais celle ci s'arrête le temps que la 2ème s'achève.
EDIT2 : je ne connais que les prémices de VBA...
0
Oki c'est ce qui me semblé aussi ... donc se que je souhaite faire n'est pas réalisable ...

domage

Par contre c'est surment posible de donner un "ticket" a une operation ... et lexecuté que lorsque le ticket est appellé !

je reflechi à ca ^^ merci encore
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
Modifié par pijaku le 1/03/2011 à 15:56
Pour reprendre ton image de "tickets", voici un exemple :
Sub macro1() 
[A1] = "test" 
Application.Wait Now + TimeValue("0:00:04") 
Call macro2 
Application.Wait Now + TimeValue("0:00:02") 
Call macro3 
Application.Wait Now + TimeValue("0:00:03") 
[A4] = "terminé" 
End Sub 

Sub macro2() 
[A2] = "Test 1" 
End Sub 

Sub macro3() 
[A3] = "test 2" 
End Sub
0
merci pour ton code mais dans ton exemple ils s'exectutent l'un aprés l'autre :
ca va afficher :

test tes1 test2

et moi j'aurai voulu que ca affiche ( pour le même program ) :

test test2 test1

car test1 attend 4 sec alors que test2 attend que 2 seconds ...

Tu vois ce que je veu dire ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
3 mars 2011 à 09:53
J'avais bien compris, mais ce que tu demandes n'est pas possible...
0
oki oki ^^ merci quand meme a toi ++
0
Yesss j'ai trouvé un moyen , pour ceux qui on un souci dans le même genre ^^

j'ai testé plein de truc et j'ai fini par avoir un truc qui marche lol gros coup de chance :

Sub Macro2()

Dim Test As Date
Dim Test1 As Date
Dim Test2 As Date
Test = Now + TimeSerial(0, 0, 1)
Test1 = Now + TimeSerial(0, 0, 5)
Test2 = Now + TimeSerial(0, 0, 10)

Application.OnTime Test2, Procedure:="Macro3"
Application.OnTime Test, Procedure:="Macro4"
Application.OnTime Test1, Procedure:="Macro5"



End Sub

ca execute la macro 4 au bout de 1 second ... puis la macro 5 au bout de 5 second et enfin la macro 3 au bout de 10 seconde !!!

a vérifier avec un chrono mais ca ma l'air bon =)
0

Discussions similaires