Colorier réservation

Bonjour,

Je voudrais faire un truc le plus simple possible pour colorier les cellules d'une feuille excel "planning02"dont la colonne A contient le n° de toutes les chambres à louer et la ligne 3, tous les jours d'une année.

Les informations concernant les dates de location sont en colonne J et K, le n° de chambre en colonne M de la feuille RESA alimentée via un formulaire.

Les cellules représentant les périodes louées seraient, par exemple coloriées en rouge.

J'ai bien trouvé des solutions approchantes sur le forum mais beaucoup trop complexes et que je n'ai pas su adapter.

Merci d'avance pour vos lumières.

Cdlt

Ciboulette

Bonjour

Tes explications seraient bien plus claires si on pouvait les suivre à l'aide du fichier qui s'y rapporte.

Bye !

gmb a écrit :

Bonjour

Tes explications seraient bien plus claires si on pouvait les suivre à l'aide du fichier qui s'y rapporte.

Bye !

Evidemment !!!!!

Voilà !

et merci par avance,

Cdlt

Ciboulette

24essai-planning.xlsx (38.16 Ko)

Bonjour,

De ce genre là?

Pierre

31resahotel.xlsm (133.16 Ko)

Bonsoir,

Oui, et je l'avais trouvé, mais je n'ai pas su l'adapter à mon cas ;-(((((( et je ne veux pas reprendre un fichier tel que. Je veux comprendre et que cela me serve de leçon.

Il me semble que ces macros sont complexes car en plus de traiter pratiquement la même chose que ce que je souhaite, il me semble qu'il y a un souci esthétique qui rend tout ça difficile à comprendre quand on débute.

Merci quand même

Cdlt

Ciboulette

Bonsoir,

Si c'est une simple MFC... :

=SOMMEPROD((RESA!$M$2:$M$35=$A4)*(RESA!$J$2:$J$35<=B$3)*(RESA!$K$2:$K$35>B$3))

Formule conditionnelle appliquée à l'ensemble de la plage B4:ON35 (planning02).

Cordialement

Bonjour à tous

Pour agrémenter la solution de MFerrand en mettant le nom de l’occupant dans la cellule rouge…

Bye !

Bonjour,

Ah ! Vous êtes géniaux !!!!!

Voilà ce que c'est quand on a le nez dans le guidon. Je cherchais une macro alors qu'une mise en forme conditionnelle suffisait à résoudre mon problème. Il faut dire que la nouvelle présentation de la MFC dans la version excel 2013 m'a un peu déroutée. Toutes ces mises en forme prédéfinies m'ont plus gênée qu'aidée. (Faut bien que je me trouve des excuses !!!)

Il me reste à analyser et bien comprendre la formule. J'y cours.

Super aussi la macro qui permet de faire apparaître le nom.

Encore

et très bonne journée,

Cordialement

Ciboulette

Bonjour, une adaptation de l'adptation agrémentée pour le fun...C'est du pareille au même que le fichier resahotel en moins bien et a approfondir dans les moindres détails

sans titre

Bonjour Machin,

Très bonne idée. C'est quand même super de bien maitriser Excel.

Je m'acharne ...... je vais y arriver (avec votre aide à tous).

Merci

Bonne journée

Ciboulette

En réalité, c'est seulement avec votre aide que vous y arriverez. Nous ne faisons qu'indiquer le chemin à prendre pour aller...Vers l'horizon :/

OK OK, mais c'est vite dit !

Je te signale que je dois bien avoir 10 kg de bouquins sur excel et le VBA et c'est seulement depuis que je fréquente le site Excel-pratique : les cours et le forum que je comprends doucement mais surement.

Ce site est vraiment super bien fait, et les intervenants sont compétents et disponibles. Je tire mon chapeau !!!!

Bien cordialement et bon après midi,

Ciboulette

10km de livre sur vba...Mon dieu le nombre d'arbre mort pour rien.

gmb a écrit :

Bonjour à tous

Pour agrémenter la solution de MFerrand en mettant le nom de l’occupant dans la cellule rouge…

Bye !

J'ai adopté ta macro mais j'ai un problème d'adaptation à mon fichier. Elle fonctionnait parfaitement, mais j'ai voulu insérer une colonne entre la colonne A et la colonne B

Quand je lance la macro, le contenu de la colonne B est effacée et je n'arrive pas à voir ce qu'il faut que je modifie.

La macro :

Sub MàJ()

tabloP = Sheets("planning02").Range("A3:ON21")

tabloR = Sheets("clients").Range("A2:M" & Range("A" & Rows.Count).End(xlUp).Row)

tabloF = Sheets("planning02").Range("A3:ON21")

For i = 2 To UBound(tabloP, 1)

