EXCEL - Formule "SI" complexe

akon_aug akon_aug
475 contributions
Membre depuis le 08/03/2007
Envoyé le 15/03/2020 à 19:27


Bonjour Chers Tous

Je voudrais une aide en EXCEL, avec la Formule SI
En effet, c'est la formule au niveau de la SERIE
Je voudrais : Si la Moyenne d'orientation (G5) est supérieur ou égale à 10, et que MOYENNE SCIENCE (C5) est supérieur ou égale à 12, SERIE (G9) donne "C" ou "A" si Moyenne Lettre (C7) est supérieur ou égale à 12

Merci
voir fichier
>

AKON

Répondre à ce message

Bipbipcoyote Bipbipcoyote
2 838 contributions
Membre depuis le 06/03/2001
Envoyé le 15/03/2020 à 20:45 Modifié par Bipbipcoyote


Bonjour,
Aide de chez Microsoft concernant la fonction ET
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
akon_aug akon_aug
475 contributions
Membre depuis le 08/03/2007
Envoyé le 16/03/2020 à 11:04


Bonjour à Tous,
Bonjour Cher Bipbipcoyote

Merci infini pour ta contribution.
Je pense que tu as bien compris mon problème, mais suis à ton intervention, je me rend compte que je n'ai bien posé le problème :
* La 1ère condition, la moyenne d'orientation doit être supérieur ou égale à 10 c'est à dire F5>= 10

* Si Moyenne Science (C5) est supérieure ou égale à 12 et en même temps strictement supérieure à Moyenne lettre (C7); alors SÉRIE = C
c'est à dire C5>=12>C7

* Inversement : SI Moyenne lettre (C7) est supérieure ou égale à 12 et en même temps strictement supérieure à Moyenne Science (C5) ; alors SÉRIE = A
c'est à dire C7>=12>C5

Merci Infiniment
AKON
Bipbipcoyote Bipbipcoyote
2 838 contributions
Membre depuis le 06/03/2001
Envoyé le 16/03/2020 à 11:58 Modifié par Bipbipcoyote


Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
akon_aug akon_aug
475 contributions
Membre depuis le 08/03/2007
Envoyé le 16/03/2020 à 12:54


Bonjour Bipbipcoyote,

Ton raisonnement il est logique..
J'y vais simplement..
Il faut avoir 10 comme moyenne pour être orienté(e) en seconde.
Quand ton bilan (moyenne) science est supérieur à 12 et supérieur au bilan lettre, tu es orienté(e) en seconde C,
Quand ton bilan (moyenne) lettre est supérieur à 12 et supérieur au bilan science, tu es orienté(e) en seconde A... Je ne pense qu'il y ait 5 conditions, et qui se contredisent

Merci
AKON
akon_aug akon_aug
475 contributions
Membre depuis le 08/03/2007
Envoyé le 16/03/2020 à 17:41


Bonjour,

Merci infini

J'ai testé çà ne marche pas, je vais simplifier les conditions
Merci je te reviens demain

Merci
AKON
Bipbipcoyote Bipbipcoyote
2 838 contributions
Membre depuis le 06/03/2001
Envoyé le 16/03/2020 à 18:50 Modifié par Bipbipcoyote


oui, j'ai perdu de vue les valeurs minimales que doivent atteindre C5 et C7 avec la valeur F5, elles excluent le A ou le C
Donc il suffit de les tester une par une et de définir un résultat si la condition n'est pas remplie et de sortir de la procédure dès que l'on rencontre la condition testée sinon on poursuit plus loin
NB: comme je l'avais dit dans un message précédent, la procédure Worksheet_Change teste toutes les cellules, comme on ne travaille que sur 3 cellules, j'utilise une variable nomée "boucle" pour sortir de la procédure plus rapidement, cela n'a rien à voir avec ce que tu veux calculer

Tu peux alors remplacer le code par

Dim boucle As Integer
Private Sub Worksheet_Change(ByVal Target As Range)
Dim resultat As String
If Range("F5") < 10 Then
Range("F9") = "Orientation Non Atteint"
Exit Sub
End If

If Range("C5") < 12 Then
Range("F9") = "Science Non Atteint"
Exit Sub
End If

If Range("C7") < 12 Then
Range("F9") = "Lettre Non Atteint"
Exit Sub
End If

If Range("C5") > Range("C7") Then
boucle = boucle + 1
If boucle > 1 Then
Exit Sub
End If
Range("F9") = "C"
End If


If Range("C7") >= Range("C5") Then
boucle = boucle + 1
If boucle > 1 Then
Exit Sub
End If
Range("F9") = "A"
End If
boucle = 0
End Sub

