XL 2013 traduire ma formule en macro

ATHE RIOVELI

XLDnaute Occasionnel
Bonjour le forum.
Je suis presque à la fin de ce projet.
Un projet réalisé à 99,999999% grâce au forum.
C'est ici que j'ai vu qu'avec excel, on pouvait aussi écrire des programmes; en dehors des formules.
ICI, j'ai une formule que souhaiterai traduire en macro.
Cette formule me permet de gérer la moyenne en respectant certaines conditions.
il s'agit de calculer la moyenne annuelle pour les cellules I15, I16, I17.
Je sais que je doit commencer par with [15].resize(100)
voisi ici la formule et un motif de la feuille.
 

Pièces jointes

  • MOYENNE ANNUELLE.xlsm
    18.4 KB · Affichages: 76

job75

XLDnaute Barbatruc
Bonjour ATHE RIOVELI,

En I15 à tirer vers le bas :
Code:
=SI(ESTTEXTE(B15);SOMMEPROD(C15:G15*C$11:G$11)/SOMME(C$11:G$11);"")
En VBA on utilisera :
Code:
With [I15].Resize(100)
  .FormulaR1C1 = "=IF(ISTEXT(RC2),SUMPRODUCT(RC3:RC7*R11C3:R11C7)/SUM(R11C3:R11C7),"""")"
  .Value = .Value 'supprime les formules
End With
Nota : il s'agit d'une moyenne de moyennes...

Si l'on voulait la moyenne des notes (pondérées) de l'année il faudrait les passer toutes en revue.

Le résultat ne serait pas le même, c'est facile à vérifier.

A+
 

job75

XLDnaute Barbatruc
Re,

Il pourrait se faire qu'un élève soit absent tout un trimestre.

Dans ce cas la cellule est laissée vide ou renseignée par un texte comme "abs"et "NC" pour le rang.

Entrer alors en I15 cette formule matricielle, à valider par Ctrl+Maj+Entrée et tirer vers le bas :
Code:
=SI(ESTTEXTE($B15);SOMME(SI(ESTNUM($C15:$G15);$C15:$G15*$C$11:$G$11))/SOMME(SI(ESTNUM($C15:$G15);$C$11:$G$11));"")
En VBA on utilisera :
Code:
'les coefficients sont en ligne 11
With [I15].Resize(100)
  .Cells(1).FormulaArray = "=IF(ISTEXT(RC2),SUM(IF(ISNUMBER(RC3:RC7),RC3:RC7*R11C3:R11C7))/SUM(IF(ISNUMBER(RC3:RC7),R11C3:R11C7)),"""")"
  .Cells(1).AutoFill .Cells
  .Value = .Value 'supprime les formules
End With
Bonne soirée.
 

ATHE RIOVELI

XLDnaute Occasionnel
BONSOIR job75, BONSOIR le forum.
Tout d'abord merci pour les codes.
Effectivement un élève peut être absents tout un trimestre. je n'y avait pas pensé au debut.
A ce niveau, je suis en train de voir si je peux arrivé à modifier les formules au niveau des feuilles trim
de sorte que si une cellule quelconque au niveau de la feuille feuille 1 recoit le sigle "NC", on devrait aussi avoir "NC" au niveau de la moyenne en question. de sorte que la moyenne annuelle soit effectuée automatiquement.
Mais un élève absent pour deux trimestre est non classé.
C'est l'idée de la formule de la formule que j'ai demandé à mettre en macro.
Je télécharge le fichier.
Encore une fois MERCI A VOUS
A+
 

ATHE RIOVELI

XLDnaute Occasionnel
Re,
MERCI job75,
C'est parfait la macro fonctionne.
Maintenant, je crains vraiment de te faire fâcher.
Parce que là, tu es la personne la mieux placé pour résoudre ce problème.
Puisqu'il s'agit du fichier initial.
Au niveau du calcul des heures d'absences: Je souhaiterai qu'un puisse, lorsque l'élève a été absent tout un trimestre, qu'on puisse mettre NC dans une cellule quelconque de la période concernée.
il nous faudra aussi NC se retrouve également au niveau du trimestre en question.
J'espère avoir bien expliqué ma préocupation.
MERCI A VOUS
A+
 

job75

XLDnaute Barbatruc
Re,

J'en ai fait assez...

Edit : dans vos fichiers précédents sur les notes scolaires il y avait des formules avec SIERREUR(xxx;"NC").

Je pensais que c'était vous qui les aviez créées, ou alors vous avez la mémoire courte.

Bonne nuit.
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
730

Statistiques des forums

Discussions
312 167
Messages
2 085 904
Membres
103 028
dernier inscrit
MLAGHITI