Interdire lancement macro si une macro est déjà en cours

davidm

XLDnaute Nouveau
Bonjour,

Je souhaiterais savoir si il est possible d’interdire le lancement d’une macro si une macro est déjà en cours.

Par exemple : macro évènementielle "change"

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
MsgBox ("Essai")
Sheets("Feuil1").Range("A1") = "essai"
End Sub

Dans le code ci-dessus, le fait de modifier la valeur de la case A1 relance la macro (un certain nombre de fois, puis s’arrête).

Merci d’avance pour votre aide

David
 

Pierrot93

XLDnaute Barbatruc
Re : Interdire lancement macro si une macro est déjà en cours

Bonjour,

regarde peut etre ceci
Code:
Application.EnableEvents = False
On Error GoTo fin
 MsgBox ("Essai")
 Sheets("Feuil1").Range("A1") = "essai"
fin:
Application.EnableEvents = True
  End Sub
bon après midi
@+
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Interdire lancement macro si une macro est déjà en cours

Bonjour David, Pierrot, bonjour le forum,

Le problème avec Application.EnableEvents est que si le code plante alors qu'il a été définit à False, les macros événementielles de fonctionnent plus. Pour éviter ça je préfère l'utilisation d'une variable boléenne :
Code:
Private test As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
If test = True Then test = False: Exit Sub
test = True
MsgBox ("Essai")
Sheets("Feuil1").Range("A1") = "essai"
End Sub
 

Discussions similaires

Réponses
7
Affichages
361

Statistiques des forums

Discussions
312 520
Messages
2 089 298
Membres
104 092
dernier inscrit
karbone57