Signaler

Problème d'attribution de code couleur

Posez votre question bejyves 4Messages postés mercredi 19 octobre 2016Date d'inscription 21 octobre 2016 Dernière intervention - Dernière réponse le 21 oct. 2016 à 15:45
Bonjour à tous!

Je suis tout nouveau sur le forum et j'espère obtenir de l'aide sur un problème épineux pour moi. J'ai crée un classeur Excel qui donne une vue d'ensemble de l'agenda d'une équipe. Dans la feuille 1 on retrouve l'agenda en question constitué en lignes des évènements et en colonne du calendrier. Dans la feuille 2 j'ai recensé les membres de l'équipe de la manière suivante: dans la colonne A on a la liste des membres, dans la colonne B leurs initiaux, et la colonne C la couleur que chaque membre peut s'attribuer à loisir. Maintenant que le décor est planté voici mon problème : lorsqu'un événement est attribué à un membre de l'équipe, il doit placé ses initiaux dans les cellules correspondante au niveau de la Feuille 1 pour les dates concernées. Une fois que c'est fait, comment faire pour que les cellules portant lesdits initiaux prennent automatiquement la même couleur de fond que celle attribuée au membre de l'équipe au niveau de la Feuille 2?Exemple : En Feuille 2, j'ai attribué à Paul la couleur "bleu" dans la feuille 2 et son initial c'est "P". Comment faire pour qu'a chaque que je rentrerai l'initial "P" dans la Feuille 1, la cellule se colore automatiquement en "bleu"( comme sur l'image ci-dessous). Je vous remercie d'avance pour vos contributions.
Afficher la suite 
Utile
+1
moins plus
Bonjour,

Voici une proposition avec une procédure évènementielle.
http://www.cjoint.com/c/FJudZB02Sx8

Private Sub Worksheet_Change(ByVal Target As Range)
Dim C As Range
If Target.Count > 1 Then Exit Sub
If Not Application.Intersect(Target, Range("C3:L3")) Is Nothing Then
If Target <> "" Then
With Worksheets("BD")
Set C = .Range("B2:B" & .Range("B" & Rows.Count).End(xlUp).Row).Find(Target, , xlValues, xlWhole)
If Not C Is Nothing Then
Target.Interior.Color = C.Offset(, 1).Interior.Color
End If
End With
Else
Target.Interior.Color = xlNone
End If
End If
End Sub

A+
bejyves 4Messages postés mercredi 19 octobre 2016Date d'inscription 21 octobre 2016 Dernière intervention - 20 oct. 2016 à 19:21
Merci grandement Cyrus. En plus c'est sympa d'avoir carrément réaliser la feuille vue que VBA c'est pas trop mon fort.
Répondre
bejyves 4Messages postés mercredi 19 octobre 2016Date d'inscription 21 octobre 2016 Dernière intervention - 20 oct. 2016 à 19:49
Mais par contre j'aimerai encore pouvoir faire en sorte que la couleur se mette automatiquement à jour dans la feuille Agenda si jamais je la modifie dans la feuille BD. Comment je m'y prend stp?

Merci encore pour ton coup de pouce.
Répondre
Gyrus 3341Messages postés samedi 20 juillet 2013Date d'inscription 9 décembre 2016 Dernière intervention - 20 oct. 2016 à 23:22
Voici le fichier après adaptations
http://www.cjoint.com/c/FJuvvm8bECl

A+
Répondre
bejyves 4Messages postés mercredi 19 octobre 2016Date d'inscription 21 octobre 2016 Dernière intervention - 21 oct. 2016 à 10:18
Merci bien Cyrus, mais il y a encore un problème. Le processus se fait en continue du coup la feuille plante.Pourrais-tu faire en sorte que le processus ne s'effectue que s'il détecte un changement au niveau de la colonne "code couleur"? Ca règlerait peut-être le problème.
Répondre
Gyrus 3341Messages postés samedi 20 juillet 2013Date d'inscription 9 décembre 2016 Dernière intervention - 21 oct. 2016 à 15:45
Il n'existe pas d'évènement permettant de détecter la modification du remplissage d'une cellule. C'est pour cela que j'ai utilisé l'évènement Worksheet.Activate de la feuille "Agenda".
Ainsi, lorsque tu modifies la couleur dans la feuille "BD", la couleur se met automatiquement à jour dans la feuille Agenda, au retour dans cette feuille.

Par contre, je ne comprends pas pourquoi le processus se fait en continu. Il y a sûrement une particularité que tu ne m'as pas indiquée car cela ne se produit pas dans le fichier joint.

A+
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !