Interférence entre une fonction personnalisée et Worksheet_Change

  • Initiateur de la discussion Initiateur de la discussion i0raek
  • Date de début Date de début

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 !

i0raek

XLDnaute Occasionnel
Bonjour Forum !

Voici mon problème :
j'ai créé une fonction personnalisée que j'utilise dans une feuille soumise à une procédure Worksheet_Change.

Lorsque j'exécute ma procédure en pas à pas, je m'apperçois que celle-ci actualise un paramètre de la fonction ce qui conduit la macro à exécuter son code (de la fonction). Et c'est à ce moment que mon problème apparaît : à la fin du code de la fonction, la macro ne retourne pas dans la procédure Worksheet_Change et celle-ci ne s'exécute donc pas entièrement... 😡

En espérant avoir était suffisament clair... 😱

Est ce que quelqu'un aurait une idée ???

Merci d'avance pour votre aide !
 
Re : Interférence entre une fonction personnalisée et Worksheet_Change

Cela fonctionne mais par un contournement du problème et non une résolution...

Et compte tenu que le fichier doit vraiment être fiable, cette solution me pose un problème...
 
Re : Interférence entre une fonction personnalisée et Worksheet_Change

Re,

Bonjour,
pour effectuer l'évènement avant le calcul de la fonction, tu peux rajouter une valeur booléenne.
Si cette valeur est à false, tu quittes la fonction, l'évènement se déroule donc, tu mets la valeur à true, puis application.calculate, la fonction se déroule, tu mets la valeur à false en fin de fonction.
Un peu tiré par les cheveux, mais ....

Le problème c'est que la fonction s'exécute au moindre changement d'une cellule même si celle-ci n'a aucun lien avec les cellules contenant la formule ! Du coup, le code devient très lent du fait des boucles nombreuses et inutiles qu'il réalise...
 
Re : Interférence entre une fonction personnalisée et Worksheet_Change

Re

Je constate effectivement que la fonction precede le worksheet_change mais je ne saisis pas pourquoi cela posait probleme (sauf si Worksheet_change exploitait la cellule utilisant la fonction auquel cas la solution serait d'affecter a la cellule en question le resultat de la fonction)
par ailleurs ton fichier est une excellente demonstration de l'uitilité du flag
si tu otes les lignes relatives au flag et que l'on modifie B15 on tourne en rond jusqu'a ce que la fonction soit incapable d'afficher le resultat
 
Re : Interférence entre une fonction personnalisée et Worksheet_Change

Re,

le problème c'est que la fonction se met en route dès que l'on rentre une donnée dans une cellule et l'utilisation du fichier devient difficile à cause de la lenteur de ce dernier...

un autre bug que je viens de constater est également assez génant :
si on ouvre le fichier exemple.xls et un classeur vierge, que l'on met une balise sur le début du code de la fonction puis que l'on modifie une cellule du classeur vierge en entrant une donnée quelconque (avec ou sans formule) la fonction s'active !!!

Comment cela se fait-il ??? les deux classeurs n'ont aucun liens, il n'y a pas de code vba sur le classeur vierge...
 
Re : Interférence entre une fonction personnalisée et Worksheet_Change

Re

Effectivement il semble y avoir un truc !!
Même avec
Option Private Module
Private Function
la fonction effectue son calcul des qu'une cellule quelconque du fichier ou d'un autre (ouvert ) est modifiée contredisant le
tiré de l'aide:
l'instruction Option Private Module peut être utilisée pour restreindre la visibilité interprojets. Bien que Visual Basic autorise le chargement de plusieurs projets, les références entre projets ne sont jamais autorisées au sein de Visual Basic.
Je me demande même si une fois le fichier fermé la fonction ne calcule pas encore (Lol)

Edit : je viens de verifier , cela ne se produit pas avec une 2eme instance d'EXCEL
 
Re : Interférence entre une fonction personnalisée et Worksheet_Change

Aurais-je dévoilé au grand jour un bug d'excel ??? 😀

Toute plaisanterie mise à part, je n'y comprend plus rien... et ne vois pas l'ombre d'une solution à l'horizon... 🙁

En tout cas merci pour ton aide !!!
S'il te viens une autre idée... je suis près à tout essayer !!!

Merci encore !
 
Re : Interférence entre une fonction personnalisée et Worksheet_Change

Re,

je viens de constater que lorsque l'on change le nom de la fonction directement, celle-ci retourne la valeur nulle... peut être une piste non ?

En fait pour changer le nom de la fonction et avoir un résultat correct, il faut recréer la fonction avec un nom différent et ensuite recréer la formule pour que cela fonctionne...
 
Dernière édition:
Re : Interférence entre une fonction personnalisée et Worksheet_Change

Re,

Je pense que le nom de la fonction n'est pas vraiment une piste... par contre, lorsque les cellules qui utilisent la fonctions ne sont pas utilisée par d'autre cellule dans d'autres calculs et que le résultat de la fonction n'est pas inclus dans un calcul alors tout va bien...

Quel est l'intérêt de créer une fonction dans ce cas la... 😕
 
- 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
508
Retour