OVH Cloud OVH Cloud

VBA : Desactiver une macro pendant le deroulement d'une autre...

3 réponses
Avatar
Domi
Bonjour à tous,

J'ai une feuille "Saisie" dans laquelle figure une macro : Private Sub
Worksheet_Change(ByVal Target As Range)
...............
Cette macro provoque un certain nombre d'evenement en fonction des cellules
qui sont sélectionnés...

Dans un module standard j'ai une macro : Sub Initialisation()
qui elle, efface, remplie...des cellules de ma même feuille Saisie

Est-il possible que pendant le déroulement de la macro Initialisation de
rendre "inactive" Private Sub Worksheet_Change(ByVal Target As Range) ?

Merci
Domi

3 réponses

Avatar
JpPradier
Bonjour Domi

Tu mets Application.EnableEventsúlse au début de ta macro et tu le remet a True à la fin.

j-p
Avatar
Michel Gaboly
Bonjour,

Voici 2 options :

Si tu peux te passer de toute gestion événementielle pendant l'initialisation,

Sub Init
Application.EnableEvents = False
' Ton code actuel
Application.EnableEvents = True
End Sub

Attention, en cas de plantage dans la procédure, il faut réactiver la gestion
événementielle en lançant :

Sub RetablitEvents
Application.EnableEvents = True
End Sub

Si tu as besoin de gérer d'autres événements pendant l'initialisation,

Sub Init
Dim InitEnCours as Boolean
InitEnCours = True
' Ton code actuel
InitEnCours = False
End Sub

et dans le Worksheet_Change :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not(InitEnCours) Then
' Le code gérant l'événement
End If
End Sub

ou

Private Sub Worksheet_Change(ByVal Target As Range)
If InitEnCours Then Exit Sub
' Le code gérant l'événement
End Sub



Bonjour à tous,

J'ai une feuille "Saisie" dans laquelle figure une macro : Private Sub
Worksheet_Change(ByVal Target As Range)
...............
Cette macro provoque un certain nombre d'evenement en fonction des cellules
qui sont sélectionnés...

Dans un module standard j'ai une macro : Sub Initialisation()
qui elle, efface, remplie...des cellules de ma même feuille Saisie

Est-il possible que pendant le déroulement de la macro Initialisation de
rendre "inactive" Private Sub Worksheet_Change(ByVal Target As Range) ?

Merci
Domi


--
Cordialement,

Michel Gaboly
http://www.gaboly.com

Avatar
Domi
Merci beaucoup à tous deux ;o)
Domi

"Michel Gaboly" a écrit dans le message de
news:
Bonjour,

Voici 2 options :

Si tu peux te passer de toute gestion événementielle pendant
l'initialisation,


Sub Init
Application.EnableEvents = False
' Ton code actuel
Application.EnableEvents = True
End Sub

Attention, en cas de plantage dans la procédure, il faut réactiver la
gestion

événementielle en lançant :

Sub RetablitEvents
Application.EnableEvents = True
End Sub

Si tu as besoin de gérer d'autres événements pendant l'initialisation,

Sub Init
Dim InitEnCours as Boolean
InitEnCours = True
' Ton code actuel
InitEnCours = False
End Sub

et dans le Worksheet_Change :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not(InitEnCours) Then
' Le code gérant l'événement
End If
End Sub

ou

Private Sub Worksheet_Change(ByVal Target As Range)
If InitEnCours Then Exit Sub
' Le code gérant l'événement
End Sub



Bonjour à tous,

J'ai une feuille "Saisie" dans laquelle figure une macro : Private Sub
Worksheet_Change(ByVal Target As Range)
...............
Cette macro provoque un certain nombre d'evenement en fonction des
cellules


qui sont sélectionnés...

Dans un module standard j'ai une macro : Sub Initialisation()
qui elle, efface, remplie...des cellules de ma même feuille Saisie

Est-il possible que pendant le déroulement de la macro Initialisation de
rendre "inactive" Private Sub Worksheet_Change(ByVal Target As Range) ?

Merci
Domi


--
Cordialement,

Michel Gaboly
http://www.gaboly.com