XL 2016 Comment attribuer des classes avec trois conditions?

  • Initiateur de la discussion Initiateur de la discussion stuka
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

stuka

XLDnaute Nouveau
Bonjour;
Je travaille sur la classification d'échantillons d''eau pour une utilisation en irrigation. Malheureusement, pour moi bien sûr! Cette classification porte sur plusieurs conditions comme le présente la figure ci-après que j'ai tirée depuis un document:
1738420597989.png


Pour avoir cette classification, j'ai réalisé un fichier Excel dans lequel j'ai réalisé mes calculs (les rapports (Ca+Mg)/(Na+K) et (Ca+Mg)/Na). Comme je ne suis pas expert, j'ai eu l'idée de vérifier chaque paramètre avec la condition "SI" puis attribuer une valeur Y1, Y2 ou Y3 (Y pour dire "Yes": La condition est vérifiée; et les numéros séquentiels 1 à 3 pour désigner le numéro de la condition vérifiée). Ensuite, j'ai regroupé ces conditions avec la fonction "Concatener" de façon à avoir de différentes combinaisons où chacune d'elles désigne un sous-groupe.
Pour mieux illustrer mon travail, j'attache un fichier Excel avec différentes feuilles:
  • La première porte sur les données (les valeurs) avec lesquelles j'ai travaillé;
  • La deuxième, expose la méthode que j'ai appliquée avec la fonction concatener pour avoir les classes et sous-classes;
  • La troisième, illustre mieux les conditions qui doivent être vérifiée pour avoir les classes et les sous-classes. J'attire votre attention que si la première classe est obtenue, je dois arrêter la vérification avec la condition du rapport (Ca+Mg)/(Na+K), sinon , je dois procéder aux autres classements avec seulement les deux conditions (TDS et (Ca+Mg)/(Na). Et c'est ça qui me pose problème. Je suis cloué devant le PC depuis la matinée sans pouvoir avancer me causant de terribles douleurs à la nuque et au dos. Y'a t-il une solution? Comment conditionner l'arrêt dès que la première sous-classe est vérifiée? Comment continuer le travail pour avoir les résultats attendus?
  • La dernière feuille, donne les résultats de mon travail. Vous verrez bien où se trouve l'erreur (les cases ombrée en jaune). Il y a toujours le "Y1" au milieu qui cause le problème. Alors que cette condition ne dois pas être vérifiée si la sous classe "Ia" est obtenue. Comment l'éviter?
Je vous sollicite donc de bien vouloir m'aider à réaliser mon travail et me donner des conseils et des remarques concernant mon choix. Si une autre méthode existe, elle est la bienvenue! Moi, j'ai opté pour la combinaison des fonctions: SI, CONCATENER et RECHERCHEV, et je doute qu'il soit un bon choix parce que je n'arrive pas à maîtriser l'arrêt du calcul dès la réalisation de la première condition.

Dans l'attente de vous lire, je vous invite tous à agréer toutes mes salutations les plus cordiales!
Amicalement;
Stuka.
 

Pièces jointes

Bonsoir.
Je pense que j'écrirais une fonction perso dans un module standard :
VB:
Option Explicit
Function SubClass(ByVal TDS As Double, ByVal Ca As Double, ByVal Mg As Double, ByVal Na As Double, ByVal K As Double) As String
   Dim CaMgNa As Double
   CaMgNa = (Ca + Mg) / Na
   Select Case True
      Case TDS < 700 And (Ca + Mg) / (Na + K) > 3: SubClass = "Ia"
      Case TDS < 700 And CaMgNa > 3: SubClass = "Ib"
      Case TDS < 700 And CaMgNa > 1: SubClass = "II"
      Case TDS < 3000 And CaMgNa > 3: SubClass = "IIIa"
      Case TDS < 3000 And CaMgNa > 1: SubClass = "IIIb"
      Case TDS < 700 And CaMgNa < 1: SubClass = "IVa"
      Case TDS < 3000 And CaMgNa < 1: SubClass = "IVb"
      Case TDS > 3000 And CaMgNa > 3: SubClass = "IVc"
      Case TDS > 3000: SubClass = "IVd"
      End Select
   End Function
Elle peut peut être s'optimiser un peu …

Mais vérifiez déjà si c'est bon en 'Données'!G2, à propager sur 20 lignes :
Code:
=SubClass(B2;C2;D2;E2;F2)
 
Bonjour à tous,

Je tiens à vous remercier sincèrement pour l'aide précieuse que vous m'avez apportée dans la réalisation de mon travail. Votre expertise, votre disponibilité et le temps que vous m'avez consacré ont été d'une grande valeur pour moi.

Merci cher "Hecatonchire" pour votre précieuse remarque, j'ai téléchargé votre fichier et les points d'interrogation persistent toujours. Je dois vérifier mon travail dès que je trouve un temps libre;

Un autre merci pour vous cher "Dranreb", mais sincèrement, je n'ai jamais eu affaire à une macro. Comment l'ajouter? Va t-elle créer une nouvelle feuille dans laquelle elle va créer un tableau avec mes données classées?

Je ne vous oublie pas cher "TooFatBoy" pour votre remarquable travail. Vous avez traité le problème avec une nouvelle méthode que je ne connais pas mais elle est efficace. J'ai essayé de changé des valeurs et ça donne toujours de bons résultats!

Je m'excuse pour cette réponse un peu tardive. J'ai été en déplacement ces derniers jours afin de rencontrer un responsable de laboratoire, ce qui m'a empêché de vous répondre plus tôt.

Encore merci pour votre soutien et votre générosité !

Bien cordialement,
Stuka!
 
Merci beaucoup cher "TooFatBoy"!
Sincèrement, mon niveau est faible en Excel! Il me faut beaucoup d'apprentissage😉 surtout en matière de fonctions. Excel est très pratique et on arrive à résoudre plein de problèmes avec! Je dois me perfectionner!
Dans votre formule, quel est le rôle de "@"?
Préparez-vous à d'autres posts en ce qui concerne la classification des données. J'en ai ramené depuis ma rencontre avec le responsable du labo!

Sincères amitiés à vous tous et bonne continuation!
Cordialement;
Stuka.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour