2 possibilités, 3 catégories et 2 conditions

Résolu/Fermé
HoustonFrenchcat Messages postés 12 Date d'inscription lundi 25 janvier 2016 Statut Membre Dernière intervention 29 janvier 2016 - 25 janv. 2016 à 17:10
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 - 29 janv. 2016 à 13:53
Bonjour à tous,

Je recherche une formule me permettant de conjuguer 2 possibilités, 3 catégories et 2 conditions!
Je m'explique:

La cellule A1="CDI" ou "CDD".
La cellule B1="Catégorie A" ou "Catégorie B" ou "Catégorie C"
La cellule C1= durée du préavis (les durées sont écrite sous le format "2 ans, 3 mois, 0 jour", par exemple)
La cellule D1=cellule où je cherche à utiliser la formule.

1ère possibilité: Si A1="CDD",
le préavis est nul (écrit "0 an, 0 mois, 0 jour")

2e possibilité: Si A1="CDI",
--> le préavis est de 3 mois s'il s'agit d'une catégorie A;
--> le préavis est de 2 mois s'il s'agit d'une catégorie B ou d'une catégorie C, et qu'elle a travaillé >=2 ans;
--> le préavis est de 1 mois s'il s'agit d'une catégorie B ou d'une catégorie C, et qu'elle a travaillé <2 ans.

