Désactiver temporairement une procédure Worksheet_Change

MICHIS

XLDnaute Nouveau
Je ne suis pas arrivé à me présenter dans le logiciel EXCEL Downloads :
Je suis un nouvel adhérent "retraité" bénévole qui programme VBA Excel, pour son plaisir et pour des associations locales aussi "bénévoles"
Voici mon problème :
J’ai regardé attentivement les explications données sur la procédure comme celle-ci :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B4")) Is Nothing Then
Call RenseignerBonNumero
End If
End Sub
Bien pratique pour déclenche la procédure RenseignerBonNumero quand on clique sur la cellule B4
Les explications données plus loin sur Target ne sont pas faciles à « digérer ».
Je voudrais maintenant, dans la même procédure : RenseignerBonNumero pouvoir désactiver (puis réactiver) le click B4, car lorsque je fais des opérations sur B4, je sors automatiquement de la procédure !!
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Michis, et bienvenu sur XLD,
Vous devriez lire notre charte ( Lien ), vous y liriez :
1.3 – Lorsqu’on rentre sur un fil, comme dans la vie de tous les jours, on est poli en disant « Bonjour ».
Ensuite je ne comprends pas :
car lorsque je fais des opérations sur B4, je sors automatiquement de la procédure !!
Qu'entendez vous par là ? C'est la fonction même de Worksheet_Change.
Lorsque vous modifiez la valeur en B4 alors vous exécutez RenseignerBonNumero.
Vous sortez de quelle procédure ?
Ou mieux : qu'espérez vous exactement comme comportement lorsque vous modifiez B4 ?
Cependant attention, si dans RenseignerBonNumero vous modifiez B4 sans sécurité alors vous allez de nouveau relancer la procédure Worksheet_Change. ( ré entrance )
 

youky(BJ)

XLDnaute Barbatruc
Bonjour,
Pour justement ne pas relancer le Change de B4
application.EnableEvents=True 'on neutralise les événements
'on modifie B4
'attention le target si on sort de worksheet_change sera perdu
'il faudra utiliser Selection à la place
application.EnableEvents=False 'bien remettre les événements sinon plus de change

Bruno
 

MICHIS

XLDnaute Nouveau
Bonjour, J'ai bien utilisé application.EnableEvents=True dans la macro RenseignerBonNnumero et j'ai pu faire alors la modification souhaitée dans cette macro : supprimer la valeur de B4 pour rechercher un numéro VALCELL dans une colonne NUMAX, (voir fichier). Mais où ?? et dans quelle macro ??, faut-il que je réintroduise application.EnableEvents=False pour, (comme vous dites) .... "relancer le change" ???
J'avoue ne pas bien maîtriser le Change et la Target !:oops:
 

Pièces jointes

  • Mise au point nouveau recu pour Béard A.xlsm
    21.8 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Michis, Youky,
Faites du pas à pas, c'est assez parlant.
Vous bouclez, c'est une ré entrance comme dit au post #2.
20230224_012036.gif

Ou éviter ça il faut interdire les events :
VB:
Application.EnableEvents = False
 On touche à B4.
Application.EnableEvents = True
Si on ne prends pas cette précaution, dès qu'on touche à B4 on retourne sur Worksheet_change.
 

MICHIS

XLDnaute Nouveau
Bonjour. Je m’excuse de répondre aussi tardivement au problème d’utilisation des commandes Application.enableEvents=True ou False dans la macro Private Sub Worksheet_Change(ByVal Target As Range). Mais, dans ma macro personnelle, j’avais aussi … d’autres problèmes à résoudre. Pour le moment ça marche mais… j’aurai sûrement le plaisir de vous poser d’autres difficultés de programmation en Excel VBA. Merci … pour le moment !!
 

MICHIS

XLDnaute Nouveau
Bonjour. Malgré les réponses très utiles de Youky et Sylvanu, je n'arrive pas à maîtriser complétement l'utilisation de cette procédure :
Private Sub Worksheet_Change(Byval Target As Range)
If Not Intersect(Target,Range () is nothing then
Call RenseignerBonNumero
End if
End sub
Cette macro Private Sub Worksheet_Change(Byval Target As Range) devrait se déclencher automatiquement dès que je clique ENTER sur la cellule vide B189 de la feuil2023zz (voir exemple ci-joint) et enchaîner ensuite sur la macro appelante RenseignerBonNumero. Ce n'est pas le cas !! Elle ne se déclenche que... parfois ??? .... sans savoir pourquoi !!
Ou doit se situer la macro spéciale Private Sub Worksheet_Change(Byval Target As Range) pour que ça marche ? -Dans Feuil1 (2023zz) en (Worksheet) (Change) ?
-Dans ThisWorkbook en (Général) (Worksheet_Change) ?
-Dans ThisWorkbook en (Général) (Déclarations)? …..etc…
ou bien y-a-t'il un autre problème quelque part ???
Merci de votre réponse
 

Pièces jointes

  • TABLEAU Membres 2023zz.xlsm
    95.9 KB · Affichages: 3

Statistiques des forums

Discussions
315 135
Messages
2 116 618
Membres
112 814
dernier inscrit
Pierre43