là ça devrait fonctionner
Nouvelle version du fichier J'ai supprimé les autres fichier chez cjoint. Parfois on se complique la vie. Finalement le code est plus simple. Sur Mémo, j'ai aussi effacé les réponses intermédiaires, fais de même avec les tiennes ce sera plus clair si on vient relire ceci plus tard
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
akon_aug akon_aug
475 contributions
Membre depuis le 08/03/2007
Envoyé le 17/03/2020 à 10:39


Bonjour Bipbipcoyote,

Bravo, tu es excellent (+)
Il fonctionne, mais avec des imperfections de débogage (VOIR FICHIER JOINT)...
Et puis, il y a un soucis (pas véritablement un soucis, certes moi même qui n'est pas bien exprimé). Dans le cas en fichier joint, tant que Bilan lettre n’atteint pas "12" voici le résultat qui apparait.
Sans être "gourmand" et trop te fatiguer (je m'en excuse beaucoup), j'ai dû encore simplifier le sujet, je ne pense pas qu'on puisse passer par VBA :
Nous avions :
Moyenne Sciences
Moyenne Lettre
Moyenne Orientation
SÉRIE
J'ai en plus de ces cellules ajouté une autre :
Suis-je Orienté? : la réponse sera OUI ou NON
Le Problème sera alors :
1-Suis-je orienté : OUI
2 - Moyenne Sciences>Moyenne Lettre
3 - Alors SERIE = C
4 Sinon si Moyenne Sciences<Moyenne Lettre
5 - Alors SERIE = A

Si Suis-je orienté : NON
Rien ne s'affiche dans SÉRIE

Donc je laisse tomber la Moyenne 12, qui était une condition, et avec la ferme conviction que Moyenne Sciences ne sera JAMAIS ÉGALE à Moyenne Lettres, à cause des coefficients de base qui sont différents.






JE VOUDRAIS FAIRE SIMPLE , SANS FAIRE INTERVENIR VBA



AKON
Bipbipcoyote Bipbipcoyote
2 838 contributions
Membre depuis le 06/03/2001
Envoyé le 17/03/2020 à 17:01 Modifié par Bipbipcoyote


Bonjour,
Personnellement, je n'ai pas ce message "pile insuffisant" ce qui serait le signe d'une boucle infinie.. Or la gestion de la variable "boucle" vient palier cela.
Tu peux tester le déroulement du code, tu dois entrer dans le VBE avec les touches ALT+F11, ensuite en cliquant dans la marge gauche à hauteur de If Range("F5") < 10 Then, tu poses un point d'arrêt (un point brun en principe) ensuite tu retournes dans la feuille, tu modifies une valeur et tu retournes dans le VBE, tu provoques une exécution pas à pas avec la touche F8 et là tu pourras découvrir où ça foire, pendant cette exécution pas à pas, en passant la souris sur les variables tu obtiens sa valeur du moment dans une infobulle

Pour se passer de VBA, il faut passer par plusieurs cellules de test car la fonction SI n'accepte que 3 arguments maximum
Fichier Sans VBA
Les explications dans des cellules à masquer on va placer les formules suivantes (j'ai choisi des cellules de la colonne I mais on les place où on veut, il suffit d'adapter les adresses dans les formules, les protéger aussi pour éviter un effacement malencontreux)
=SI(F5<10;1;0)
=SI(C5<12;1;0)
=SI(C7<12;1;0)
J'en fais la somme
=SOMME(I5:I7)
J'en teste le résultat
=SI(I8<>0;"Non Atteint";"Atteint")
Je teste les cellules C5 et C7
=SI(C5>=C7;"C";"A")
et en F5, je teste les 2 résultats
=SI(ET(I9="Atteint";I10<>"");I10;I9)

Ajoute au fichier en F6 la formule
=SI(OU(F9="A";F9="C");"Orienté";"Non Orienté") ou bien, tu remplaces les mentions "Non Atteint" et "Atteint"
Visitez mon Site Google est mon ami, il répond mieux que moi, posez lui d'abord vos questions
akon_aug akon_aug
475 contributions
Membre depuis le 08/03/2007
Envoyé le 18/03/2020 à 13:36


Bonjour Bipbipcoyote,

Merci infini, le fichier sans VBA fonctionne à merveille

Merci

Ce Topic peut être clos, Merci pour ta disponibilité et ta science

Merci

AKON
akon_aug akon_aug
475 contributions
Membre depuis le 08/03/2007
Envoyé le 20/03/2020 à 18:56


Bonjour Bipbipcoyote,

Je disais effectivement que le Topic était clos, j'ai apporté des améliorations avec des mises en formes conditionnelles, je voudrais te le partager, si je peux avoir ton émail personnelle

Merci

AKON

Participer à cette discussion

« Retour sur la liste des messages de ce forum