Bonjour,

je viens vers vous car j'ai un soucis de réflexion sur un truc.

Déjà une petite description du fichier que je fais actuellement:
Dans mon entreprise, on récompense nos apprentis qui font de bonnes moyennes par des primes. Chaque apprenti, en fonction de l'année et de la moyenne reçoit un montant fixé. (entre 4,5 et 5 c'est 200.- etc...)
J'ai une base de donnée avec les noms prénoms, les différentes notes selon les métiers et une case Montant Prime.

Nom : Capture.PNG
Affichages : 322
Taille : 50,6 Ko

J'ai un UserForm qui s'ouvre et selon le métier on peut compléter les notes et il insère automatiquement dans les cases voulues les notes inscrites.

Nom : Capture.PNG
Affichages : 221
Taille : 32,0 Ko


L'UserForm s'initialise et affiche les cases ou on pourrait remplir des notes suivant le métier

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
Private Sub UserForm_Initialize()
' Initialisation de l'Userform et remplissage des informations nécessaires, telle que notes, infos générales.
 
nom.Text = Cells(ligne, 2)
prenom.Text = Cells(ligne, 3)
bsa.Text = Cells(ligne, 1)
annee.Text = Cells(ligne, 4)
profession.Text = Cells(ligne, 6)
 
'Masquage des différentes cases de notes
NTF.Visible = False
anglais.Visible = False
dessin.Visible = False
electronique.Visible = False
automatisation.Visible = False
PRI.Visible = False
social.Visible = False
prof.Visible = False
usinage.Visible = False
machines.Visible = False
commande.Visible = False
electrotechnique.Visible = False
logicielles.Visible = False
fab3.Visible = False
mic2.Visible = False
MPX.Visible = False
enseignement.Visible = False
globale.Visible = False
STA.Visible = False
UF.Visible = False
technique.Visible = False
elo.Visible = False
 
'Supprime les valeurs présentes
NTF.Text = ""
anglais.Text = ""
dessin.Text = ""
electronique.Text = ""
automatisation.Text = ""
PRI.Text = ""
social.Text = ""
prof.Text = ""
usinage.Text = ""
machines.Text = ""
commande.Text = ""
electrotechnique.Text = ""
logicielles.Text = ""
fab3.Text = ""
mic2.Text = ""
MPX.Text = ""
enseignement.Text = ""
globale.Text = ""
STA.Text = ""
UF.Text = ""
technique.Text = ""
elo.Text = ""
 
 
'Activation des cases pour notes en fonction du métier
If profession.Text = "Automaticien-ne" Then
 
NTF.Visible = True
anglais.Visible = True
dessin.Visible = True
electronique.Visible = True
automatisation.Visible = True
PRI.Visible = True
social.Visible = True
prof.Visible = True
 
ElseIf profession.Text = "Polymécanicien-ne" Or profession.Text = "Polymécanicien en 2 ans" Then
 
NTF.Visible = True
anglais.Visible = True
usinage.Visible = True
machines.Visible = True
commande.Visible = True
PRI.Visible = True
social.Visible = True
prof.Visible = True
 
ElseIf profession.Text = "DCI" Then
 
NTF.Visible = True
anglais.Visible = True
usinage.Visible = True
machines.Visible = True
commande.Visible = True
PRI.Visible = True
social.Visible = True
prof.Visible = True
 
ElseIf profession.Text = "Electronicien-ne" Then
 
NTF.Visible = True
anglais.Visible = True
electrotechnique.Visible = True
elo.Visible = True
logicielles.Visible = True
PRI.Visible = True
social.Visible = True
prof.Visible = True
fab3.Visible = True
mic2.Visible = True
MPX.Visible = True
 
ElseIf profession.Text = "CAI" Then
 
NTF.Visible = True
usinage.Visible = True
machines.Visible = True
technique.Visible = True
social.Visible = True
prof.Visible = True
 
ElseIf profession.Text = "Logisticien-ne" Then
 
enseignement.Visible = True
social.Visible = True
prof.Visible = True
 
ElseIf profession.Text = "Employé-e de commerce" Then
 
globale.Visible = True
STA.Visible = True
UF.Visible = True
 
