Conditions SI imbriquées

Résolu/Fermé
Alex - Modifié le 8 avril 2020 à 15:23
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 - 9 avril 2020 à 10:50
Bonjour tout le monde,

Je rencontre des difficultés avec les conditions "SI" imbriquées. J'ai réussi à faire une première partie, mais je bloque pour la suite.
J'utilise Excel 2010. Je tente en format xlsx.

Concrètement, j'ai crée un fichier pour faciliter le traitement de Notes de frais.
Dans la feuille, j'indique le nombre de nuit, le prix de chaque nuit. La feuille calcule dans une cellule le montant total des nuits (nbr de nuit * montant de la nuit) et calcule dans une autre cellule le "montant à rembourser".
==> Pour calculer le montant à rembourser, s'il est inférieur au plafond, on prend le montant. S'il est supérieur au plafond, on prend le plafond.
==> Selon que je sois à Paris, ou ailleurs, le plafond de remboursement de l'Hôtel n'est pas le même. J'ai stocké les plafonds dans une feuille différente de mon classeur (pour pouvoir les modifier facilement).

A ce stade, j'arrive à gérer le cas de Paris, mais je n'arrive pas à y associer le cas des "Autres" villes.

Voici ma formule actuelle :
=SI(ET(C11="Paris";'Note de frais'!O11>('Note de frais'!M11*Paramètres!G5));'Note de frais'!M11*Paramètres!$G5;O11)

Colonne C : Lieu de déplacement (= Liste déroulante avec "Paris" ou "Autre" mais on peut y saisir autre chose)
Colonne M : Nombre de nuits
Colonne N : Prix par nuit
Colonne O : Montant à prendre en compte (= M*N)

Comment faire pour que en complément de cette première condition, si C11 est différente de "Paris", alors le plafond à vérifier soit dans Paramètres!G6 ?
J'utilise mal les ET et le OU j'imagine mais à force d'essayer dans tous les sens je n'y arrive plus.

Votre aide serait plus (mais vraiment plusss) qu'appréciée.
N'hésitez pas à me faire préciser si je ne suis pas clair.

Bonne journée !

4 réponses

ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié le 8 avril 2020 à 15:53
Bonjour

Essaies avec la structure suivante

=SI(C11="Paris"
    ;SI('Note de frais'!O11>'Note de frais'!M11*Paramètres!G5
        ;'Note de frais'!M11*Paramètres!$G5
        ;O11)
    ;la partie sinon de C11 = "Paris"
   )


RQ. attention aux parenthèses

Cdlmnt
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
8 avril 2020 à 15:56
ZZ. Message modifié à 15h53
0
via55 Messages postés 14403 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 24 avril 2024 2 702
8 avril 2020 à 16:16
Bonjour Alex

Ce n'est pas un SI qu'il faut mais un MIN associé à une RECHERCHEV dans le tableau des plafonds
exemple avec 2 possibilités de liste, à adapter : https://www.cjoint.com/c/JDiopvYVHQf

Cdlmnt
Via

0
Bonjour à tous les deux,

Un grand merci !!

La solution de ccm81 fonctionne très bien pour moi avec seulement 1 lieu à tester et une solution unique si le test ne passe pas, ainsi une fois complet :

=SI(C11="Paris";
SI('Note de frais'!O11>'Note de frais'!M11*Paramètres!$G$5
;'Note de frais'!M11*Paramètres!$G$5
;O11)
;SI('Note de frais'!O11>'Note de frais'!M11*Paramètres!$G$6
;'Note de frais'!M11*Paramètres!$G$6
;O11)
)


Je vais quand même implémenter la solution de via55 avec MIN et RechercheV, qui après test marche très bien aussi ! Et qui sera plus évolutive si ma politique de plafonds se précise avec des lieux en plus.

Elle ressemble à ceci (j'y ai rajouté une condition pour ne pas afficher si elle est vide ou = à 0) :
=SI(M11*N11=0
;""
;(MIN(O11
;SIERREUR(RECHERCHEV(C11
;Paramètres!$F$5:$G$6
;2
;0)
;Paramètres!$G$6)*M11)
)
)


Un grand merci à tous les deux encore une fois. Réactifs, efficaces, et cela m'a permis de mieux comprendre pourquoi je bloquais.
0
ccm81 Messages postés 10851 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 16 avril 2024 2 404
Modifié le 9 avril 2020 à 10:51
Au cas où tu garderais la première solution, en utilisant l'ide de via55, c'est plus concis
=SI(C11="Paris"
    ;MIN('Note de frais'!O11;'Note de frais'!M11*Paramètres!G5)
    ;MIN('Note de frais'!O11;'Note de frais'!M11*Paramètres!G6)
   )


Cdlmnt
0