Mariage de WorksheetFunction.AverageIfs et variables tableau

Bonsoir à tous

je souhaite faire fonctionner la fonction WorksheetFunction.AverageIfs avec des variables tableau.

Je sais faire fonctionner chacun séparément, mais le mariage des 2 ne fonctionne pas avec mon code. Il me retourne l'erreur "Objet requis".

Sur la ligne MoyenneSiEns, le code fonctionne

Sur la ligne MOY il plante avec l'erreur "Objet requis"

Ci-dessous mon code :

Sub test_2()

Dim TABLEAU()

Dim MoyenneSiEns As Double

Dim MOY As Double

ReDim TABLEAU(11, 2)

TABLEAU = Range("A2:C11").Value

MoyenneSiEns = Application.WorksheetFunction.AverageIfs(Range("C:C"), Range("A:A"), "=2")

MOY = Application.WorksheetFunction.AverageIfs((Application.Index(TABLEAU, Evaluate("Row(2:" & 9 & ")"), 2)), (Application.Index(TABLEAU, Evaluate("Row(2:" & 9 & ")"), 0)), 2)

End Sub

Merci de votre

Teckno

Bonjour Teckno,

voici un exemple,

dit moi si ça convient ?

Bonsoir à tous,

Exemple pour la moyenne de la 1ère colonne de la ligne 2 à la dernière ligne.

MOY = Application.WorksheetFunction.Average(Application.Index(TABLEAU, Evaluate("row(2:" & UBound(TABLEAU, 1) & ")"), 1))

La moyenne des 2 premières colonnes.

MOY = Application.WorksheetFunction.Average(Application.Index(TABLEAU, Evaluate("row(2:" & UBound(TABLEAU, 1) & ")"), Array(1, 2)))

klin89

Merci i2100 et Klin89 pour vos réponses,

cependant ce n'est pas ce que je cherche exactement.

Il est important que le résultat soit trouvé à l’intérieur des variables Tableau, d'une part, et d'autre part, de le faire avec AverageIfs ( Moyenne.SI.Ens); résultat qui sera dans ma variable MOY, dans mon exemple.

Si vous avez d'autres idées, je suis preneur.

Teckno

Bonjour Teckno, Klin89,

Ce n'ai pas possible avec une variable tableau (vba),

l'autre solution est une boucle,

For i = LBound(TABLEAU) To UBound(TABLEAU)
 If TABLEAU(i, 1) = 2 Then n = n + 1: s = s + TABLEAU(i, 3)
Next
MOY = s / n

Merci i20100 pour ta solution qui contourne mon problème.

Pourquoi ce code fonctionne avec Application.WorksheetFunction.Average et pas avec Application.WorksheetFunction.AverageIfs :

MOYENNE = Application.WorksheetFunction.Average(Application.Index(TABLEAU, Evaluate("row(2:" & UBound(TABLEAU, 1) & ")"), 1))

MOYENNE.SI.ENS = Application.WorksheetFunction.AverageIfs((Application.Index(TABLEAU, Evaluate("Row(2:" & 9 & ")"), 2)), (Application.Index(TABLEAU, Evaluate("Row(2:" & 9 & ")"), 0)), 2)

re,

Pourquoi ce code fonctionne avec Application.WorksheetFunction.Average et pas avec Application.WorksheetFunction.AverageIfs :

en réalité aucune des deux ne fonctionne,

sur le code suivant, et selon la description de la fonction INDEX, le résultat devrait être égale à la moyenne des données des cellules A2:A11

MOYENNE = Application.WorksheetFunction.Average(Application.Index(TABLEAU, Evaluate("row(2:" & UBound(TABLEAU, 1) & ")"), 1))

mais ce n'ai pas ça, le résultat est identique à la moyenne des données des cellules A2:C11

MOYENNE = Application.WorksheetFunction.Average(TABLEAU)

Merci i20100 pour tes explications, j'ai programmé suivant le petit bout de code que tu m'as proposé, ça marche bien sur et le temps de traitement est acceptable.

Merci encore, bonne soirée et au plaisir de te lire sur d'autres postes

Rechercher des sujets similaires à "mariage worksheetfunction averageifs variables tableau"