Moyenne prenant en compte chiffre et texte

Bonjour,

Je viens par la présente demander l'aide sur le vba suivant:

Option Explicit 'Obligation de déclarer les variables

Const DebEtu_Cell = "C5"

'===================================================

'Calcul de notes pour les étudiants

'===================================================

Public Sub Calcul_Notes()

Dim MC As Range

'Se positionner sur le premier étudiant

Set MC = Range(DebEtu_Cell)

'Itérer vers le bas tant que la cellule est non vide

Do While Not IsEmpty(MC.Value)

'Calcul de la moyenne

If MC.Offset(0, 1).Value = "" And MC.Offset(0, 2).Value = "" Then

MC.Offset(0, 3).Value = "Déf."

ElseIf MC.Offset(0, 1).Value = "" Then

MC.Offset(0, 3).Value = MC.Offset(0, 2).Value

Else: MC.Offset(0, 3).Value = (MC.Offset(0, 1).Value) * 1 / 3 + (MC.Offset(0, 2).Value) * 2 / 3

End If

If MC.Offset(0, 4).Value = "" And MC.Offset(0, 5).Value = "" Then

MC.Offset(0, 6).Value = "Déf."

ElseIf MC.Offset(0, 4).Value = "" Then

MC.Offset(0, 6).Value = MC.Offset(0, 5).Value

Else: MC.Offset(0, 6).Value = (MC.Offset(0, 4).Value) * 1 / 3 + (MC.Offset(0, 5).Value) * 2 / 3

End If

If MC.Offset(0, 3).Value = "Déf." And MC.Offset(0, 6).Value = "Déf." Then

MC.Offset(0, 7).Value = "Déf."

Else: MC.Offset(0, 7).Value = (MC.Offset(0, 3).Value + MC.Offset(0, 6).Value) / 2

End If

'Se position sur la cellule du dessous

Set MC = MC.Offset(1, 0)

Loop

End Sub

En J9 par exemple je devrais obtenir (F9+I9)/2 = 7,5

Or en F9 j'ai 15 et en I9 j'ai "Déf."

Voilà ma préoccupation

A toutes fins utiles, je joints le fichier d'essai

15notes.xlsm (20.74 Ko)

bonjour

en attendant mieux

=SIERREUR(MOYENNE(SI(ESTNUM(D5:I5);D5:I5;""));"")

formule matricielle a saisir en J5 puis valider avec les touches Ctrl Maj Entrée ,ensuite tirer sur la colonne

cordialement

Bonjour,

sans savoir pourquoi le VBA, je te demande pourquoi faire simple quand on peut faire compliqué ?

=SIERREUR(MOYENNE(F9;I9);"")

Cordialement

En fait, je suis entrain d'écrire un code VBA, et j'ai des difficultés au niveau de la ligne soulignée.

Merci pour vos réponses

re

tu peux peut etre remplcer "" MC.Offset(0, 3).Value = "Déf." par =0

Oui, seulement que chez nous à l'université, lorsque l'étudiant ne compose pas on mets défaillant (Déf. en abréviation). Donc mettre 0 pourrait faire croire que l'étudiant à composer dans la matière.

Encore une fois merci

Rechercher des sujets similaires à "moyenne prenant compte chiffre texte"