Je réfléchis à une formule du type suivant:
SI(A1="CDD";"0 an, 0 mois, 0 jour";SI(A1="CDI";(SI(OU(B1="Catégorie A"";"0 an, 3 mois, 0 jour";SI(OU(B1="Catégorie B";B1="Catégorie C");SI(OU(C1<"2 ans, 0 mois, 0 jour";C1>="2 ans, 0 mois, 0 jour");"0 an, 1 mois, 0 jour";"0 an, 2 mois, 0 jour")))))

Je crois que j'embrouille les SI ni les OU... Je dois me compliquer la vie, je suppose!
Quelqu'un aurait-il une idée pour résoudre ce problème? Merci beaucoup d'avance!
A voir également:

3 réponses

sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
25 janv. 2016 à 17:30
Bonjour,

Un conseil : pas sur Excel ! Si c'est une gestion de personnel que tu recherches, Excel pourrait ne pas être adapté à tes besoins et créer des problèmes d'ordre juridique. Il existe des outils qui permettent de gérer ça un peu mieux.

Sinon sur ta formule, je ne comprend pas la comparaison C1<"2 ans, 0 mois, 0 jour" qui ne peut pas fonctionner (enfin je crois, en tout cas en la mettant telle qu'elle dans Excel il ne me l'a pas convertie en quelque chose d'exploitable.
Et ça OU(B1="Catégorie A"";"0 an, 3 mois, 0 jour" c'est faux, tu as un OU mais pas fermé, et l'instruction suivante semble concerner ton SI

0
HoustonFrenchcat Messages postés 12 Date d'inscription lundi 25 janvier 2016 Statut Membre Dernière intervention 29 janvier 2016
25 janv. 2016 à 17:44
Bonjour et merci pour ta réponse.
Je te rassure, il ne s'agit pas d'un tableau de gestion mais d'un tableau récapitulatif personnel.

D'autre part, concernant la formule, j'essaye de suivre la logique excel: test logique, valeur si vrai, valeur si faux:

Test logique:
SI(A1="CDD";

Valeur si vrai:
"0 an, 0 mois, 0 jour";

Valeur si faux:
SI(A1="CDI";

Et à l'intérieur de cette partie, de nouveau:
Test logique:
(SI(OU(B1="Catégorie A";

Valeur si vrai:
"0 an, 3 mois, 0 jour";

Valeur si faux:
SI(OU(B1="Catégorie B";B1="Catégorie C");

Et à l'intérieur de cette sous-partie, de nouveau: test logique, valeur si vrai, valeur si faux
SI(OU(C1<"2 ans, 0 mois, 0 jour";C1>="2 ans, 0 mois, 0 jour");"0 an, 1 mois, 0 jour";"0 an, 2 mois, 0 jour")))))

Je ne sais pas si je fais mieux comprendre mon raisonnement?
0
sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016 285
25 janv. 2016 à 17:47
Oui, mais ça c'est faux :

(SI(OU(B1="Catégorie A"";"0 an, 3 mois, 0 jour";

Ton OU attend des tests logiques. Le premier, c'est B1="Catégorie A", mais le deuxième, c'est quoi ? "0 an, 3 mois, 0 jour"; n'est pas un test logique, donc soit tu rajoutes un test, soit tu fermes la parenthèse de ton OU (ce qui au passage le rendrait inutile)
0
HoustonFrenchcat Messages postés 12 Date d'inscription lundi 25 janvier 2016 Statut Membre Dernière intervention 29 janvier 2016 > sipherion Messages postés 1798 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 19 décembre 2016
25 janv. 2016 à 18:15
D'accord...
En fait, je pensais comme ceci:
soit catégorie A, soit catégorie B ou catégorie C.
D'où l'utilisation du OU.

J'ai essayé en supprimant le OU de la formule au niveau de la catégorie A, mais la formule n'est toujours pas bonne. Je continue à chercher...
0
DjiDji59430 Messages postés 4026 Date d'inscription samedi 19 avril 2008 Statut Membre Dernière intervention 14 avril 2024 644
25 janv. 2016 à 17:37
Bonjour,


C'est dans quelle cellule qu'est indiqué qu"elle a travaillé plus de 2 ans ??

Quand on joint un fichier-test, (avec TOUTES les explications ou les résultats souhaités) ou mieux, si c'est possible, le fichier concerné, c'est plus commode pour les intervenants. Et tu as plus de chances que quelqu'un s’intéresse à ton problème

1) Tu vas dans https://www.cjoint.com/
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier
3) Tu descends en bas de la page pour cliquer sur [Créer le lien Cjoint]
4) Au bout de quelques secondes s'affiche le lien en bleu souligné ; tu le sélectionnes et tu fais "Copier"
5) Tu reviens dans la discussion, et, dans ton message de réponse, tu fais : "Coller".

Cordialement.
0
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
Modifié par Arkana0 le 25/01/2016 à 17:42
Bonjour,

Peux-tu dire en termes "clairs" (et non-pas en formule) ce que tu attends dans la colonne D ? C'est très confus à trouver.
0
HoustonFrenchcat Messages postés 12 Date d'inscription lundi 25 janvier 2016 Statut Membre Dernière intervention 29 janvier 2016
25 janv. 2016 à 17:53
Bonjour,

la colonne D me donneras automatiquement la durée du préavis en fonction des critères suivants:

- si CDD, pas de préavis (0 an, 0 mois, 0 jour);
- si CDI, selon la catégorie (A, B ou C);
- si catégorie A, préavis de 3 mois (écrit sous forme 0 an, 3 mois, 0 jour);
- si catégorie B ou catégorie C, préavis de 2 mois si la personne a travaillé moins de 2 ans;
- si catégorie B ou catégorie C, préavis de 1 mois si la personne a travaillé 2 ans ou plus.

(Pour des raisons d'addition de dates dans d'autres colonnes, je tiens à garder le format "0 an, 3 mois, 0 jour".)
0
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
25 janv. 2016 à 17:55
Du coup, je ne vois pas la distinction entre la colonne C et la colonne D
0
HoustonFrenchcat Messages postés 12 Date d'inscription lundi 25 janvier 2016 Statut Membre Dernière intervention 29 janvier 2016
25 janv. 2016 à 18:03
Tu as tout à fait raison, je me suis mal exprimé. (A force de cogiter sur ce problème, je m'emmêle les pinceaux!)

La colonne C me donne la durée durant laquelle la personne a travaillé dans l'entreprise
La colonne D me donne la durée du préavis.

Sorry pour la confusion !
0
Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023 181
Modifié par Arkana0 le 25/01/2016 à 18:23
OK, vu les conditions, je propose, plutôt que d'enchaîner les SI() imbriqués, d'utiliser la fonction RECHERCHEV() !

L'idée serait de faire quelque part un petit tableau avec deux colonnes : Catégorie du CDI et Préavis. En première ligne la catégorie A, puis B, puis C.
Dans mon exemple de formule, je vais partir du principe que ce tableau est renseigné de E1 à F3 (sans ligne de titre pour ses colonnes). Il faudra donc l'adapter.
=SI(A1="CDD";"0 an, 0 mois, 0 jour";RECHERCHEV(B1;E$1:F$3;2;FAUX))

Le fonctionnement de la formule :

Le SI() permet de distinguer si tu as affaire à un CDD ou un CDI. Si c'est un CDD, il renvoie directement qu'il n'y a pas de préavis.
Autrement, la formule va pour chaque ligne regarder ce qui est renseigné en colonne B (le type de CDI) et rechercher dans le tableau défini de E1 à F3 le préavis associé (le 2 fait référence à la deuxième colonne de la sélection), le "FAUX" indique qu'il doit rechercher la valeur exacte renseignée en B et non-pas une valeur proche.

Si tu renseignes un CDI avec un autre type que A,B ou C (erreur de typo), la fonction te renverra la valeur "N#A", indiquant qu'il y a un problème.
De même, si à cause d'une erreur de typo ou si introduits des contrats type "Intérim", elle ne sera plus valable.


A la place du RECHERCHEV(), on aurait très bien pu imbriquer plusieurs SI() pour obtenir quelque-chose de cette allure :
SI(A1="CDD";...;SI(B1="A";...;SI(B1="B";...;SI(B1="C";...;"Erreur"))))
0
HoustonFrenchcat Messages postés 12 Date d'inscription lundi 25 janvier 2016 Statut Membre Dernière intervention 29 janvier 2016 > Arkana0 Messages postés 4399 Date d'inscription mercredi 11 février 2009 Statut Modérateur Dernière intervention 10 février 2023
29 janv. 2016 à 13:42
Bonjour Arkana,

Je voulais te remercier pour ton aide. Après quelques jours, j'ai repris le tableau et en relisant ta réponse, j'ai fini par avoir un déclic.

J'ai trouvé une formule qui a l'air de bien fonctionner:
=SI(T19="";"";SI(ET(T19<>"";B19="CDD");W$9;SI(C19="Catégorie A";W$6;SI(ET(OU(C19="Catégorie B";C19="Catégorie C");U19<"2 ans, 0 mois, 0 jour");W$7;W$8))))

Je pouvais difficilement utiliser la fonction RECHERCHEV() qui pourtant m'aurait été bien utile car le problème que j'ai soulevé faisait partie d'un ensemble plus grand et plus complexe (les colonnes et les cellules visées n'étaient pas forcément les unes à côté des autres).

J'ai également utilisé des colonnes masquées pour utiliser des formules qui autrement auraient été trop longues avec des SI().

Bref, j'ai apprécié le temps que tu as passé sur mon problème !
Merci encore!
0