Stopper momentanément une Worksheet_Change

Le
Versatile
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 à l=
a
macro A lors de tout changement de la feuille de calcul ?
Merci mille fois.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Carim
Le #19160291
On Apr 21, 4:49 pm, Versatile
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 +
Daniel.C
Le #19160421
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.


Versatile
Le #19160411
On 21 avr, 17:05, Carim
On Apr 21, 4:49 pm, Versatile
> 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 !
Versatile
Le #19160901
On 21 avr, 17:16, Daniel.C
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 !
JCB D'ARMENTIERE
Le #19161061
On Tue, 21 Apr 2009 09:26:36 -0700 (PDT), Versatile

On 21 avr, 17:16, Daniel.C
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)
Daniel.C
Le #19161471
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

On 21 avr, 17:16, Daniel.C
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)


Publicité
Poster une réponse
Anonyme