Fonction sur Excel si mais plus compliquée

Résolu/Fermé
Anai08 - 14 mai 2009 à 22:17
 patrice - 18 mai 2009 à 13:03
Bonjour,
J'ai besoin de votre aide ... Je vais essayer d'être claire dans ma demande.

Voilà...
j'ai un menu déroulant qui comprend 10 plages horaires différentes.
j'ai un tableau avec "24heures", chaque colonnes correspondant à 15 minutes
Le but de ce tableau. Lorsqu'on sélectionne une place horaire, excel met tout seul comme un grand des X ou de la couleur dans les cellules correpospondant. J'ai trouvé la fonction Si suivante
=SI($B$9="0000 - 0600";"X";" ")
MAIS il y a des plages horaires qui peuvent avoir les même heures : 0000-0600 et une autre de 0500-1200. Donc si je mets une formule type
=SI($B$9="0000 - 0600";"X";SI($B$9="0500 - 1200";"0";" "))
je vais avoir des X de ma colonne 0000 à ma colonne 12000...
Je voudrais donc trouver une formule qui dise :
si dans menu déroulant = 0500-1200 alors mettre des X dans les celulles .....
Un grand merci de votre aide
A voir également:

9 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
16 mai 2009 à 23:31
Si tu veux garder ton xxxx-0030 ça donne :
=SI($B6="";"";SI(ET(GAUCHE($B6;4)*1<=TEXTE((COLONNE()-7)/96;"[h]mm")*1;SI(GAUCHE($B6;4)*1<DROITE($B6;4)*1;DROITE($B6;4)*1>=TEXTE((COLONNE()-6)/96;"[h]mm")*1;DROITE($B6;4)*1+2400>=TEXTE((COLONNE()-6)/96;"[h]mm")*1));"x";""))

mais ne va pas ajouter une plage 2330-0500 sinon le même pb va se retouver à gauche...
eric

PS: je vois que tu es partie de ma feuille, tu peux vider ou supprimer la ligne 3, elle ne me servait qu'à afficher les horaires.
2
WAOU ... c'est génial. Un grand MERCI. Je n'aurais jamais trouvé ...

Je sais à qui m'adresser si j'ai un autre soucis.

Bonne fin de dimanche
Anaï
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
14 mai 2009 à 23:11
Bonsoir,

regarde si ça te convient.
Pour la cellule 0600-0615 :
=SI(ET(GAUCHE($B9;4)*1<=600;DROITE($B9;4)*1>=615);"x";"")

eric
0
Merci Eriiiiiiiiic pour tes propositions. Je vais essayer dans la journée. Te tiens au courant

A bientôt
Anaï
0
Hello,
Je crois que ce que tu m'as donné ne m'aide pas ... désolée, je me suis peut-être mal exprimée...
Le plus simple serait que je puisse t'envoyer mon fichier et ce serait clair ...
C'est possible pour toi ?
Merci Merci .. j'ai bientôt plus de cheveux ...
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
14 mai 2009 à 23:22
re,

et si tu mets :
=SI(ET(GAUCHE($B9;4)*1<=(ENT((COLONNE()-3)*0.25)*100+MOD((COLONNE()-3)*0.25;1)*60);DROITE($B9;4)*1>=(ENT((COLONNE()-2)*0.25)*100+MOD((COLONNE()-2)*0.25;1)*60));"x";"")

tu peux recopier ta formule à droite et à gauche (et vers le haut et le bas) sans à avoir à saisir les horaires testés, à condition que ta cellule 0000-0015 soit en colonne C comme je l'imagine.

eric.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
14 mai 2009 à 23:31
et pour le plaisir une autre un peu plus courte :
=SI(ET(GAUCHE($B10;4)*1<=TEXTE((COLONNE()-3)/96;"hhmm")*1;DROITE($B10;4)*1>=TEXTE((COLONNE()-2)/96;"hhmm")*1);"x";"")
0

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

Posez votre question
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
16 mai 2009 à 09:43
Bonjour,

Je pensais que ta feuille ressemblait à ça anai08.xls
Et il fallait juste ajouter un test en cas B2 vide :
=SI($B2="";"";SI(ET(GAUCHE($B2;4)*1<=TEXTE((COLONNE()-3)/96;"hhmm")*1;DROITE($B2;4)*1>=TEXTE((COLONNE()-2)/96;"hhmm")*1);"x";""))

Si ce n'est pas ça tu peux déposer ton fichier sur cijoint.fr et coller le lien ici.

eric
0
Coucou Eric,

C'est quasi bon; déjà un grand merci !

On a juste une heure de décallage. Je te joins http://www.cijoint.fr/cjlink.php?file=cj200905/cijmWXUyXl.xls je crois que c'est effectivement le plus simple.

Merci de ton aide et à plus
Anaï
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
16 mai 2009 à 23:18
Bonsoir,

Ce décalage car ton 0000 n'était pas en colonne C mais G.
Il y avait d'autre part une anomalie sur 2345 (à cause du 0000 qui suit) et la formule devient en G6:
=SI($B6="";"";SI(ET(GAUCHE($B6;4)*1<=TEXTE((COLONNE()-7)/96;"[h]mm")*1;DROITE($B6;4)*1>=TEXTE((COLONNE()-6)/96;"[h]mm")*1);"x";""))
Il reste un pb si une plage dépasse 0000 comme 1530-0030. En effet difficile de savoir s'il s'agit de 0030 du même jour ou du lendemain.
Est-ce genant pour toi de la noter 1530-2430 ? Sinon ça va rallonger la formule.

eric
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
17 mai 2009 à 23:16
Merci, bonne semaine...
eric
0
Salut Eric,

Excellent ta formule !!

J'ai une petite question, serait-il possible de remplacer les X dans les cellules par une couleur ? Comme je ne suis pas un as d'excel pourrais-tu m'aider.

D'avance, je te remercie

Patrice
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
18 mai 2009 à 08:51
Bonjour,

Non, on ne peut mettre de couleur par formule. Ca se fait en vba.
Mais tu peux très bien utiliser une mise en forme conditionnelle pour colorer (menu 'format'), avec encre et fond même couleur tu ne vois plus le x.
eric
0
Merci Eric, c'est vrai pourquoi faire compliqué quand tout peut se résoudre simplement. Bonne journée Patrice
0