For J = 2 To UBound(tabloP, 2)

tabloF(i - 1, J - 1) = ""

For Ln = 1 To UBound(tabloR, 1)

If tabloP(i, 1) = tabloR(Ln, 13) And tabloP(1, J) >= tabloR(Ln, 10) And tabloP(1, J) < tabloR(Ln, 11) Then

'tabloR(Ln, 1) signifie d'indiquer le contenu de la colonne 1 du tableau clients. Remplacer le 1 par 3 pour avoir le nom

tabloF(i - 1, J - 1) = tabloR(Ln, 1)

End If

Next Ln

Next J

Next i

Range("B4").Resize(UBound(tabloF, 1), UBound(tabloF, 2)) = tabloF

End Sub

16calendrier.xlsx (41.12 Ko)

Bonjour

Nouvelle version

Bye !

21calendrier-v1.xlsm (42.36 Ko)

Bonsoir,

Super ! ça fonctionne impec.

J'ai bien noté qu'après avoir inséré une colonne j'ai omis de modifier les références de la zone a3:OO21 . Quelle étourdie !

Mais aussi que certaines références sont modifiées :

tabloF(i, j) au lieu de tabloF(i - 1, J - 1) ---> je le note tel que parce que j'ai beau essayer de comprendre, pour l'instant ça me dépasse.

Si j'ai bien compris, la boucle teste si la cellule est vide ou doit contenir un nom. Il me manque encore certaines connaissance pour comprendre.

Un super merci.

Cordialement

Ciboulette

Bonjour

ciboulette05 a écrit :

Mais aussi que certaines références sont modifiées :tabloF(i, j) au lieu de tabloF(i - 1, J - 1)

Ce n’est pas très important. Si dans le premier cas i = 1, j = 1 et dans le deuxième i =2, j = 2 tu comprendras que

TabloF(i, j) du premier cas égale TbloF(i-1, j-1) du deuxième.

Si j'ai bien compris, la boucle teste si la cellule est vide ou doit contenir un nom

Ce n’est pas tout à fait cela car on ne peut plus parler de cellule au sens de feuille de calcul Excel.

En effet, pour que les calculs s’effectuent beaucoup plus vite qu’en travaillant sur les cellules des différentes feuilles, je commence a mettre les tableaux de ces feuilles dans une variable ‘’Tableau’’ :

tabloP = Sheets("planning02").Range("A3:OO21")

Ainsi, en une seule instruction, j’ai défini chacune des 8505 cellules de la plage en question par une variable.

tabloR = tabloP = Sheets("planning02").Range("A3:OO21")

Avec cette instruction, je défini mon tabloR comme une partie du tableau de la feuille RESA, celle qui contient les données (sans les titres).

En travaillant sur des variables tableaux, la référence de départ n’est pas forcément la même que celle de la feuille de calcul, mais c’est toujours la variable qui est en haut et à gauche du tableau.

La valeur de tabloR(2,4), par exemple, n’est pas celle de la cellule D2 de la feuille ‘’RESA’’ mais de la 2° ligne et 4° colonne de tabloR, soit : ‘’Germaine’’

Quant à tabloF (F pour final) je l’ai défini au départ comme étant le même que tabloP. Il me faut donc en passant chaque donnée qu’il contient, hors celles concernant les n° de chambre, les Types (2 premières colonnes) et les dates (titres des colonnes) commencer par les effacer avant de calculer la valeur que je dois leur donner.

Pour cela, et pour chacune des variables de TabloP (rappel : il y en a 8505), on regarde si dans chacune des lignes de tabloR il y en a une pour laquelle :

• La variable de la colonne 1 a la même valeur que la variable qui est sur la même ligne que celle de tabloP mais en colonnne 1 : même numéro de chambre

• La variable de la colonne 10 est inférieure ou égale à la variable qui est sur la même colonne que celle du taboP mais sur la ligne1 (date d’arrivée)

• La variable de la colonne 11 est supérieure à la variable qui est sur la même colonne que celle du taboP mais sur la ligne1 (date d’arrivée)

Et si c’est le cas, on écrit dans la variable correspondante de taboF le nom le la variable tabloR qu’on a sur la colonne 3

Quand toutes les cellules ont été passées, il ne reste plus qu'à coller TabloF sur la feuille de calcul ''planning02''

J’espère que ces quelques explications t’éclaireront.

Bye !

Bonjour,

Merci pour cette explication complète, claire et qui vient de me faire faire un vrai bond dans la compréhension de ces formules en comblant mes nombreuses lacunes d'autodidacte !!!

Un très grand merci.

et bonne journée

Ciboulette

Rechercher des sujets similaires à "colorier reservation"