Fonction et autres classeurs

goldenboy

XLDnaute Occasionnel
Bonjour a tous,

Je viens vers vous car je rencontre un petit problème avec une fonction, qui s'exécute même sur d'autre classeurs.

Par exemple, dans le classeur1, j'ai créé une fonction de calcul de jour ouvrés.
Celle ci me permet, dans le classeur1 d'écrire la formule suivante =NbJourOuvres(arg1;arg2)

Quand j'ouvre le classeur2, et si le classeur1 est également ouvert, lorsque je lance une macro du classeur2, la fonction du classeur1 est toujours exécutée. Comme ci le classeur1 était recalculé.
Cela ralenti fortement la macro du classeur2.

Est-il possible de bloquer l'exécution de la fonction au classeur1?

Ma fonction est dans un module standard du classeur1. J'ai essayé "private function" mais ça ne change rien.

Si quelqu'un a une solution, je suis preneur.

Par avance, je vous remercie de votre aide.
 

goldenboy

XLDnaute Occasionnel
Re : Fonction et autres classeurs

Bonjour Pierrot,

ça fonctionne.

Mais ce n'est pas pratique. Je m'explique.

Le classeur1 est constamment ouvert. (C'est mon outil de travail principal)
Et j'utilise un nombre conséquent de classeur2 contenant des macros. celà veut dire qu'il faut que je modifie les macros de tous les autres classeurs. ET, je ne peux pas non plus modifier des macros qui ne m'apparatiennent pas. :(
Actuellement je ferme mon classeur1 et le rouvre après avoir travaillé sur un autre classseur.

Si quelqu'un à une solution pour faire en sorte que ma fonction ne s'execute qu'a l'utilisation du classeur1, je suis toujours preneur.

Merci à tous.
 

Pierrot93

XLDnaute Barbatruc
Re : Fonction et autres classeurs

Bonjour,

essaye peut être ceci, à placer dans le module "thisworkbook" du classeur où se trouve ta fonction :
Code:
Option Explicit
Private Sub Workbook_Activate()
Application.Calculation = xlCalculationAutomatic
End Sub
Private Sub Workbook_Deactivate()
Application.Calculation = xlCalculationManual
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.Calculation = xlCalculationAutomatic
End Sub

A voir si cela peut suffire... sinon regarder peut être du coté de l'événement "calculate" en fonction des critères permettant de déterminer se qui l'a déclenché... perso peux pas tester dans tes conditions d'utilisation...

bonne journée
@+
 

goldenboy

XLDnaute Occasionnel
Re : Fonction et autres classeurs

Bonjour Pierrot,

Ton idée est bonne, mais sur les classeurs ou j'ai besoin du calcul automatique, aie !!!
J'ai testé pour savoir et ca fait mal !!! lol

Par contre je viens de trouver une solution :

- tester le nom du classeur actif au début de ma fonction et de sortir si ce n'est pas mon classeur 1.

Private function(arg1,arg2)
if activeworkbook.name <> thisworkbook.name then exit function
ma fonction...
end function.

Pour le moment sa semble convenir. :)
 

Discussions similaires

Réponses
16
Affichages
548

Statistiques des forums

Discussions
312 396
Messages
2 088 053
Membres
103 708
dernier inscrit
Sisy