Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

moyenne en VBA

M

micheline

Guest
bonsoir,
voici un nouveau petit programme que je n'arrive toujours pas à faire en VBA, je recherche donc une petite aide.merci

le programme est le suivant:

"soit 2 tableaux à 1 dimension ayant exactement le même nombre d'élément. l'un contient des notes (0 à 20) et l'autre les coéfficients de chacune de ces notes . on souhaite obtenir la moyenne pondéré de l'ensemble notes et coéfficients ( exemple de calcul pour la moyenne pondérée: si on a une note à 12 avec un coeff de 1 et une à 13 avec un coeff de 2 la moyenne pondéré = (12*1+13*2) / ( 1+2)) il faut aussi éliminé les notes qui sont égale a des lettre pour faire le calcul."

remarque: on peut utilisé ta= array (11,12,15,11,12) et tb= array (1,2,1,3,1)
en déclarant ta et tb comme un tableau d'entier dim ta (1 to 5)

merci

bonne soirée

Micheline
 
K

K@d

Guest
Bonsoir,

la réponse de facilité serait d'écrire un code du type :

'*****************

Option Base 1

Sub MoyennePondérée()

Dim Ta() 'array A
Dim Tb() 'array B
Dim i As Integer
Dim Total As Double
Dim Ponderation As Integer
Dim Moyenne As Long

'les deux tableaux
Ta = Array(11, 12, 15, 11, 12)
Tb = Array(1, 2, 1, 3, 1)

'et le calcul
For i = 1 To UBound(Ta, 1)

Total = Total + (Ta(i) * Tb(i))
Ponderation = Ponderation + Tb(i)

Next i

Moyenne = Total / Ponderation

MsgBox "La moyenne est de :" & Moyenne, vbInformation

End Sub

'****************

Il y a certainement plus court et plus simple mais à cette heure-ci...

Clément

"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème."
 
C

CHti160

Guest
Salut"micheline" et " K@d"
bonjour le "FORUM" hic hic hic .....Oupss ça c'est le Champagne d'hier soir
eh oui c'était l'anniversaire de notre "BRIGITTE"
bon en pièce jointe un essai que tu pourras adapter je pense
tiens nous au courant
A+++
Jean Marie
 

Pièces jointes

  • MoyennePV1.zip
    10.4 KB · Affichages: 182

ouael

XLDnaute Nouveau
Re : Re: moyenne en VBA

Bonjour,

Il serait possible d'avoir cette procédure sous forme de fonction avec la possibilité d'introduire les valeurs de différentes cellules sélectionnées pour effectuer la moyenne et les pondérations

Merci pour toutes contributions,

OuaEl


 

Dranreb

XLDnaute Barbatruc
Re : moyenne en VBA

Bonjour.
Pourquoi dites vous "des valeurs de cellules" au lieu de "deux plages, une des notes et l'autre des poids" ?
Donnez un exemple de la façon dont vous aimeriez appeler votre fonction dans une formule.
 

ouael

XLDnaute Nouveau
Re : moyenne en VBA

Dans l'exemple donné précédemment, les inputs (notes et pondérations) sont donnés en dure. J'aimerai simplement créer une fonction qui prenne en argument plusieurs cellules (et non une plage) correspondant aux notes, et effectuer des pondérations sur ces valeurs qui dépendraient d'autres cellule

Par exemple, la fonction excel d'une moyenne pondérée s'écrit de la façon suivante: =moyenne(A1, B9, R8)
J'aimerai la même chose en pouvant moi même fixer les pondérations

Merci pour votre retour,

Cordialement,
 

Dranreb

XLDnaute Barbatruc
Re : moyenne en VBA

Oui mais s'il y a deux sortes de paramètres lesquels sont les notes, lesquels sont les pondérations ?
En alternance une note puis une pondération ou bien toutes les notes puis toutes les pondérations ?
Votre exemple ne va pas d'ailleurs vu qu c'est un nombre impair de paramètres.

Avec alternance des notes et des poids c'est :
VB:
Function MoyPond(ParamArray T())
Dim N As Long, SommV As Double, SommP As Double
If UBound(T) Mod 2 = 0 Then MoyPond = CVErr(xlErrRef): Exit Function
For N = 1 To UBound(T) Step 2
   SommV = SommV + T(N - 1) * T(N)
   SommP = SommP + T(N): Next N
MoyPond = SommV / SommP
End Function
 
Dernière édition:
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…