Bonsoir
Le Forum,
lm76000 : et si je te disais que je le sais pas!!!moia!!!
mais que.....................................
Help mes amis les macrotistes,vébéasites, qu'en pensez-vous
on l'annule comment la dernière action svp
???????? merci!!!!!!!!
Pour nous souvenir de ce que l'on faisait sur ce fil :
Voici un petit historique :
"La question d'afficher plus de trois couleurs dans des listes de validation se retrouve souvent posée.
L'idée fut de créer une macro événementielle afin de pallier au format conditionnel."
1 Nommer la plage - Insertion Noms
competences =LesCouleursListes!$B$15:$B$18
2 Validation - Données
Dans ce menu, Autoriser Liste = compétences
3 Copier les macros suivantes dans la feuille de code correspondant à cette feuille ("LesCouleursListes")
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ActiveCell.Address = "$G$2" Then Exit Sub
Range("G2").Formula = "=" & ActiveCell.Address
End Sub
Private Sub Worksheet_Calculate()
Dim Cellule As Range
On Error Resume Next
'For Each Cellule In selecion
If Not Application.Intersect(Cellule, Range("B8
14")) Is Nothing Then
Cellule.Interior.ColorIndex = xlNone
Cellule.Interior.ColorIndex = Range("competences").Cells.Find(What:=Cellule, After:=Range("competences").Range("A1"), LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=True, SearchFormat:=False).Interior.ColorIndex
Cellule.Font.ColorIndex = Range("competences").Cells.Find(What:=Cellule, After:=Range("competences").Range("A1"), LookIn:=xlFormulas, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=True, SearchFormat:=False).Font.ColorIndex
End If
Next Cellule
End Sub
4 Explications
Il aurait pu paraître logique d'utiliser l'événement Worksheet_Change pour faire mettre la couleur
lorsque l'on sélectionne un élément d'une liste.
MAIS: cette événement ne se produit bizarrement pas lorsqu'on modifie le contenu d'une cellule
contenant une liste de validation.
ASTUCE: faire déclencher l'événement Worksheet_Calculate par une cellule intermédiaire
Pour cela, lorsqu'on sélectionne une cellule de la feuille, l'événement Worksheet_SelectionChange va aller
placer une formule en cellule G2
Cette formule ordonne à G2 de devenir égale à la cellule sélectionnée.
Par exemple, si on sélectionne la cellule B8, alors G2 contiendra comme formule: =$B$8
Cette cellule G8 sert d'intermédiaire, et doit être une cellule cachée.
Ensuite, lorsqu'on sélectionne un élément dans la liste déroulante en B8, par exemple, "maitrisé":
La cellule B8 contient bien "maitrisé"
La cellule G2 se change aussi en "maitrisé", et c'est elle qui va déclencher l'événement "Worksheet_Calculate"
L'événement worksheet_calculate va alors se charger d'aller récupérer la couleur de l'élément sélectionné dans la liste des compétences,
et appliquer cette couleur à la cellul esélectionnée.
Ex: B8 vaut "Maitrisé"
On va chercher où se trouve "maitrisé" dans la liste "competences"
On récupère couleur de fond et couleur de police que l'on applique en retours à B8.
ATTENTION: il faut être en mode de calcul automatique!
(Menu Outils, Options, onglet Calcul, sélectionner "automatique")
LaurentTBT 04-04-04
sur une adaptation d'une macro de
Ti
extrait de Lien supprimé :
Les couleursListes
Celeda