Executer macro seulement après la fin d'une autre macro

adam75

XLDnaute Nouveau
Bonsoir tout le monde,

J'ai tout essayé mais ça c'est un coup à peter un cable !! Voilà j'ai 2 macros qui s'executent tous les 5s avec TimeValue et je voudrais qu'une autre macro ne s'execute qu'après la fin de l'execution de ces macros.

En fait ma procedure donne ça:

Sub temps()

Application.ScreenUpdating = False
Application.OnTime Now + TimeValue("00:00:5"), "macro1"
Application.OnTime Now + TimeValue("00:00:10"), "macro2"
Application.Run "macro3"

End Sub

A chaque fois que j'execute la macro temps, c'est d'abord la macro 3 qui s'execute alors que je voudrais qu'elle s'execute à la fin. :confused:

J'ai tenté de mette TimeValue avant la macro3 mais ça ne marche pas. :(
 

adam75

XLDnaute Nouveau
Re : Executer macro seulement après la fin d'une autre macro

Merci Jean-Pierre pour ta réponse. J'ai essayé d'inverser mais ça ne marche pas non plus. En fait je ne veux pas que la macro 1 se lance tout de suite. :D

Bon en fait j'ai trouvé une solution de contournement qui est de lancer manuellement la macro 3 avec un bouton quand la macro temps se termine mais ce n'est pas l'idéal. :(

Encore merci et surtout très bonne nuit. ;)

Si quelqu'un d'autre a une meilleure solution. :confused:
 

jeanpierre

Nous a quitté
Repose en paix
Re : Executer macro seulement après la fin d'une autre macro

Re,

C'était dans le "frais" de ton post (le frais, pour un peintre (tableau) c'est une grande couche de peinture sur la toile et après travailler d'autres couleurs dedant).....

Sans fichier joint pas facile et surtout pas toujours possible de reconsidérer ton souci.

Mets nous un petit fichier ZIPPE et là, tu auras des réponses bien meilleures...

Bonne nuit aussi.
 

Spitnolan08

XLDnaute Barbatruc
Re : Executer macro seulement après la fin d'une autre macro

Bonjour Adam75, JeanPierre:),
A chaque fois que j'execute la macro temps, c'est d'abord la macro 3 qui s'execute alors que je voudrais qu'elle s'execute à la fin. :confused:
C'est normal : Tes 2 premières instructions décalent le démarrage de Macro1 et Macro2 mais le code de ta sub temps continue à se dérouler. Comme tu arrives à l'instruction de lancement de la macro3 avant 5 s (Pour 5s noter 00:00:05) elle se déclenche immédiatement ...

Pour l'éviter : appeler la macro3 par la macro2 ou bien assigner un délai de déclenchement compatible à la macro3 au sein de sub temps.

Si ce n'est pas clair :rolleyes: demande...

Cordialement
 

adam75

XLDnaute Nouveau
Re : Executer macro seulement après la fin d'une autre macro

Si ce n'est pas clair :rolleyes: demande...
Cordialement

Bonsoir Spitnolan,

Si c'est très clair je vais faire comme ça je pense mais en fait je voulais savoir s'il existait une fonction que je ne connais pas qui dit"A la fin de l'execution de la macro, lancer telle macro ou faire telle chose".

Mais apparemment ça n'existe pas. :D

Je vais essayer de me débrouiller avec ça.

Encore merci pour votre aide. ;)
 

chris

XLDnaute Barbatruc
Re : Executer macro seulement après la fin d'une autre macro

Bonjour
Une astuce que j'utilise notamment pour synchroniser les macros de 2 applis différentes :
A l'issue de la 1ere macro j'écris un fichier txt dans un dossier temp. L'autre macro ne démarre que si elle trouve ce fichier : commande dir dans une boucle while qui la laisse dans les starting blocks.
Quand cette 2ème macro se termine, elle efface le fichier.
Dans ton cas, il y a peut-être une autre solution plus clean notamment si tes délais sont très courts mais ma solution marche.
 

Kuartz42

XLDnaute Nouveau
Re : Executer macro seulement après la fin d'une autre macro

Bonjour à tous,

Je croyais que ce post me serait très utile car je souhait exécuter plusieurs macros à la suite après un temps donné sur excel en VBA.

Seulement voila le problème que j'ai rencontré :

En fait le but de la manoeuvre est d'ouvrir un 'Userform' puis de le faire disparaitre automatiquement au bout de quelques secondes (2 seraient l'idéal). Ceci évitera à l'utilisateur d'être obligé d'appuyer sur un bouton pour fermer la fenêtre.

La macro que j'ai écris est celle-ci :

Application.OnTime Now + TimeValue("00:00:5"), "macro1"
Application.Run "macro2"

Le contenu de la macro 1 est :

Sub Unload()
Unload Attention
End Sub

Celui de la macro 2 est :

Sub Load()
Attention.Show
End Sub

"Attention" étant le nom du UserForm.

La macro générale de la feuille (car tout ceci doit s'éxécuter à l'ouverture d'un feuille) ne marche pas.

Je suis preneur de tous les conseils que vous pourrez me donner et vous remercie d'avance !

Jérome
 
Dernière édition:

pierre31270

XLDnaute Junior
Re : Executer macro seulement après la fin d'une autre macro

Bonjour,

J'ai un peu le même soucis mais je n'utilise pas le temps.
Je souhaiterais juste faire une macro telle que le document se sauvegarde puis la macro1 se déclenche, puis le document se sauvegarde à nouveau et ensuite il lance la macro2:

Code:
Sub Macro3()
'
'
If MsgBox("Confirmez-vous le lancement ?", vbQuestion + vbYesNo + vbMsgBoxSetForeground + vbDefaultButton2, "Application") = vbNo Then Exit Sub
    ActiveWorkbook.Save
    Run macro1
    ActiveWorkbook.Save
    Run macro2
End Sub

Pourriez-vous m'aider s'il vous plait?

D'avance merci,:)

Pierre
 

Discussions similaires

Statistiques des forums

Discussions
312 672
Messages
2 090 775
Membres
104 663
dernier inscrit
Girondins43