VBA : Desactiver une macro pendant le deroulement d'une autre...
3 réponses
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) ?
Tu mets Application.EnableEventsúlse au début de ta macro et tu le remet a True à la fin.
j-p
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
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) ?
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
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
Merci beaucoup à tous deux ;o)
Domi
"Michel Gaboly" <michel@Suppgaboly.com> a écrit dans le message de
news:4136B3E9.8B5622E7@Suppgaboly.com...
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) ?
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) ?