Macro simultanées séparées

Résolu
Visiteurr -  
 visiteurr -
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,

4 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  2. Visiteurr
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    2. Visiteurr
       
      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
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    4. Visiteurr
       
      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
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  3. visiteurr
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      J'avais bien compris, mais ce que tu demandes n'est pas possible...
      0
    2. visiteurr
       
      oki oki ^^ merci quand meme a toi ++
      0
  4. visiteurr
     
    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