Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Stopper momentanément une Worksheet_Change

6 réponses
Avatar
Versatile
Bonjour,
J'ai =E9tabli une macro =E9v=E9nementielle de type "Worksheet_Change" qui
s'active pour toute modification dans une feuille de calcul. Cette
macro A appelle selon les circonstances une autre macro B qui s'active
et modifie en cons=E9quence la m=EAme feuille de calcul. Or, pour tout
changement de la macro B dans ladite feuille de calcul, cela r=E9active
la macro A.
Comment d=E9sactiver momentan=E9ment au sein de la macro B le recours =E0 l=
a
macro A lors de tout changement de la feuille de calcul ?
Merci mille fois.

6 réponses

Avatar
Carim
On Apr 21, 4:49 pm, Versatile wrote:
Bonjour,
J'ai établi une macro événementielle de type "Worksheet_Change" qui
s'active pour toute modification dans une feuille de calcul. Cette
macro A appelle selon les circonstances une autre macro B qui s'active
et modifie en conséquence la même feuille de calcul. Or, pour tout
changement de la macro B dans ladite feuille de calcul, cela réactive
la macro A.
Comment désactiver momentanément au sein de la macro B le recours à la
macro A lors de tout changement de la feuille de calcul ?
Merci mille fois.



La solution la plus simple est d'avoir, dans un coin, un "drapeau" ...
c-à-d une cellule qui prend la valeur 0 ou 1 ... qui te permet un test
dans
ta macro ... activée ou pas ...

A +
Avatar
Daniel.C
Bonjour.
En tête de la macro B, mets :
Application.EnableEvents = False
et à la fin :
Application.EnableEvents = True
Cordialement.
Daniel

Bonjour,
J'ai établi une macro événementielle de type "Worksheet_Change" qui
s'active pour toute modification dans une feuille de calcul. Cette
macro A appelle selon les circonstances une autre macro B qui s'active
et modifie en conséquence la même feuille de calcul. Or, pour tout
changement de la macro B dans ladite feuille de calcul, cela réactive
la macro A.
Comment désactiver momentanément au sein de la macro B le recours à la
macro A lors de tout changement de la feuille de calcul ?
Merci mille fois.


Avatar
Versatile
On 21 avr, 17:05, Carim wrote:
On Apr 21, 4:49 pm, Versatile wrote:

> Bonjour,
> J'ai établi une macro événementielle de type "Worksheet_Change" q ui
> s'active pour toute modification dans une feuille de calcul. Cette
> macro A appelle selon les circonstances une autre macro B qui s'active
> et modifie en conséquence la même feuille de calcul. Or, pour tout
> changement de la macro B dans ladite feuille de calcul, cela réactive
> la macro A.
> Comment désactiver momentanément au sein de la macro B le recours à la
> macro A lors de tout changement de la feuille de calcul ?
> Merci mille fois.

La solution la plus simple est d'avoir, dans un coin, un "drapeau" ...
c-à-d une cellule qui prend la valeur 0 ou 1 ... qui te permet un test
dans
ta macro ... activée ou pas ...

A +



Oui, c'est ce que j'ai fait. Mais je ne trouve pas cela très élégant.
Et cela bouffe des ressources car la macro A s'active quand même, même
si grâce au 0 ou au 1 elle ne fait rien.
Merci quand même !
Avatar
Versatile
On 21 avr, 17:16, Daniel.C wrote:
Bonjour.
En tête de la macro B, mets :
Application.EnableEvents = False
et à la fin :
Application.EnableEvents = True
Cordialement.
Daniel



Ah ok, je savais que cela existait. Ça marche, merci !
Avatar
JCB D'ARMENTIERE
On Tue, 21 Apr 2009 09:26:36 -0700 (PDT), Versatile
wrote:

On 21 avr, 17:16, Daniel.C wrote:
Bonjour.
En tête de la macro B, mets :
Application.EnableEvents = False
et à la fin :
Application.EnableEvents = True
Cordialement.
Daniel



Ah ok, je savais que cela existait. Ça marche, merci !



Attention toutefois, chez moi j'ai du mettre la ligne a true dès le
debut du code car en cas de plantage au moment où c'est a false, ca
reste a false tant qu'il ne trouve pas de true ou reouverture de
excel/classeur (je sais plus lequel)
Avatar
Daniel.C
Exact. Une bonne pratique consiste à écrire :

Sub test()
On Error GoTo Fin
Application.EnableEvents = False
'...
'code
'...
Fin:
If Err.Number <> 0 Then
MsgBox "Erreur : " & Err.Number
Err.Clear
End If
Application.EnableEvents = True
End Sub

Daniel

On Tue, 21 Apr 2009 09:26:36 -0700 (PDT), Versatile
wrote:

On 21 avr, 17:16, Daniel.C wrote:
Bonjour.
En tête de la macro B, mets :
Application.EnableEvents = False
et à la fin :
Application.EnableEvents = True
Cordialement.
Daniel



Ah ok, je savais que cela existait. Ça marche, merci !



Attention toutefois, chez moi j'ai du mettre la ligne a true dès le
debut du code car en cas de plantage au moment où c'est a false, ca
reste a false tant qu'il ne trouve pas de true ou reouverture de
excel/classeur (je sais plus lequel)