Créer une liste déroulante avec des couleurs

Résolu/Fermé
sissi - 27 févr. 2012 à 19:19
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 - 14 janv. 2013 à 16:12
Bonjour,

J'ai un problème je n'arrive pas à insérer dans un tableau excel une liste déroulante en couleur. Par exemple, je souhaite qu'une action prioritaire apparaisse en rouge foncé, une action moyennement prioritaire apparaisse en orange, une action non prioritaire apparaisse en vert.

Est -ce quelqu'un peut m'aider ?

Merci d'avance.




8 réponses

Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
Modifié le 25 janv. 2019 à 14:19
Re,

Tu commences par définir la plage de tes couleurs, dans mon exemple elle se trouve dans l'onglet nommé Couleurs et commence à la cellule I8
j'ai créé un champ dynamique (Nom définir/Définir un nom)
nom du champ couleurs et la formule du champ est
=DECALER(Couleurs!$I$8;;;NBVAL(Couleurs!$I:$I))


pour t'aider à comprendre, si les cellules de couleurs étaient sur la feuille nommée Feuil2, le champ pourrait être nommé Teinte et se trouver dans la colonne B à partir de B2 dans ce cas la formule du champ serait
=DECALER(Feuil2!$B$2;;;NBVAL(Feuil2!$B:$B))


Si la mise en forme conditionnelle concerne la feuille nommée Feuil1 comme dans l'exemple, clic droit sur l'onglet de cette feuille/Visualiser le code tu verras ce code qui limite l'action pour cette feuille à la cellule B2 et ces parties de codes [Couleurs] font référence au champ nommé si ce champ avait été nommé Teinte, j'aurais [Teinte]

Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect([B2], Target) Is Nothing Then
   On Error Resume Next
   Target.Interior.ColorIndex = [Couleurs].Find(Target, LookAt:=xlWhole).Interior.ColorIndex
   Target.Font.ColorIndex = [Couleurs].Find(Target, LookAt:=xlWhole).Font.ColorIndex
   Target.Font.Bold = [Couleurs].Find(Target, LookAt:=xlWhole).Font.Bold 'Inclus le gras
  End If
End Sub


1
Bonsoir,

Merci Mike mais je n'y arrive pas je suis parti dans une feuille nommée sources avec 5 cellules différentes de cinq couleurs différente j'ai appliqué dans la cellule G5 de la feuille sources la formule décalée
=DECALER(sources!$D$1;;;NBVAL(sources!$D:$D))
.

Ensuite j'ai mis le code dans ma feuille presses Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([G7], Target) Is Nothing Then
On Error Resume Next
Target.Interior.ColorIndex = [sources].Find(Target, LookAt:=xlWhole).Interior.ColorIndex
Target.Font.ColorIndex = [sources].Find(Target, LookAt:=xlWhole).Font.ColorIndex
Target.Font.Bold = [sources].Find(Target, LookAt:=xlWhole).Font.Bold 'Inclus le gras
End If
End Sub

Car j'aimerai que dans la cellule G7 de la feuille presse ma liste déroulante apparaisse.

Merci de me dire où est l'erreur , je suis désespérée !

Bonne soirée.
0
Mike-31 Messages postés 18352 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 décembre 2024 5 110
4 mars 2012 à 22:55
Re,
Tu as décidé de mettre tes couleurs feuille sources colonne G à partir de la cellule G5 PAS DE PROBLEME

Ensuite il faut nommer un champ Gestionnaire de noms/Définir un nom
pour changer ce coup ci je le nomme COUL et la formule du champ est

=DECALER(sources!$G$5;;;NBVAL(sources!$G:$G))


sur la feuille presses en G7 j'ai créé une liste de validation (Données/Validation des données
dans Autoriser, sélectionner Liste
et la formule est =COUL
dans le code [sources] ce n'est pas le nom de la feuille mais du champ [Coul].


dans les propriétés de la feuille presses clic droit sur l'onglet de cette feuille/Visualiser le code

le code est

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect([G7], Target) Is Nothing Then
On Error Resume Next
Target.Interior.ColorIndex = [Coul].Find(Target, LookAt:=xlWhole).Interior.ColorIndex
Target.Font.ColorIndex = [Coul].Find(Target, LookAt:=xlWhole).Font.ColorIndex
Target.Font.Bold = [Coul].Find(Target, LookAt:=xlWhole).Font.Bold 'Inclus le gras
End If
End Sub

dans le code, ces deux lignes concernent la mise en forme de la police (couleur et gras), si ta mise en forme conditionnelle concerne que la couleur de fond de cellule tu peux les supprimer

Target.Font.ColorIndex = [Coul].Find(Target, LookAt:=xlWhole).Font.ColorIndex
Target.Font.Bold = [Coul].Find(Target, LookAt:=xlWhole).Font.Bold 'Inclus le gras

https://www.cjoint.com/?BCew3h3OgAZ
0