Interférence entre Worksheet_Calculate() & Worksheet_Change(ByVal target As Range)

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Supporter XLD
Bonsoir,

Dans le module d'une feuille du classeur il y a un Worksheet_Calculate() et Worksheet_Change(ByVal target As Range).
Tant que le Worksheet_Calculate() n'y était pas, tout marchait correctement. Comment faire pour que Worksheet_Calculate() et Worksheet_Change(ByVal target As Range) n'interfèrent point ?
 
Re : Interférence entre Worksheet_Calculate() & Worksheet_Change(ByVal target As Rang

Aie, aie, aie... à mon avis, supprimer Calculate car Change entraine Calculate qui lui peut modifier une autre valeur de la feuille qui recalcule,etc... ==> plantage.
Worksheet_Calculate n'est pas maitrisable car on à jamais pu savoir réellement dans quel ordre Excel recalcule les cellules.

S'il y a une explication logique, je suis preneur.
A+
Robert
 
Re : Interférence entre Worksheet_Calculate() & Worksheet_Change(ByVal target As Rang

Bonsoir Herdet,

Et bien, si tu as raison, mauvaise limonade. C'est un peu ce que je redoutais en ce qui concerne les limites du VBA pour M. Toutlemonde.
J'ai, sur une feuille une routine dans un "Worksheet_Change(ByVal target As Range)" qui marche très bien.
J'ai, sur une autre feuille une routine dans un "Worksheet_Calculate()" qui marche très bien.
Dans la même feuille je mets les 2 routines et c'est le bordel !
Quelle perte de temps...
¡Mejor hacerse muchas pajas!
 
Dernière édition:
Re : Interférence entre Worksheet_Calculate() & Worksheet_Change(ByVal target As Rang

Bonjour à tous,

peut être suspendre les procédures événementielles lors de l'exécution de l'une d'elle...
Code:
Application.EnableEvents = False
'ton code
Application.EnableEvents = True
bonne journée
@+
 
Re : Interférence entre Worksheet_Calculate() & Worksheet_Change(ByVal target As Rang

Bonjour Pierrot, Habitude,

Habitude, je n'a pas très bien compris ta question.

Pierrot, "Worksheet_Calculate()" commence bien par "Application.EnableEvents = False" et finit par "Application.EnableEvents = True"
Ce qui, théoriquement, devrait court-circuiter "Worksheet_Change(ByVal target As Range)".
 
Re : Interférence entre Worksheet_Calculate() & Worksheet_Change(ByVal target As Rang

Bonjour à tous,

A mon avis, il serait tellement plus simple d'avoir un bout du code avec les deux routines en question, pour se lancer, découvrir les erreurs et y remédier !
D'après ce que j'ai constaté, VBA traite en premier la routine "Change" et après "Calculate"

Bien cordialement

René
 
Dernière édition:
Re : Interférence entre Worksheet_Calculate() & Worksheet_Change(ByVal target As Rang

Bonjour à tous,

Dans la Worsheet_Change mettre en début de macro :

Code:
Application.Calculation = xlCalculationManual
et ne pas oublier à la fin :

Code:
Application.Calculation = xlCalculationAutomatic
A+
 
Re : Interférence entre Worksheet_Calculate() & Worksheet_Change(ByVal target As Rang

Bonsoir à tous,

Merci pour vos interventions.

Mic 13710 : j'ai essayé et c'est toujours le bordel !

néné06 : je finirai par envoyer un bout de code, mais, auparavant, il faudra que j'allège mon application car sinon ça risque de vous prendre la tête. Au fait néné, savais-tu qu'ici, en Uruguay, ils font de la socca qu'ils appellent fainá. C'est de la socca en moins bon, épaisse, un peu mouligasse et coupée en carrés (oh horreur !), et ils sont persuadés qu'ils l'ont inventée... Enfin, le poivre, ici, n'est pratiquement utilisé que pour le fainá. Nunca pimienta en el asado, porque el asado se hace con sal y punto!

job : j'ai essayé et c'est toujours le bordel !

Bon, j'ai une petite idée derrière la tête. Je la fais mijoter et je la poste.
 
Re : Interférence entre Worksheet_Calculate() & Worksheet_Change(ByVal target As Rang

Bonjour Pierrot, Habitude,

Habitude, je n'a pas très bien compris ta question.

Pierrot, "Worksheet_Calculate()" commence bien par "Application.EnableEvents = False" et finit par "Application.EnableEvents = True"
Ce qui, théoriquement, devrait court-circuiter "Worksheet_Change(ByVal target As Range)".

De facon plus explicite...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.Name <> Me.Name Then Exit Sub
ton code...
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
9
Affichages
506
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Retour