Application.EnableEvent/Worksheet_Change ne s'activent plus

Bonjour à tous,

Enorme bug inexplicable ; j'ai un programme qui fait appel à Worksheet_Change.

Il ne fonctionne pas toujours alors je mets Application.EnableEvents=True.

Je l'ai testé et ça marchait nickel. J'ai une liste dans des cellules, et si on change les cellules dotées d'une liste, j'exécute une macro.

Seulement, d'un seul coup, sans raison, tout s'est mis à planter, mes feuilles étaient protégées alors que mes macros appellent ActiveSheet.Unprotect, ClearContents ne s'exécutait plus, et paf :

Microsoft Excel a cessé de fonctionner.

Bref, c'est comme si ce que j'avais fait ne s'exécutait plus ! Ca me rend folle parce que tout marchait parfaitement quelques minutes auparavant...

J'ai remarqué que si je lançais manuellement Application.EnableEvent = True, mon Worksheet_Change se lançait automatiquement comme voulu. Mais après, il faut croire que Application.EnableEnvents se met à false... Je ne comprends vraiment pas.

J'aurais besoin d'aide svp, ça me rend vraiment dingue !!

Voici mon Worksheet_Change :

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Count = 1 Then

'Explication de la macro
    If Not Intersect(Target, Range("G10:H19")) Is Nothing Then
    Application.EnableEvents = True
        Application.DisplayAlerts = False
        Call MaMacro
        Application.DisplayAlerts = True
    End If

End If
End Sub

D'avance merci,


Bon, j'ai changé quelque chose niveau Application.EnbaleEvents, et ça marche pour le moment.

Je dis bien pour le moment...

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Count = 1 Then
     If Not Intersect(Target, Range("G10:H19")) Is Nothing Then
          Application.DisplayAlerts = False
         ActiveSheet.Unprotect
        Call MaMacro
        Application.DisplayAlerts = True
    End If
End If
 Application.EnableEvents = True
End Sub

Bonjour

Ta macro fait appel à une autre macro : ‘’MaMacro’’

C’est sûrement là que se trouve l’origine de ton problème ;

Peut-on la voir ? Si elle se termine par l’exécution d’une instruction ‘End’ par exemple , les macros événementielles ne sont pas réactivées.

Par ailleurs, la première instruction :

Application.EnableEvents = True

Est parfaitement inutile puisqu’elle précède une instruction qui l’annule…

Bye !

Bonjour Stagiaire galère, bonjour le forum,

Il faudrait voir le code de MaMacro pour pouvoir t'aider plus éfficacement. J'utilise rarement EnableEvents car en cas de plantage avant la remise à True, on se retrouve avec les macro événementielle désactivées. Je préfère utiliser une booléenne comme ça :

Private TEST As Boolean

Private Sub Worksheet_Change(ByVal Target As Range)
If TEST = True Then Exit Sub
TEST = True
If Target.Count = 1 Then
    If Not Intersect(Target, Range("G10:H19")) Is Nothing Then
        Application.DisplayAlerts = False
        ActiveSheet.Unprotect
        Call MaMacro
        Application.DisplayAlerts = True
    End If
End If
TEST = False
End Sub

[Édition]

Bonjour Gmb on s'est croisé....

Bonjour gmb, ThauThème

@ gmd

C'était bien un "End" qui traînait qui désactivait ma macro, mais je l'avais supprimé ! C'était mon "On Error GoTo END" en fait...

Mais grace à toi gmb, je comprends d'où venait l'erreur !!

Je l'avais résolu sans le savoir...

Merci !

@ThauThème

Merci pour le tuyau, ça marche nickel cette technique aussi, super !

Je vous remercie tous les deux !

EDIT : je ne pouvais pas mettre le bout de code car c'est un travail confidentiel dsl

Bonjour le fil, bonjour le forum,

@SatgiaireEnGalère : le mien aussi (de travail) est ultra confidentiel... Alors surtout, ne le dis à personne !...

Rechercher des sujets similaires à "application enableevent worksheet change activent"