Calcul de Moyenne en VBA

Hello tout le monde!

Je suis désolé de revenir via un autre Thread. Cette fois ci je morcèle ma problématique.

Voilà, je dois pondre un code qui calcule 2 variables dans un tableau: Total (Total Gal) & Moyenne mensuelle (Moy Mois). Ces 2 variables sont calculées avec des données évolutives stockées dans une feuille (Match) et les résultats sont envoyées vers une autre feuille (Synth1).

Une âme charitable m'a déjà aidé à écrire la macro calculant le Total, maintenant je cherche à calculer la moyenne à partir de la macro du Total. Mon adaptation n'est pas correcte car ce code renvoie 0 une fois sur 2 ou 3? Et en encore! Les autres fois rien ne se passe. Je voudrais savoir en quoi le calcul de la moyenne n'est pas juste? Si quelqu'un peut m'aider à y voir clair...

'---------------Calcul de la Moyenne Général (Moy Gal) ========> C'est Ceci qui est FAUX
If Sheets("Match").Cells(i, j) <> "" And Sheets("Synth1").Cells(5, k) = "Moy Gal" And Sheets("Synth1").Cells(4, k) = Sheets("Match").Cells(i, 3) And Sheets("Synth1").Cells(j + 2, 1) = Sheets("Match").Cells(5, j) Then
Sheets("Synth1").Cells(j + 2, k + 2) = WorksheetFunction.Average(Sheets("Synth1").Cells(j + 2, k))
End If

Pour une meilleure compréhension, je joins le fichier. Merci.

102projet1-v4.xlsx (69.29 Ko)

Bonjour tout seul

Tu envoies un fichier sans données et sans la macro : Pas facile à chercher

On ne connait pas l'état de tes variables (i, j, k)

En plus une moyenne il faut au moins 2 valeurs et dans ta macro il y en a qu'une

Tu places un fichier complet (macro + données) et tu indiques à quel endroit il y a un problème

Salut Banzal64!

Alors toutes mes excuses. Je m'étais trompé de fichier/pièce jointe!

Cette fois-ci je joins le bon fichier ( Projet1_V5). Ce fichier comporte la macro dans le Module 1 + 2 feuilles:

  • -Feuille Match = Feuille des Données.
  • -Feuille Synth1 = Feuille des résultats.

Quelques Précisions:

==>P1: C'est normal que le tableau de la Feuille Synth1 soit vide au départ Car la macro va, à partir des données (Feuille Match donc), calculer pour chaque variable (de Titulaire à But), 3 indicateurs (Total Gal, Moy Mois et Mois Gal) et envoyer le résultat dans les cellules correspondantes de la Feuille Synth1.

==>P2: Le fichier joint comporte une macro dont la partie qui calcule Total Gal est juste. Pour mieux comprendre, exécuter la macro. Dans la Feuille Synth1, malgré la présence du chiffre 0 comme résultat pour les joueurs J10 à J50 dans les colonnes B,E,H etc... le code calculant l'indicateur Total Gal est juste.

==>P3: Mon souci est de calculer la moyenne (Moy Gal). Pour l'instant, et par souci de simplification, je laisse de coté le calcul de la moyenne mensuelle. Je la calculerai en ajoutant une condition if month(Now) then....

Je rappelle que Moy Gal est la moyenne générale/classique i.e Total Gal/Nbre d'occurences. Exple : Synth1.Cells(13,D)= Synth1.Cells(13,B) / 4. Avec 4, le nombre de fois où le joueur J8 a été titulaire. (Bien sûr il s'agit des données fictives pour l'instant). Et vu que ce dénominateur 4 est variable dans le temps du fait de l'évolution du fichier toutes les semaines, j'ai voulu utilisé la fonction Average plutôt d'avoir à calculer ce nombre.

55projet1-v5.xlsm (75.14 Ko)

Bonjour

J'ai repris ton code (j'y ai placé des commentaires pour que tu puisses suivre ma logique)

Pour utiliser la fonction MOYENNE() ( AVERAGE() ) il faut une plage de donnée de plus d'une valeur, sinon la fonction te retourne la valeur

A vérifier si cela te convient

Salut Banzaï64!

Alors là... Respect!!! J'ai aimé les commentaires/explications. J'ai aimé le petit bouton en flèche et tout. Et en plus ca s'exécute plus vite que ce j'avais avant!! Alors OUI ca me convient. Jamais j'aurai pu écrire une macro pareille.

En fait ca fait un mois environ que j'ai commencé ce projet. Je l'avais débuté en m'interdisant l'utilisation de VBA du fait de ma nullité en programmation. Mais lorsque j'ai atteint mais limites avec les formules excel, VBA s'est naturellement imposé. Et là où c'est naïf et drôle c'est que je me suis dit :"Tiens c'est l'occasion d'apprendre vba, mon premier langage en... 2 semaines". Sauf que très vite, je me suis rendu compte que c'est trop costaud pour débuter en vba. Je n'aurai jamais pu écrire un truc pareil. Donc MERCI.

Pour info, J'ai essayé d'imbriquer une condition IF Then dans un IF existant pour la moyenne mensuelle mais bug.

If Month(F1.Columns("A")) = Month(Now) Then 
.Cells(Ligne, Poste + 1) = Total / Nb
End If     

Une petite idée stp?

Re!

Je joins le fichier pour montrer à quel niveau j'ai tenté l'insertion.

(Ce fichier joint (Projet_V6) est exactement identique à "Samoterell Calcul moyenne V001" plus mon bout de code mis en évidence avec des Astérisques en commentaire.)

47projet-v6.xlsm (48.71 Ko)

Bonjour

A vérifier

Re !!

Je te remercie Banzaï chaleureusement. Tout est Parfait. Ca m'a beaucoup avancé.

Je continue "l'habillage" du code .

Bonne fin de journée.

Rechercher des sujets similaires à "calcul moyenne vba"