Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Résult. fonct° instable si utilisée sur+de1feuille

brokengillou

XLDnaute Nouveau
Bonjour

J'ai réalisé une fonction qui renvoie le résultat attendu mais qui se comporte bizarrement lorsque on l'insère dans plusieurs feuilles.
En fait le contexte de calcul de la feuille visualisée précédament influe sur la feuille active qui renvoie des résultats abérants tant que l'on ne fait pas F9.
Merci d'avance pour votre aide?

Cordialement,

brokengillou [file name=MOY_PERSO_DEBUG.zip size=46349]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/MOY_PERSO_DEBUG.zip[/file]
 

Pièces jointes

  • MOY_PERSO_DEBUG.zip
    45.3 KB · Affichages: 26

pierrejean

XLDnaute Barbatruc
une solution (pas forcement la meilleure et qui ne resoud pas le probleme à l'origine)

Private Sub Worksheet_Activate()
ActiveSheet.Calculate
End Sub

pour les feuilles ou la moyenne est utilisée
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour brokengillou et pierrejean, bonjour à toutes et à tous

Le comportement de ta fonction est tout à fait normal compte tenu du codage.

En fait, il est très rare dans une formule personnalisée, de définir des références de cellules. Ce qui est fait dans cette fonction perturbe logiquement son fonctionnement. La concaténation de chaînes pour obtenir des adresses de cellules n'est pas mauvaise en soit, mais lorsqu'ensuite on met une intruction de ce type :

Som_Coe_N = Cells(Lig_Moy_N, Col_Coe_N).Value

La fonction prend la bonne référence mais dans la feuille active ! Ainsi, à chaque recalcul dans une feuille, les résultats sont faussés pour les cellules qui contiennent cette formule mais qui ne sont pas dans la feuille active.

Voici ta fonction (hors commentaires et déclarations de variables) réécrite en tenant compte de ce qui vient d'être dit :


En espérant avoir été assez clair :unsure:

A+
 
B

brokengillou

Guest
Re:Résult. fonct° instable si utilisée sur+de1feui

Bonsoir pierrejean et charly2

:woohoo:

Bravo , merci à charly2 pour sa correction, qui fonctionne parfaitement, je suis scié!
Encore une question...
'With Sheets(Cel_Moy_R.Parent.Name)
ç'est en rapport avec Application.Caller?
Quelle est la syntaxe pour qualifier les objets avec?

A+

brokengillou

NB je vais mieux dormir... jusqu'à ma prochaine gaffe...
 

Charly2

Nous a quittés en 2006
Repose en paix
Re:Résult. fonct° instable si utilisée sur+de1feui

re

Ça a effectivement un lien avec Application.Caller, mais comme il y a une référence de cellule en paramètre, je l'utilise pour identifier la feuille de calcul d'où est appelée la fonction. On peut aussi mettre cette instruction équivalente dans ton cas mais certainement préférable si tu fais référence à des cellules d'autres feuilles :

With Application.Caller.Parent

' Ton code

End With

A+
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…