Bonjour,
Je suis entrain d'écrire un code VBA pour le calcul des notes d'étudiants. Prenons une UE comportant deux ECU. Lorsque l'étudiant est défaillant dans un ECU le résultat est "Déf." (défaillant) et il a une note 15 dans le second ECU. Le calcul de la moyenne de l'UE fait (Moyenne ECU 1 + Moyenne ECU 2)/2. Ce qui veut dire que je vais obtenir ("Déf." + 15)/2 = 7,5.
J'arrive à le faire dans la feuille de calcul. Mais en écrivant le code VBA, j'ai des difficultés. Voilà ce j'ai écrit pour que le message (Erreur de compilation: Sub ou fonction non définie) lors de l'exécution de la macro.
Le problème se pose au niveau de la ligne en gras et qui est soulignée. A toutes fins utiles, je joints le fichier excel avec le code VBA.
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 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 = Sum(MC.Offset(0, 3).Value And MC.Offset(0, 6).Value) / 2 End If ' 'Se position sur la cellule du dessous Set MC = MC.Offset(1, 0) Loop End Sub
Partager