Moyenne avec plage variable [Résolu]

Messages postés
2
Date d'inscription
dimanche 31 janvier 2010
Statut
Membre
Dernière intervention
17 juin 2010
- - Dernière réponse : us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
- 17 juin 2010 à 19:54
Bonjour à tous,

Je me permets de poster mon problème après de nombreuses heures de prise de tête et de recherche sur le net!!!
Je programme en VBA pour Excel et je souhaites créer une macro me permettant d'effectuer une moyenne sur une plage variable.
Je m'explique: Sur une feuille, j'insère des lignes après un traitement. Je ne connais pas le nombre de ligne que j'insère. Dans ma colonne A, j'ai le nom des mes produits et dans les autres des données correspondant à ces produits. Je fais un tri sur cette liste pour regrouper mon données par produits. Je souhaites par la suite faire la moyenne de mes données par type de produits puis copier cette moyenne dans une autre feuille.
J'ai essayé plusieurs solutions mes je galère.
Je pense qu'il faut que je créée une plage de cellules avec l variable comptant mon nombre de produits puis faire un average(plage) mais je n'y arrive pas!!!

J'espère que quelqu'un pourra m'éclairer!!

Merci d'avance!
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
2
Date d'inscription
dimanche 31 janvier 2010
Statut
Membre
Dernière intervention
17 juin 2010
3
Merci
Merci bien pour ces réponses!
Et effet quelques heures après avoir mis ce post, j'ai trouvé la fonction moyenne.si qui marche très bien!
Voici mon de code pour ceux qui veulent:

For iii = 2 To Sheets("Suivi de traitement").Range("A65536").End(xlUp).Row
'Moy Rebut
Sheets("Résultat").Range("C2").FormulaR1C1 = "=AVERAGEIF('Suivi de traitement'!RC[-2]:R[65536]C[-2],""BOIS ISOLANT"",'Suivi de traitement'!RC[-1]:R[65536]C[-1])"

Merci pour l'aide!

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 142 internautes nous ont dit merci ce mois-ci

Commenter la réponse de bobwind
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
0
Merci
Bonjour,

Et en utilisant les fonctions du tableur SOMME.SI et NB.SI, on obtient une "moyenne.si" qui doit répondre au problème posé.

Amicalement,
Us.
Commenter la réponse de us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
0
Merci
Pour une fonction personnalisée "moyennesi", voici le code que je viens de faire :

Function MoyenneSi(ByVal Plage As Range, ByVal Critere As String, Optional ByVal SommePlage As Range) As Double
' MOYENNE.SI

' Paramètres
    Dim Som As Double
    Dim Nb As Double

' Récupèrations des valeurs par Worksheetfunction
    Som = WorksheetFunction.SumIf(Plage, Critere, SommePlage)
    Nb = WorksheetFunction.CountIf(Plage, Critere)

' Renvoi
    MoyenneSi = Som / Nb

End Function


Ce code fonctionne à la manière de SOMME.SI

Exemple dans la barre de formule :

=MOYENNESI(plage, critère, [Somme_plage])

Amicalement,
Us.
Commenter la réponse de us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
0
Merci
D'ailleurs, cette instruction existe dans la version 2010 d'Excel... ce qui n'était pas le cas pour les versions 2003 et antérieurs...

Us.
Commenter la réponse de us_30
Messages postés
2117
Date d'inscription
lundi 11 avril 2005
Statut
Membre
Dernière intervention
14 mars 2016
8
0
Merci
Hum...

Range("A65536").End(xlUp).Row => c'est surtout intelligent pour les versions 2003 et antérieurs... et "moyenne.si" pour les versions 2007 et 2010... chercher l'erreur...

donc, ton code n'a pas la rigueur nécessaire... mais il est juste fonctionnel.

Amicalement,
Us.
Commenter la réponse de us_30

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.