Excel : Comparaison avec plusieurs conditions

Résolu/Fermé
athizy Messages postés 21 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 19 mars 2010 - 4 mars 2010 à 13:56
athizy Messages postés 21 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 19 mars 2010 - 5 mars 2010 à 11:24
Bonjour a tous,

J'ai un problème avec un fichier excel : j'aimerai pouvoir comparer une cellule avec un ensemble d'autres cellules sur trois colonnes, l'une comprenant des références, les deux autres des dates (date de début et date de fin). Les dates de début et de fin correspondent donc à la durée de réservation d'une référence.
A chaque ajout de référence, date_début et date_fin je voudrais une formule qui me permette de savoir si mon ajout n'a pas déjà été emprunté à cette date.

Exemple:
Référence______Date_début_____________Date_fin
AA____________22/03/2010____________25/03/2010
BB____________10/04/2010____________15/04/2010
AA____________23/03/2010____________24/03/2010

J'avais pensée à mettre en couleur la cellule grâce à la mise en forme conditionnelle ou à une formule sur une autre colonne qui retourne la possibilité de réservation ou non.

J'avais pensé à une formule de ce style pour les dates mais elle ne fonctionne pas et ne lie pas les références aux dates :
(=SI(OU(ET($B$2:B15<=B16;B16<=$C$2:C15);OU(ET($B$2 :B15<=C16;C16<=$C$2:C15));ET($B$2:B15>=B16;$C$2:C1 5>=C16));"déjà_pris";"c_bon")

Si vous avez des idées?

Merci d'avance.
Cordialement.
A voir également:

12 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
4 mars 2010 à 23:25
bonjour

Il me semble que la mise en forme conditionnelle devrait fonctionner avec la formule :
=ET(ESTNUM($C2);SOMMEPROD(($A$2:$A2=$A2)*((($B2>=$B$2:$B2)*($B2<=$C$2:$C2))+(($C2<=$C$2:$C2)*($C2>=$B$2:$B2))))>2)

Il faut sélectionner la plage à partir de A2 et la formule s'adapte jusqu'à la dernière cellule C sélectionnée.
1
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
4 mars 2010 à 23:29
hé bé, pas mal ;-)
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
4 mars 2010 à 17:30
bonjour

Tu peux essayer cette formule dans une mise en forme conditionnelle et lorsque tu saisiras ta seconde date ta mise en forme s'appliquera si cet ensemble de 3 cellules est déjà saisi.
=ET(NON(ESTVIDE($C2));SOMMEPROD(($A$2:$A$22=$A2)*($B$2:$B$22=$B2)*($C$2:$C$22=$C2))>1)

J'ai mis la plage A2:C22, à toi d'adapter à ton classeur.
0
athizy Messages postés 21 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 19 mars 2010
4 mars 2010 à 17:43
Merci,
Je vais visualiser tout ça.

Cordialement
0
athizy Messages postés 21 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 19 mars 2010
4 mars 2010 à 17:52
J'ai utilisé ta formule, mais elle ne fonctionne que pour les dates identiques. J'aurais voulu que ça devienne rouge (mise en forme conditionnelle) quand les dates se chevauchent sans forcément être identiques.

As-tu une idée ?

Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Raymond PENTIER Messages postés 58397 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 26 avril 2024 17 094
4 mars 2010 à 17:54
Bonjour athizy, et bienvenue dans ce forum.

