Tester si une macro est en cours d execution [Résolu]

helpvb
Messages postés
32
Date d'inscription
jeudi 7 septembre 2006
Dernière intervention
22 avril 2009
- 24 déc. 2007 à 16:01 - Dernière réponse : us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
- 13 janv. 2008 à 10:01
Bonjour
Sur mon document excel j ai un menu personnalisé avec des sous menus qui permettent a l utilisateur de declencher des macros vba
Comment pourrais je tester en vba 6.3 si une des 20 macros mis a disposition est en cours d execution ?
Merci pour votre aide
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 24 déc. 2007 à 16:11
3
Merci
Méthode simple : à chaque fois qu'une de tes macros est lancée, tu positionne une variable à true et quand elle se termine, à false.
Et après tu regardes la valeur de tes variables ...
D'accord c'est pas très propre mais bon
_______________________________________________________________________
VB.NETis good ...VB6is better

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
Meilleure réponse
helpvb
Messages postés
32
Date d'inscription
jeudi 7 septembre 2006
Dernière intervention
22 avril 2009
- 24 déc. 2007 à 16:15
3
Merci
Merci pour la reponse mais si la macro s est plantée la variable restera positionnee a True et je souhaiterais eviter de rentrer dans une gestion d erreu de toutes mes macros...

Merci helpvb 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de helpvb
Meilleure réponse
jmfmarques
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Dernière intervention
22 août 2014
- 24 déc. 2007 à 16:40
3
Merci
Bonjour,

Si la macro s'est plantée, c'est qu'il y avait une raison de plantage.

C'est à la recherche de cette raison qu'il te faut travailler, avant de penser à la gestion d'erreurs...
Une fois la raison découverte, il te faut travailler à la mise en oeuvre d'un mécanisme en amont et non en aval.

La gestion d'erreur ne doit être envisagée qu'après ces démarches-là ... et uniquement s'il est vraiment impossible d'éviter une telle gestion (ce qui est assez rare).

Merci jmfmarques 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de jmfmarques
Meilleure réponse
helpvb
Messages postés
32
Date d'inscription
jeudi 7 septembre 2006
Dernière intervention
22 avril 2009
- 24 déc. 2007 à 16:53
3
Merci
ok disons alors en cas de plantage intempestif....
y aurait pas simpelement une instruction permettant de tester si une maacro est en cours d execution ?

Merci helpvb 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de helpvb
Meilleure réponse
cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
- 24 déc. 2007 à 22:55
3
Merci
Je ne crois pas non ... Mais tu es censé avoir un code qui ne se plante pas !!
_______________________________________________________________________
VB.NETis good ...VB6is better

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
Meilleure réponse
us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
- 26 déc. 2007 à 13:55
3
Merci
Bonjour,

La question est un non sens. En effet, l'exécution d'une macro est exclusive. On ne pas lancer 2 macros en même temps... donc quand une macro est en cours d'exécution, elle gèle le reste, il devient impossible de tester si la macro est en cours, sauf dans la macro elle-même, mais cela n'a pas de sens...


Par contre, à partir d'un programme externe, la question serait très pertinente...


Amicalement,


Us.

Merci us_30 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de us_30
helpvb
Messages postés
32
Date d'inscription
jeudi 7 septembre 2006
Dernière intervention
22 avril 2009
- 13 janv. 2008 à 03:50
0
Merci
Merci pour vos reponses mais avant d affirmer que la question est un non sens, il serait bon de réfléchir un peu...
En effet cela a tout son sens dans la mesure ou je souhaite tester dans le code vba des call back ('Worksheet Onchange, Onselection,...)si le code du call back s execute au travers d une de mes macros ou au travers d une manipulation utilisateur...
Amicalement...
Commenter la réponse de helpvb
us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Dernière intervention
14 mars 2016
- 13 janv. 2008 à 10:01
0
Merci
Bonjour helpvb,

Qu'on ne trompe pas sur mes propos, quand je dis que la question est un non sens, je ne dis pas que la question n’est pas intéressante.

Je reste sur ma position, faute de contre exemple. Mieux qu’un grand discours, un petit exemple qui consiste à programmer une action dans deux événements (déclenchés nécessairement par utilisateur), dont un contient une boucle d’attente de 5 secondes pour simuler donc un code qui s’exécute… Que soit une boucle d’attente ou un vrai code, cela ne change donc rien. On peut donc constater que le déclenchement des événement ne peuvent pas être simultannées. Ce qui justifie mes premiers propos : "donc quand une macro est en cours d'exécution, elle gèle le reste, il devient impossible de tester si la macro est en cours"

=

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox "je sauve"
End Sub



Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
MsgBox "je change... et j'attend 5 secondes... Faites une autre action !"
t = Timer
Do
Loop Until Timer - t > 5
End Sub

=

A chaque changement de cellule SheetSelectionChange se déclenche avec un message et attend 5 secondes. Si on essait de sauvegarder pendant l'exécution ce qui déclenche BeforeSave, rien ne se produit. On n'a pas la main... Néanmoins, l'action reste en "mémoire tampon", et s'active juste après la première.

Amicalement,
Us.
Commenter la réponse de us_30

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.