Comment convertir une note dans une feuille en fonction d'un barême dans une autre

phmad

XLDnaute Nouveau
Coucou, me revoilou avec mon sacré questionnaire, qui fonctionne, rassurez-vous (je dis surtout cela à Nolich et Fo rum).

Pourriez-vous m'aider à écrire la fonction me permettant de convertir des notes "brutes" à certaines échelles (feuille des notes brutes), en notes "standard" obtenues en fonction d'un barême différent pour chaque échelle (feuille "échelle de conversion").

Ci-joint quelques exemples. Une fois que je saurais comment faire pour une ou deux échelles, je pourrai me débrouiller. Merci.
 

Pièces jointes

  • Notes standard essai 1.xls
    21 KB · Affichages: 114
  • Notes standard essai 1.xls
    21 KB · Affichages: 119
  • Notes standard essai 1.xls
    21 KB · Affichages: 119

CISCO

XLDnaute Barbatruc
Re : Comment convertir une note dans une feuille en fonction d'un barême dans une aut

Bonjour à tous, bonjour james007

Ci-joint, une possibilité avec RECHERCHEV.

Attention, le copier-coller ne se fait pas très bien, car le numéro relatif (12 en E8, 10 en G8, 8 en I8...) de la colonne où excel va lire la réponse ne s'adapte pas automatiquement. De même si on modifie le nombre de colonne du tableau dans la feuille échelle de conversion, il faut corriger ces derniers nombres (12, 10, 8...).

@ plus
 

Pièces jointes

  • Notes standard essai 1(1).xls
    26 KB · Affichages: 81

job75

XLDnaute Barbatruc
Re : Comment convertir une note dans une feuille en fonction d'un barême dans une aut

Bonjour phmad, James, Cisco,

Si j'ai bien compris, une solution avec une fonction VBA.

Fichier joint.

Code:
Function NS(echel$, nb%) As Variant
Dim col As Byte, ns1$, ns2$
On Error Resume Next
col = Application.Match(echel, Rows(6), 0)
For Each cel In Range(Cells(10, col), Cells(65536, col).End(xlUp))
If InStr(cel, "et") Then
ns1 = Split(cel, " et ")(0)
ns2 = Split(cel, " et ")(1)
ElseIf InStr(cel, "à") Then
ns1 = Split(cel, " à ")(0)
ns2 = Split(cel, " à ")(1)
Else
ns1 = cel.Text
ns2 = ns1
End If
If nb >= Val(ns1) And nb <= Val(ns2) Then NS = Cells(cel.Row, 9): Exit Function
Next cel
NS = "###"
End Function

A+
 

Pièces jointes

  • Notes standard essai 1.xls
    29 KB · Affichages: 73
  • Notes standard essai 1.xls
    29 KB · Affichages: 76
  • Notes standard essai 1.xls
    29 KB · Affichages: 70
Dernière édition:

job75

XLDnaute Barbatruc
Re : Comment convertir une note dans une feuille en fonction d'un barême dans une aut

Re,

Une simplification de la fonction :

Code:
Function NS(echel$, nb%) As Variant
Dim col As Byte, ns1$, ns2$, txt$
On Error Resume Next
col = Application.Match(echel, Rows(6), 0)
For Each cel In Range(Cells(10, col), Cells(65536, col).End(xlUp))
If IsNumeric(cel) Then
ns1 = cel.Text
ns2 = ns1
Else
txt = Replace(Replace(cel, "et ", ""), "à ", "")
ns1 = Split(txt, " ")(0)
ns2 = Split(txt, " ")(1)
End If
If nb >= Val(ns1) And nb <= Val(ns2) Then NS = Cells(cel.Row, 9): Exit Function
Next cel
NS = "###"
End Function

A+
 

Pièces jointes

  • Notes standard essai 1.xls
    29 KB · Affichages: 78
  • Notes standard essai 1.xls
    29 KB · Affichages: 79
  • Notes standard essai 1.xls
    29 KB · Affichages: 83

job75

XLDnaute Barbatruc
Re : Comment convertir une note dans une feuille en fonction d'un barême dans une aut

Re,

Bon, autant pour moi, j'avais oublié que la fonction doit surtout servir dans la 1ère feuille. Il faut donc faire référence à la feuille Echelle de conversion.

J'ai aussi déclaré le 2ème argument As Single, au cas où...

Edit : Enfin la dernière colonne du tableau de conversion est déterminée par la variable colmax.

Code:
Function NS(echel$, nb As Single) As Variant
Dim col As Byte, colmax As Byte, ns1$, ns2$, txt$
On Error Resume Next
With Sheets("Echelle de conversion")
col = Application.Match(echel, .Rows(6), 0)
colmax = .Cells(10, 256).End(xlToLeft).Column
For Each cel In .Range(.Cells(10, col), .Cells(65536, col).End(xlUp))
If IsNumeric(cel) Then
ns1 = cel.Text
ns2 = ns1
Else
txt = Replace(Replace(cel, "et ", ""), "à ", "")
ns1 = Split(txt, " ")(0)
ns2 = Split(txt, " ")(1)
End If
If nb >= Val(ns1) And nb <= Val(ns2) Then NS = .Cells(cel.Row, colmax): Exit Function
Next cel
End With
NS = "###"
End Function

A+
 

Pièces jointes

  • Notes standard essai 1.xls
    40 KB · Affichages: 84
  • Notes standard essai 1.xls
    40 KB · Affichages: 88
  • Notes standard essai 1.xls
    40 KB · Affichages: 92
Dernière édition:

phmad

XLDnaute Nouveau
Re : Comment convertir une note dans une feuille en fonction d'un barême dans une aut

Vous êtes vraiment géniaux ! Et moi qui m'imaginais que cela puisse être simple ?

Je vais dès que possible trouver le temps pour compléter mes tableaux et voir ce que cela donne.

Pour rajouter d'autres échelles, quelle méthode je dois utiliser ? Le copier coller, la référence à une cellule ?

Merci à tous et à très bientôt. Philippe.
 

Discussions similaires

Statistiques des forums

Discussions
312 764
Messages
2 091 859
Membres
105 079
dernier inscrit
Biscot_399