Else
 
 
End If
 
 
 
 
 
End Sub
Et Il enregistre les infos que l'on à inscrites dans les cases.

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
Private Sub sauvegarde_Click()
'Quand on appuie sur ce bouton, les notes s'inscrivent automatiquement en fonction de la ligne et du métier dans le tableau des notes.
'A chaque métier, ses cases dans le tableau, donc on inscrit les notes en fonction des métiers.
If profession.Text = "Automaticien-ne" Then
 
Cells(ligne, 8).Value = NTF.Text
Cells(ligne, 9).Value = anglais.Text
Cells(ligne, 10).Value = dessin.Text
Cells(ligne, 11).Value = electronique.Text
Cells(ligne, 12).Value = automatisation.Text
Cells(ligne, 13).Value = PRI.Text
Cells(ligne, 44).Value = social.Text
Cells(ligne, 43).Value = prof.Text
 
 
ElseIf profession.Text = "Polymécanicien-ne" Or profession.Text = "Polymécanicien en 2 ans" Then
 
Cells(ligne, 14).Value = NTF.Text
Cells(ligne, 15).Value = anglais.Text
Cells(ligne, 16).Value = usinage.Text
Cells(ligne, 17).Value = machines.Text
Cells(ligne, 18).Value = commande.Text
Cells(ligne, 19).Value = PRI.Text
Cells(ligne, 44).Value = social.Text
Cells(ligne, 43).Value = prof.Text
 
ElseIf profession.Text = "DCI" Then
 
Cells(ligne, 30).Value = NTF.Text
Cells(ligne, 31).Value = anglais.Text
Cells(ligne, 32).Value = usinage.Text
Cells(ligne, 33).Value = machines.Text
Cells(ligne, 34).Value = commande.Text
Cells(ligne, 35).Value = PRI.Text
Cells(ligne, 44).Value = social.Text
Cells(ligne, 43).Value = prof.Text
 
ElseIf profession.Text = "Electronicien-ne" Then
 
Cells(ligne, 20).Value = NTF.Text
Cells(ligne, 21).Value = anglais.Text
Cells(ligne, 23).Value = electrotechnique.Text
Cells(ligne, 22).Value = elo.Text
Cells(ligne, 24).Value = logicielles.Text
Cells(ligne, 25).Value = PRI.Text
Cells(ligne, 44).Value = social.Text
Cells(ligne, 43).Value = prof.Text
Cells(ligne, 26).Value = fab3.Text
Cells(ligne, 27).Value = mic2.Text
Cells(ligne, 28).Value = MPX.Text
 
ElseIf profession.Text = "CAI" Then
 
Cells(ligne, 39).Value = NTF.Text
Cells(ligne, 40).Value = usinage.Text
Cells(ligne, 41).Value = machines.Text
Cells(ligne, 42).Value = technique.Text
Cells(ligne, 44).Value = social.Text
Cells(ligne, 43).Value = prof.Text
 
ElseIf profession.Text = "Logisticien-ne" Then
 
Cells(ligne, 29).Value = enseignement.Text
Cells(ligne, 44).Value = social.Text
Cells(ligne, 43).Value = prof.Text
 
ElseIf profession.Text = "Employé-e de commerce" Then
 
Cells(ligne, 36).Value = globale.Text
Cells(ligne, 37).Value = STA.Text
Cells(ligne, 38).Value = UF.Text
 
Else
 
'Erreur en cas de vide sur la case métier. Il faudra donc aller voir dans la BD si il n'y pas une ligne vide ou une case non remplie
MsgBox "Ooops, ce métier n'est pas pris en compte pour obtenir une prime."
 
End If
Cells(ligne, 5) = Semestre.Text
ligne = ligne + 1
UserForm_Initialize
 
End Sub
Mon problème réside maintenant dans le fait que, si un automaticien à les cases telles et telles remplies, il faut que je fasse la moyenne de ces notes et que selon la note, je calcule la prime.

J'ai la fonction (Application.Average) mais je sais pas ou la placer pour qu'elle aille le mieux et que ça soit pas trop lourd... Impossible de trouver ou les poser.....

Merci à celui, celle ou ceux qui m'aideront et bonne journée à vous !