Microsoft 365 activer les codes après Application.EnableEvents = False

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,
Je vous souhaite une belle journée :)

Me re-voilou encore avec mes questions bizarres lol 🤣
Voici maintenant longtemps que je me pose cette question :
Est-il possible d'activer les codes après Application.EnableEvents = False ?

De temps en temps je fais des recherches sans résultat !
J'essaie également des trucs sans trouver la solution !

Ce matin ça me repasse par la tête et je me repose la question. Mais ce n'est peut-être pas possible ?

Le contexte :
A certains moments, j'ai besoin de désactiver les macros = Application.EnableEvents = False
Je souhaiterais pouvoir, sans créer de bouton "à cliquer", les réactiver sans passer par l'affichage VBA pour aller exécuter la macro de réactivation manuellement.

Sauriez-vous si solution il y a ?
Amicalement,
lionel,
 
Dernière édition:

fanch55

XLDnaute Barbatruc
Sans bouton à cliquer, une possibilité via des touches claviers :

Dans Thisworkbook
VB:
Private Sub Workbook_Open()
    Application.OnKey "^e", "Enable_Events" ' ctrl+e
    Application.DisplayStatusBar = True
    Stop_Events
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Application.OnKey "^e"
End Sub

Dans un Module:
Code:
Public Sub Enable_Events()
    Application.EnableEvents = True
    Application.StatusBar = ""
    ' etc ...
End Sub
Public Sub Stop_Events()
    Application.EnableEvents = False
    Application.StatusBar = " Attention: Pas d'events autorisé "
End Sub

Et pour vérifier dans le code de ta feuille:
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox "selection change car EnableEvents=true"
End Sub

Pour débloquer les events, faire Ctrl + e

Ceci dit, cela ne bloque que les macros événementielles ....
Attention, le RightClick n'est pas événementiel ..
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour Lionel, fanch55,
Ceci dit, cela ne bloque que les macros événementielles ....
Attention, le RightClick n'est pas événementiel ..
Oh là, bien sûr que si !
VB:
'exécutez cette macro
Sub Desactive()
Application.EnableEvents = False
End Sub

'puis faites un clic droit sur une cellule
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox "Bonjour"
End Sub

Sub Reactive()
Application.EnableEvents = True
End Sub
A+
 

fanch55

XLDnaute Barbatruc
Bonjour Lionel, fanch55,

Oh là, bien sûr que si !
VB:
'exécutez cette macro
Sub Desactive()
Application.EnableEvents = False
End Sub

'puis faites un clic droit sur une cellule
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox "Bonjour"
End Sub

Sub Reactive()
Application.EnableEvents = True
End Sub
A+
Désolé, je me suis mal exprimé, ce que je voulais dire c'est que le RightClick "habituel" est toujours exécuté ... on ne peut pas le "bloquer" ...

En fait tous les codes écrits dans les events sont bloqués mais pas leur fonction native ... 😁
 

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour Lionel, fanch55,

Oh là, bien sûr que si !
VB:
'exécutez cette macro
Sub Desactive()
Application.EnableEvents = False
End Sub

'puis faites un clic droit sur une cellule
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
MsgBox "Bonjour"
End Sub

Sub Reactive()
Application.EnableEvents = True
End Sub
A+
Bonjour Gérard,
Merci pour ton #post et ton code :)
pas eu le temps de voir mais dès que j'aurais testé, je reviens,
lionel,
 

fanch55

XLDnaute Barbatruc
Re-Bonjour Gérard, fanch55,

Je n'ai pas réussi à faire fonctionner vos codes.
Certainement que je n'ai pas tout compris lol
J'ai fait un p'tit fichier test que je joins à ce #post.
:)
@job75 s’adressait en fait à moi pour mon écrit sur le rightclick .

Pour mon code, tout dépend de ce que tu veux en faire .
Tel quel, les codes que tu as pu mettre dans les events de ta feuille sont bloqués:
par exemple, si tu cliques sur une cellule, le code qui est dans le Worksheet_SelectionChange de la feuille est ignoré
1636992926910.png
Si tu cliques sur Ctrl+e, les évents sont débloqués
1636993067679.png
Et si tu cliques maintenant sur une cellule de ta feuille, ce message t'est affiché :
1636993278019.png

Si tu veux rebloquer, lancer la sub Stop_Events
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Je n'ai pas réussi à faire fonctionner vos codes.
Pour les macros de test de Job75, à mon avis il suffit de coller les trois macros dans une feuille, puis exécuter manuellement la première macro pour désactiver les événements.

En suite tu fais un clic-droit dans une cellule de la feuille.
Et tu viens nous dire ce qu'ils'est passé.

Pour finir tu exécutes manuellement la troisième macro pour réactiver les événements.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 922
Messages
2 093 658
Membres
105 777
dernier inscrit
Lili1411