Bonjour,
Je viens quémander un peu d'aide auprès de gens compétents 
J'essaye depuis quelques temps de réaliser un petit fichier de réservation de salle qui soit convivial. Pour ce faire, je souhaitais que les utilisateurs n'ait juste qu'à faire un clic droit pour faire défiler une couleur dans une cellule (plage horaire) en partant du principe qu'à chaque service correspondait une couleur.
Alors j'ai fouillé, j'ai trouvé du code et j'ai adapté. Seulement je me confronte à un problème : lorsque je veux changer ma plage de couleurs, ça ne marche plus aussi bien. Je m'explique :
1 2 3 4 5 6 7 8 9 10 11 12 13
| Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim couleurs()
ActiveSheet.Unprotect
couleurs = Array(RGB(255, 204, 153), RGB(153, 204, 0), RGB(153, 204, 255), RGB(255, 255, 255))
On Error GoTo color
Target.Interior.color = couleurs(Application.WorksheetFunction.Match(Target.Interior.color, couleurs, 0) Mod 4)
Cancel = True
ActiveSheet.Protect
Exit Sub
color:
Target.Interior.color = couleurs(0)
Cancel = True
End Sub |
Avec ce code, ça marche impeccable. Les 4 couleurs défilent dans l’ordre voulu. Seulement j'ai jugé que ces couleurs étaient trop sombre et j'ai voulu les modifier pour que le texte à l'intérieur des cellules ressorte mieux. J'ai modifié mon tableau de couleurs comme suit :
couleurs = Array(RGB(255, 204, 153), RGB(220, 244, 0), RGB(220, 244, 255), RGB(255, 255, 255))
Eh ben là ça ne marche plus du tout! Il affiche la première couleur, puis la 2ème, puis il revient sur la première en laissant la feuille déprotégée
Et il recommence, si bien que je ne tourne que sur 2 couleurs.
Dans la mesure où je n'ai touché QU'AU tableau, je pige pas...
Et par ailleurs, je croyais que mettre la macro dans "ThisWorkbook" la ferait fonctionner pour toutes les feuilles. Or dans les faits, ça ne marche pas du tout. Il faut que je la recopie pour chaque feuille ce qui est très pénible lorsque j'apporte des modifications.
Si quelqu'un a une idée, merci d'avance
Partager