Difficultés avec la fonction SI
aisbert
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonsoir a tous,
je me heurte a une difficulté dans la réalisation d'une échelle de notation qui se presente comme suit:
SCORE RATING / NOTE
<9,09 11
<18,18 10
<27,27 9
<36,36 8
<45,45 7
<54,54 6
<63,63 5
<72,72 4
<81,81 3
<90,90 2
<100 1
En effet compte tenu du fait que la fonction SI ne prend pas plus de 7 imbrication, il m'est impossible d'incorporer toute les notes.
Etant novice dans le language vba, quelqu'un pourrait il m'aider dans ce sens?
Voici ce que j'ai ecris meme si je ne suis pas tres convaincu de mon code lol
je me heurte a une difficulté dans la réalisation d'une échelle de notation qui se presente comme suit:
SCORE RATING / NOTE
<9,09 11
<18,18 10
<27,27 9
<36,36 8
<45,45 7
<54,54 6
<63,63 5
<72,72 4
<81,81 3
<90,90 2
<100 1
En effet compte tenu du fait que la fonction SI ne prend pas plus de 7 imbrication, il m'est impossible d'incorporer toute les notes.
Etant novice dans le language vba, quelqu'un pourrait il m'aider dans ce sens?
Voici ce que j'ai ecris meme si je ne suis pas tres convaincu de mon code lol
Sub variables() ' Declaration des variables Dim scorequantitatif As Byte, notequantitative As Byte ' ATTRIBATION D'UNE NOTE SUR UNE ECHELLE ALLANT DE 1 A 11 variables des variables scorequantitatif = Cells(9, 7) notequantitative = Cells(9, 8) with If Range("G9").Value <= "9,09" Then Range("h9").Value = "11" End If If Range("G9").Value < "18,18" Then Range("h9").Value = "10" End If If Range("G9").Value < "27,27" Then Range("h9").Value = "9" End If If Range("G9").Value < "36,36" Then Range("h9").Value = "8" End If If Range("G9").Value < "45,45" Then Range("h9").Value = "7" End If If Range("G9").Value < "54,54" Then Range("h9").Value = "6" End If If Range("G9").Value < "63,63" Then Range("h9").Value = "5" End If If Range("G9").Value < "72,72" Then Range("h9").Value = "4" End If If Range("G9").Value < "81,81" Then Range("h9").Value = "3" End If If Range("G9").Value < "90,90" Then Range("h9").Value = "2" End If If Range("G9").Value <= "100" Then Range("h9").Value = "1" End If If Range("G9").Value > "100" Then Range("h9").Value = "1" End If End Sub
A voir également:
- Difficultés avec la fonction SI
- Fonction si et - Guide
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
- Mise en forme conditionnelle avec fonction si - Guide
- Fonction remplacer sur word - Guide
3 réponses
Bonjour
peut-être sans vba
= (G9>0)*(12-ENT(G9/9,09))
G9<+0 renvoie 0 et G9>0 renvoie 1; équivalent d'un ET
peut-être sans vba
= (G9>0)*(12-ENT(G9/9,09))
G9<+0 renvoie 0 et G9>0 renvoie 1; équivalent d'un ET
Bonjour
Tu n'es pas obligé d'imbriquer tes 11 SI.
Tu peux faire tes comparaisons par dichotomie : un premier SI sépare les valeurs au niveau du 54,54. Dans la première moitié, un SI va séparer au niveau du 27,27 , alors que dans la seconde moitié, tu vas couper au niveau du 72,72 et ainsi de suite jusqu'à ce que tu aies découpé toutes les tranches. Ce qui donne la jolie formule :
Mais si tes catégories sont régulièrement espacées, ce qui est le cas ici, il est évident que la méthode de michel_m est bien meilleure
Tu n'es pas obligé d'imbriquer tes 11 SI.
Tu peux faire tes comparaisons par dichotomie : un premier SI sépare les valeurs au niveau du 54,54. Dans la première moitié, un SI va séparer au niveau du 27,27 , alors que dans la seconde moitié, tu vas couper au niveau du 72,72 et ainsi de suite jusqu'à ce que tu aies découpé toutes les tranches. Ce qui donne la jolie formule :
=SI(A7<54,54;SI(A7<27,27;SI(A7<18,18;SI(A7<9,09;11;10);9);SI(A7<36,36;8;SI(A7<45,45;7;6)));SI(A7<72,72;SI(A7<63,63;5;4);SI(A7<90,9;SI(A7<81,81;3;2);1)))Avec 7 niveaux d'imbrication, tu dois pourvoir distinguer 128 catégories comme ça.
Mais si tes catégories sont régulièrement espacées, ce qui est le cas ici, il est évident que la méthode de michel_m est bien meilleure
Sûrement beaucoup plus simple et efficace ! Je ne connaissais pas cette fonction.
Après essais et vérif, petit problème de syntaxe : j'ai l'impression qu'on ne peut pas écrire le tableau de valeurs directement 0,9,19,34,56... mais qu'il faut préciser une étendue (genre B5:B15) qui contient ce tableau. Ce qui n'enlève rien à l'intérêt de cette fonction.
Après essais et vérif, petit problème de syntaxe : j'ai l'impression qu'on ne peut pas écrire le tableau de valeurs directement 0,9,19,34,56... mais qu'il faut préciser une étendue (genre B5:B15) qui contient ce tableau. Ce qui n'enlève rien à l'intérêt de cette fonction.