charles_lyon
XLDnaute Nouveau
Bonjour,
Je vous soumets un problème auquel je n'ai pas trouvé de réponse malgré de nombreuses recherches sur la toile.
J'ai un fichier avec :
- des plages nommées
- des fonctions personnalisées imbriquées
- plusieurs centaines de lignes de calcul
Le recalcul complet nécessite l'appel de Application.CalculateFull par le biais d'un bouton.
A l'issu du recalcul les résultats sont corrects.
Par contre quand deux fichiers sont ouverts, appelons les calcul1 et calcul2,
lorsque l'on provoque le recalcul du fichier calcul1 le fichier calcul2 est modifié et présente des résultats erronnés,
alors qu'il n'y a aucune liaison entre les 2 fichiers.
A la réflexion les seuls points communs entre les 2 fichiers sont les cellules et les plages de cellules nommées.
Effectivement le problème semble survenir dans l'évaluation des cellules nommées.
J'ai recréé ce phénomène sur 2 fichiers très simples que je joints.
Avec une cellule nommée et une fonction personnalisée.
Dans la fonction il y a une boucle de temporisation pour avoir le temps de visualiser le phénomène.
Pour tester :
- ouvrir les 2 fichiers
- selectionner test1 , entrer 100, le résultat 100 s'affiche
- selectionner test2 , entre 1000, le résultat 1000 s'affiche
- selectionner test1, et là vous aurez le temps de voir que le résultat qui s'affiche est 1000, avant de se recalculer à 100 !!!
Dans mon fichier réél, comme le temps de calcul est de 20 à 40 secondes, lorsque l'utilisateur ouvre le 2 ème fichier, et clique sur une cellule, ce qui bloque le calcul, il voit des résultats erronnés ...
La seule solution que j'ai trouvé est de mettre un application.calculate dans le sub activate du worksheet.
Cette solution provoque le recalcul avant l'affichage du fichier.
Cette solution est très pénalisante en temps, et ce n'est pas du tout satisfaisant de devoir recalculer un fichier qui était correct quand on l'a fermé, et qui se trouve modifié par l'ouverture d'un autre fichier.
Si vous avez une idée pour régler simplement ce problème, je suis preneur ^^
Charles
Je vous soumets un problème auquel je n'ai pas trouvé de réponse malgré de nombreuses recherches sur la toile.
J'ai un fichier avec :
- des plages nommées
- des fonctions personnalisées imbriquées
- plusieurs centaines de lignes de calcul
Le recalcul complet nécessite l'appel de Application.CalculateFull par le biais d'un bouton.
A l'issu du recalcul les résultats sont corrects.
Par contre quand deux fichiers sont ouverts, appelons les calcul1 et calcul2,
lorsque l'on provoque le recalcul du fichier calcul1 le fichier calcul2 est modifié et présente des résultats erronnés,
alors qu'il n'y a aucune liaison entre les 2 fichiers.
A la réflexion les seuls points communs entre les 2 fichiers sont les cellules et les plages de cellules nommées.
Effectivement le problème semble survenir dans l'évaluation des cellules nommées.
J'ai recréé ce phénomène sur 2 fichiers très simples que je joints.
Avec une cellule nommée et une fonction personnalisée.
Dans la fonction il y a une boucle de temporisation pour avoir le temps de visualiser le phénomène.
Pour tester :
- ouvrir les 2 fichiers
- selectionner test1 , entrer 100, le résultat 100 s'affiche
- selectionner test2 , entre 1000, le résultat 1000 s'affiche
- selectionner test1, et là vous aurez le temps de voir que le résultat qui s'affiche est 1000, avant de se recalculer à 100 !!!
Dans mon fichier réél, comme le temps de calcul est de 20 à 40 secondes, lorsque l'utilisateur ouvre le 2 ème fichier, et clique sur une cellule, ce qui bloque le calcul, il voit des résultats erronnés ...
La seule solution que j'ai trouvé est de mettre un application.calculate dans le sub activate du worksheet.
Cette solution provoque le recalcul avant l'affichage du fichier.
Cette solution est très pénalisante en temps, et ce n'est pas du tout satisfaisant de devoir recalculer un fichier qui était correct quand on l'a fermé, et qui se trouve modifié par l'ouverture d'un autre fichier.
Si vous avez une idée pour régler simplement ce problème, je suis preneur ^^
Charles