Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[vba] Calcul de la moyenne de résultats filtrés

2 réponses
Avatar
Apprenti.xls
Bonjour à tous !

Nouvelle interrogation, car j'apprends, j'apprends. Je trouve les fonctions
du vba fabuleuses par leurs possibilités, mais là je sèche, car je débute
...
Voici le projet : je souhaiterais renvoyer par msgbox la moyenne des données
d'une colonne en filtrant la base sur un second champ.
J'ai bien essayé tout seul, mais, pffttt, il me manque encore sérieusement
certaines notions, dirait-on ...

Voici ce que j'ai déjà conçu pour renvoyer une moyenne d'une plage non
filtrée, et je n'y arrive même pas :

Sub Résultat_moyen()
Dim Plage As String, Moyenne As Variant
Plage = "Situation!" & Range("Données").Address
Moyenne = WorksheetFunction.Average(Evaluate("&Plage&"))
MsgBox Moyenne
End Sub

Ensuite, je vois bien quelquechose comme la définition d'un
Selection.SpecialCells(xlCellTypeVisible).Select
ou bien avec sumprod en fonction d'une variable x ?

Si l'une ou l'un d'entre vous pouvait se pencher sur le problème et
m'apporter un début de solution, celà m'aiderait grandement.
Merci d'avance !

2 réponses

Avatar
michdenis
Bonjour Apprenti.xls,

En supposant que ta plage de cellules ait déjà reçu le filtre que tu veux,

Remplace la lettre "B" par la lettre de ta colonne sur laquelle tu veux
effectuer la moyenne.

Ceci suppose que ta plage a déjà reçu le flitre désiré.

MsgBox Application.Subtotal(1, Range("B" & _
Range("_FilterDataBase").Row).SpecialCells(xlCellTypeVisible))


Salutations!






"Apprenti.xls" <apprenti.xls(a supprimer)@voila.fr> a écrit dans le message de news: %
Bonjour à tous !

Nouvelle interrogation, car j'apprends, j'apprends. Je trouve les fonctions
du vba fabuleuses par leurs possibilités, mais là je sèche, car je débute
...
Voici le projet : je souhaiterais renvoyer par msgbox la moyenne des données
d'une colonne en filtrant la base sur un second champ.
J'ai bien essayé tout seul, mais, pffttt, il me manque encore sérieusement
certaines notions, dirait-on ...

Voici ce que j'ai déjà conçu pour renvoyer une moyenne d'une plage non
filtrée, et je n'y arrive même pas :

Sub Résultat_moyen()
Dim Plage As String, Moyenne As Variant
Plage = "Situation!" & Range("Données").Address
Moyenne = WorksheetFunction.Average(Evaluate("&Plage&"))
MsgBox Moyenne
End Sub

Ensuite, je vois bien quelquechose comme la définition d'un
Selection.SpecialCells(xlCellTypeVisible).Select
ou bien avec sumprod en fonction d'une variable x ?

Si l'une ou l'un d'entre vous pouvait se pencher sur le problème et
m'apporter un début de solution, celà m'aiderait grandement.
Merci d'avance !
Avatar
Apprenti.xls
Pffffftttttttt ...
Décidément, il va falloir sérieusement que j'étudie ...
En une ligne, tu me trouves la solution.
Merci Denis ! Merci, une fois encore ...
J'apprends, j'apprends ...
À bientôt !

"michdenis" a écrit dans le message de news:
eSN%
Bonjour Apprenti.xls,

En supposant que ta plage de cellules ait déjà reçu le filtre que tu veux,

Remplace la lettre "B" par la lettre de ta colonne sur laquelle tu veux
effectuer la moyenne.

Ceci suppose que ta plage a déjà reçu le flitre désiré.

MsgBox Application.Subtotal(1, Range("B" & _
Range("_FilterDataBase").Row).SpecialCells(xlCellTypeVisible))


Salutations!