Mise en forme conditionnelle

Re-bonjour à tous,

du coup, j'ai réouvert ce message, car j'ai des choses que je voudrais faire évoluer, mais je n'y arrive pas.

Je souhaiterai que maitenant que le calendrier se met à jour automatiquement, que dans les cellules qui sont colorées, apparaissent le nom de la personne qui a réservé ... l'idéal serait de l'avoir en cellule fusionnée sur la periode ...

je ne sais pas si c'est possible a faire.

J'ai aussi besoin que si le gite 15 est réservé que les chambres "Air", "Feu", et "Terre" soit mis en gris afin de dire qu'elles ne sont pas dispo, car le gite 15 correspond à ces 3 chambres.

Merci encore pour votre aide.

voici le lien pour le fichier : https://www.cjoint.com/c/EHAh5DuElbx

Laurent

J'ai mis la formule pour trouver le nom

J'ai grisé par MFC

https://www.cjoint.com/c/EHAnJvH8P0Y


lolo69490 a écrit :

l'idéal serait de l'avoir en cellule fusionnée sur la periode ...

trop complexe, car ensuite il faut défusionner

et pour éviter une formule encore plus chargée, j'écris souvent une MFC comme suit :

- si la cellule égale celle qui précède, alors je mets le texte en gris très clair

comme ceci seul le changement de nom est affiché en noir

Comme d'hab... c'est parfait !

Merci pour ta rapidité !!!

A plus

Lolo

bonjour Steelson,

désolé de te déranger à nouveau, mais j'avoue que je ne comprends pas un truc dans ton fichier ...

dans le calendrier, le 01 janvier, il y a des noms qui apparaissent sur les lignes 4 à 7, je ne sais pas à quoi ça correspond, si on supprime tous les noms du registre, tu as des 0 qui restent sur ces lignes et sur toutes les colonnes ???

Peux-tu voir à quoi ça correspond ?

Merci encore pour ton aide

Laurent

Hé bien, je ne comprends pas non plus !! j'avais bien vu et je ne saisis pas, je vais investiguer à nouveau ... (au pire, tu peux masquer la ligne, mais cela ne fait pas propre !)

Je commence à comprendre :

Si vous spécifiez la valeur 0 pour l'argument no_lig ou no_col, la fonction INDEX renvoie respectivement la matrice des valeurs de la colonne ou de la ligne entière.

Donc elle recopie les valeurs exactement aux mêmes lignes que le tableau de base !

Une correction s'impose, cela va allonger la formule !


Fichier trop lourd, ma connexion internet est trop lente aujourd'hui !!

Nouvelle formule en C3 :

=SI(SOMMEPROD(((Chambre_1=C$2)+(Chambre_2=C$2)+(Chambre_3=C$2)+(Chambre_4=C$2)+(Chambre_5=C$2)+(Chambre_6=C$2)+(Chambre_7=C$2))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3))*(LIGNE(Dte_contrat)-LIGNE(Registre!$B$3)))=0;"";(INDEX(noms;SOMMEPROD(((Chambre_1=C$2)+(Chambre_2=C$2)+(Chambre_3=C$2)+(Chambre_4=C$2)+(Chambre_5=C$2)+(Chambre_6=C$2)+(Chambre_7=C$2))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3))*(LIGNE(Dte_contrat)-LIGNE(Registre!$B$3))))))

Tu recopies cette formule et cette formule seulement (collage spécial > formule) de D3 jusque I3

Puis tu tires les formules C3 à I3 jusqu'en bas.

Cette fois c'est parfait ... merci pour ton aide !

Même le service après-vente est assuré le weekend .... trop fort

C'est pas fini, je suis rentré chez moi et j'ai réfléchi sur la route ... je vais te proposer quelque chose de plus simple ! il faudra juste modifier (à nouveau) la structuration des données, comme quoi en fonction de cela la solution peut être plus ou moins complexe !

pas de souci ...

En attendant je bosse sur la suite de ma base, car j'ai encore pas mal de chose à terminer avant le 11 septembre date à laquelle je dois le rendre.

Est-ce que ta nouvelle version sera aussi lourde (niveau calcul) que celle-ci, car je suis obligé de la copier sur 500 lignes donc ça rame pas mal ...

Le plus simple c'est peut etre que je te donne mon fichier sur lequel je bosse afin de te faire une idée...

lien :

Petite question, est-ce que je remets ce post en cours, ou je le laisse fermé ?

Merci pour ton aide ... je sais plus comment te le dire

Laurent

Bonjour,

Je ne vais pas travailler sur ton fichier car je risque de tout casser.

Voici quelle était la simplification à laquelle je pensais :

