Bonjour,
j'ai développé une macro Excel pour un client.
La macro va calculer les positions des valeurs applicables et en faire la somme (j'ai une colonne qui me permet de savoir si le critère de la ligne est applicable ou pas)
A la fin on divise la somme des valeurs applicables par le nombre de valeurs applicables.
Donc avec le tableau ci-dessous en supposant que tous les critères soient applicables :
La macro fait (4+5+3+4)/4. Si le critère 2 n'était pas applicable, la macro ferait (4+3+4)/3
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ; ; ;X; ; ; ; ;X ; ;X; ; ; ; ;X;
Ma macro fonctionne très bien mais je me demande s'il y a des bonnes pratiques que je ne respecterais pas ou si certains d'entre vous auraient fait autrement.
Merci pour vos avis
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 ' Cette fonction calcule la somme des positions des élements "val" ' dans le tableau Rng, à condition que CritNA soit vide ' et divise le résultat par CritNB, nombre de critères applicables Public Function MoyenneConditionnelle(Rng As Range, CritNA As Range, val As String, CritNb As Variant) As Single MoyenneConditionnelle = 0 ' position de "val" dans la ligne Dim that As Integer ' Nombre de lignes du tableau passé en parametre Dim NbLigne As Integer NbLigne = Rng.Rows.Count For i = 1 To NbLigne If IsEmpty(CritNA(i)) Then that = Application.WorksheetFunction.Match(val, Rng.Rows(i)) MoyenneConditionnelle = MoyenneConditionnelle + that End If Next MoyenneConditionnelle = MoyenneConditionnelle / CritNb End Function







Répondre avec citation




Partager