On voit bien que tu as fait un effort d'explication, mais cela aurait été beaucoup plus facile pour nous de comprendre le problème, de contrôler ta formule et de t'en proposer une autre si tu nous avais envoyé ton fichier.
Pour ce faire, tu peux utiliser https://www.cjoint.com/ ou encore http://cijoint.fr/ sans oublier de revenir dans ton message pour faire "coller", afin que le lien que tu auras créé s'ajoute au corps de ton message.
Ta formule, permets-moi de te le dire brutalement, est hautement fantaisiste car tu ne respectes pas la syntaxe des fonctions ni la logique d'une formule.
Ainsi, ce n'est pas
(=SI(OU(ET(**a**;**b**);OU(ET(**c**;**d**));ET(**e**;**f**));"pris";"bon")
mais
=SI(OU(ET(**a**;**b**);ET(**c**;**d**));SI(ET(**e**;**f**);"pris";"bon"))
qui signifierait : si l'une des conditions a+b ou c+d est vérifiée, de 2 choses l'une, la condition e+f est vérifiée et j'affiche "pris", elle n'est pas vérifiée et j'affiche "bon". Mais alors on n'a rien prévu pour le cas ou aucune des conditions a+b ni c+d n'est vérifiée !
0
athizy Messages postés 21 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 19 mars 2010
4 mars 2010 à 18:03
Voici le fichier.
Merci pour les conseils et vive les Antilles

https://www.cjoint.com/?desbOOMKib
0
Raymond PENTIER Messages postés 58397 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 26 avril 2024 17 094
4 mars 2010 à 18:19
Ah !
Tu avais oublié de placer les accolades de calcul matriciel aux extrémités de ta formule du post initial ...
On les obtient en appuyant simultanément sur les touches [alt gr] et [4] pour { ou sur les touches [alt gr] et [+] pour }

► Explique-moi pourquoi en D3 tu as saisi B$2:$E3 et pas simplement B$2:B2 comme dans ton post initial ? Même question évidemment pour C$2:F$2 au lieu de C$2:C2 ...

► Pourquoi ta formule ne fait jamais référence à la donnée essentielle, celle qui est en colonne A ? Telle qu'elle est rédigée, ta formule voudrait dire que dès qu'un matériel quelconque est dehors, tous les autres sont bloqués !
0
Bonjour,

Je pense avoir une ébauche de solution:

https://www.cjoint.com/?det7xlNvCW
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 214
4 mars 2010 à 20:41
Bonsoir,

Je crains que ce ne soit un peu complexe par formule.
Une proposition en vba : athizy.xls

Le contrôle se fait à la saisie donc pour tester revalide tes dates.
Pour traiter un tableau déjà rempli tu peux remplace / par / dans la plage des dates pour forcer une validation de ces cellules.
Le message donnant la ligne peut être désactivé en mettant une ' devant msgbox(...)

eric
0
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 685
4 mars 2010 à 23:39
bonsoir,

Si l'on veux autoriser qu'une référence commence le même jour qu'une date fin on peut modifier ainsi :
=ET(ESTNUM($C2);SOMMEPROD(($A$2:$A2=$A2)*((($B2>$B$2:$B2)*($B2<$C$2:$C2))+(($C2<$C$2:$C2)*($C2>$B$2:$B2))))>0)


bonsoir Éric et merci car il faut persévérer quand on est parti dans une direction sans avoir vu le problème de l'intervalle à gérer.
0
athizy Messages postés 21 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 19 mars 2010
5 mars 2010 à 09:22
Bonjour,

Un grand merci à tous car vos solutions fonctionnent.

Bonne continuation.

Cordialement.
0
athizy Messages postés 21 Date d'inscription jeudi 4 mars 2010 Statut Membre Dernière intervention 19 mars 2010
5 mars 2010 à 11:24
Après comparaison avec le résultat que je voulais obtenir, voici la mise en forme conditionnelle qui fonctionne pour tous mes cas même les plus critiques.

=ET(ESTNUM($C4);SOMMEPROD(($A$2:$A4=$A4)*((($B4>$B$2:$B4)*($B4<$C$2:$C4))+(($C4<$C$2:$C4)*($C4>$B$2:$B4))+(($C4=$C$2:$C4))+($B4=$B$2:$B4))+(($C4>$C$2:$C4))*($B4<$B$2:$B4))>2)

Bonne journée a vous.
0