Au lieu de mettre Chambre 1, Chambre 2 etc ... dans le registre des réservations, il aurait peut-être été plus simple de nommer en tête les chambres et de renseigner par une croix les chambres réservées.

Du coup, dans le calendrier, au lieu de scruter toutes les chambres pour savoir si telle chambre a bien été réservée, on pouvait aller directement sur celle recherchée.

Je ne sais pas si je me suis bien fait comprendre, faudrait que je fasse un extrait !

Voici l'idée ... sur une ancienne version au format XL2010

https://www.cjoint.com/c/EIbbyesY1AQ

QUOI !!! 3h24 !!! il faut dormir la nuit, sinon tu seras plus en super forme pour me faire des supers fichiers !!!

Ca m'a l'air pas, je suis en train de modifier mes macros pour qu'à la place des noms des chambres, j'ai des "X" directement dans les colonnes des chambres. Au premier abord, j'ai l'impression que du coup, ça a accélérer les calculs.

Je te tiens au jus des que j'ai fini mes modifs.

Merci

hello,

c'est bon j'ai fini mes modifs en vba ... c'est nickel ça marche !

en revanche, pourrais-tu voir (je sais j'abuse ) si tu peux trouver un moyen pour me dire que la chambre sélectionnée est déjà réservée ? car pour le moment, je n'ai rien qui me permette de voir ça si je sélectionne deux fois la même chambre à la même date.

Merci pour ton aide si précieuse !

lolo69490 a écrit :

en revanche, pourrais-tu voir (je sais j'abuse ) si tu peux trouver un moyen pour me dire que la chambre sélectionnée est déjà réservée ? car pour le moment, je n'ai rien qui me permette de voir ça si je sélectionne deux fois la même chambre à la même date.

Non seulement c'est une bonne idée, mais en plus c'est indispensable car cela peut donner un nom qui n'est pas le bon, ni l'un ni l'autre qui a réservé mais un troisième !!

Pour corriger,

en C3

=SI(SOMMEPROD(((Chambre_1="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=0;"";SI(SOMMEPROD(((Chambre_1="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=1;(INDEX(noms;SOMMEPROD(((Chambre_1="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3))*(LIGNE(Dte_contrat)-LIGNE(Registre!$B$3)))));" ¡ conflit ! "))

en D3

=SI(SOMMEPROD(((Chambre_2="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=0;"";SI(SOMMEPROD(((Chambre_2="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=1;(INDEX(noms;SOMMEPROD(((Chambre_2="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3))*(LIGNE(Dte_contrat)-LIGNE(Registre!$B$3)))));" ¡ conflit ! "))

en E3

=SI(SOMMEPROD(((Chambre_3="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=0;"";SI(SOMMEPROD(((Chambre_3="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=1;(INDEX(noms;SOMMEPROD(((Chambre_3="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3))*(LIGNE(Dte_contrat)-LIGNE(Registre!$B$3)))));" ¡ conflit ! "))

en F3

=SI(SOMMEPROD(((Chambre_4="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=0;"";SI(SOMMEPROD(((Chambre_4="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=1;(INDEX(noms;SOMMEPROD(((Chambre_4="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3))*(LIGNE(Dte_contrat)-LIGNE(Registre!$B$3)))));" ¡ conflit ! "))

en G3

=SI(SOMMEPROD(((Chambre_5="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=0;"";SI(SOMMEPROD(((Chambre_5="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=1;(INDEX(noms;SOMMEPROD(((Chambre_5="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3))*(LIGNE(Dte_contrat)-LIGNE(Registre!$B$3)))));" ¡ conflit ! "))

en H3

=SI(SOMMEPROD(((Chambre_6="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=0;"";SI(SOMMEPROD(((Chambre_6="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=1;(INDEX(noms;SOMMEPROD(((Chambre_6="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3))*(LIGNE(Dte_contrat)-LIGNE(Registre!$B$3)))));" ¡ conflit ! "))

en I3

=SI(SOMMEPROD(((Chambre_7="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=0;"";SI(SOMMEPROD(((Chambre_7="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3)))=1;(INDEX(noms;SOMMEPROD(((Chambre_7="X"))*((Date_arrivée+Heure_Arrivée)<=($J3+$B3))*((Date_depart+Heure_Départ)>=($J3+$B3))*(LIGNE(Dte_contrat)-LIGNE(Registre!$B$3)))));" ¡ conflit ! "))

je n'ai pas trouvé plus simple ...

c'est parfait ... comme d'hab !

Merci vraiment pour ton aide si précieuse !!!

Est ce que tu crois que je pourrais encore abusé ??? je dois impérativement finir mon fichier pour vendredi 11 septembre ... si j'ai encore des soucis puis-je t'écrire en MP ?

Bonne journée

réponse en MP

Rechercher des sujets similaires à "mise forme conditionnelle"