Conflit entre 2 fonctions somme
Fermé
Mag86
-
29 janv. 2013 à 11:58
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 - 4 févr. 2013 à 00:26
eriiic Messages postés 24597 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 septembre 2024 - 4 févr. 2013 à 00:26
A voir également:
- Conflit entre 2 fonctions somme
- Formule somme excel colonne - Guide
- Somme si couleur - Guide
- 2 ecran pc - Guide
- Word numéro de page 1/2 - Guide
- 2 comptes whatsapp - Guide
2 réponses
Re-bonjour à tous!
Apparemment je ne suis pas la seule à ne pas m'expliquer ce phénomène... ;)!
J'espère que tu trouveras ta réponse Mag86!
Apparemment je ne suis pas la seule à ne pas m'expliquer ce phénomène... ;)!
J'espère que tu trouveras ta réponse Mag86!
eriiic
Messages postés
24597
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
22 septembre 2024
7 235
Modifié par eriiic le 4/02/2013 à 00:32
Modifié par eriiic le 4/02/2013 à 00:32
Bonjour,
comment peux-tu appeler une fonction personnalisée Private à partir d'une feuille ?
Si elle est Private elle ne peut être appelée que du module.
Tu as mis Application.Volatile, ta fonction est donc recalculée à chaque modification dans ton classeur.
Attention, ça peut devenir très lourd en ressources, parfois il vaut mieux ne pas le mettre et faire F9 sur la feuille quand on change les couleurs. Un changement de valeur dans PlageSom la ré-évaluera toujours.
Elle est donc recalculée sur une saisie en Feuil2.
Function SommeY()
....
... And ActiveSheet.Cells(Cel.Row, 12)
Avec ActiveSheet tu es sûre de regarder sur la feuille active : Feuil2 qui a sûrement d'autres valeurs que ValTxt en colonne K
Mettre Cells(Cel.Row, 12) n'est pas mieux puisque c'est par défaut la feuille active.
Il faut que tu utilises la colonne K de la feuille d'appel de la fonction, soit en la passant en paramètre, soit en la calculant en relatif par rapport à ta cellule d'appel.
Essaie avec :
Au passage déposer un classeur exemple pour tes questions...
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
comment peux-tu appeler une fonction personnalisée Private à partir d'une feuille ?
Si elle est Private elle ne peut être appelée que du module.
Tu as mis Application.Volatile, ta fonction est donc recalculée à chaque modification dans ton classeur.
Attention, ça peut devenir très lourd en ressources, parfois il vaut mieux ne pas le mettre et faire F9 sur la feuille quand on change les couleurs. Un changement de valeur dans PlageSom la ré-évaluera toujours.
Elle est donc recalculée sur une saisie en Feuil2.
Function SommeY()
....
... And ActiveSheet.Cells(Cel.Row, 12)
Avec ActiveSheet tu es sûre de regarder sur la feuille active : Feuil2 qui a sûrement d'autres valeurs que ValTxt en colonne K
Mettre Cells(Cel.Row, 12) n'est pas mieux puisque c'est par défaut la feuille active.
Il faut que tu utilises la colonne K de la feuille d'appel de la fonction, soit en la passant en paramètre, soit en la calculant en relatif par rapport à ta cellule d'appel.
Essaie avec :
Function SommeY(ValTxt, PlageSom As Range) As Double Dim Cel As Range Application.Volatile For Each Cel In PlageSom If Cel.Interior.Pattern <> xlGray25 And Cel.Offset(0, 12 - Cel.Column) = ValTxt Then ' sh.Cells(Cel.Row, 12) = ValTxt Then SommeY = SommeY + Cel End If Next End Function
Au passage déposer un classeur exemple pour tes questions...
eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.