Bonsoir,
Tout se joue dans les 3 macros de la feuille de service et dans le nommage des plages de la feuille "Param". Ce nommage est effectué dans le Gestionnaire de nom de façon dynamique (Avec DECALER) de manière à ne pas avoir à le modifier même quand tu rajoutes des éléments (nombres de salles, de noms, de bateaux, de cometoc...
(Les macros de Module1 ne servent à rien. On peut les supprimer.)
La macro Worksheet_Change est activé automatiquement quand tu modifies A2. Elle sert à afficher le mois considéré.
C'est juste pour le confort : Pour d'éviter d'avoir à scroller jusqu'à la colonne 337 pour voir le mois de décembre... Le décalage (dec) est enregistré dans la feuille "param" en face des mois considérés.
Elle sert également (Case Else) à effacer la couleur quand tu supprimes une réservation. (car par défaut la touche Suppr ne supprime que le texte, pas les couleurs de fond.
La macro Worksheet_SelectionChange est activé automatiquement à chaque fois que tu sélectionnes une ligne (et une seule) en dessous de la ligne 3 : dans toutes les cellules elle écrit la valeur choisie en A3. (Target.Value = [A3])
C'est également elle qui colore cette même plage sélectionnée en fonction de la plage [salle] de la feuille Param. Cette couleur est lue par la Function COLR appelée par :
Target.Interior.Color = COLR(Target.Text)
C'est donc elle (la macro Worksheet_SelectionChange) qui fait l'essentiel du boulot.
Important : A noter que dans cette fonction la feuille "Param" est ciblée par WsP dans (WsP.Cells(k + 1, iC).Interior.Color)
car le Code Name de cette feuille est WsP (Voir dans VBAProject et dans la fenêtre des propriétés.)
J'ai préféré changer le Code Name pour référencer cette feuille pour éviter une erreur au cas ou un petit malin aurait l'idée saugrenue de changer le nom (onglet) de la feuille "Param" Ce qui ne devrait jamais arriver vu qu'elle a vocation à être masquée.
Sinon YA pas grand chose d'autre à dire... C'est vraiment le grand b+a = ba de la prog VBA.
Comme on dit parfois, le plus dur c'est de faire simple !
A+