Coloriser les cellules selon une indication de teinte
Bonjour à tous,
Besoin de vos lumières ; je sèche ....
Sur le fichier Excel joint, je souhaiterai que certaines cellules se colorent selon l'indication de teinte que l'on choisi au préalable. Je me suis donc inspiré donc d'un sujet déjà étudié précédemment sur le forum, mais mon problème est que je ne parviens pas à recréer la macro. J'ai beau essayer encore et encore ça ne fonctionne pas et je ne comprends pas pourquoi (faut-il préciser que je suis loin d'être une star en Visual Basic...)
Bref, si vous voulez bien m'aider ce serait vraiment cool. Merci d'avance.
Bonjour
Remplacez votre code par celui ci-dessous
Sub variables()
Dim lig As Integer
Dim couleur
With Sheets("Feuil2")
On Error Resume Next
lig = .Range("B1:B" & .Range("B" & Rows.Count).End(xlUp).Row).Find(ActiveCell, LookIn:=xlValues, lookat:=xlWhole).Row
If lig = 0 Then Exit Sub
couleur = Split(.Cells(lig, 3), ",")
Sheets("Feuil1").Range("F" & ActiveCell.Row).Interior.Color = RGB(couleur(0), couleur(1), couleur(2))
On Error GoTo 0
End With
End SubEnsuite positionnez vous sur la cellule de votre colonne Teinte RAL, puis exécutez le code via un bouton (par exemple)
Edit : Plus simple !
si vous voulez que ce soit actif directement depuis la feuille 1 (donc sans bouton), supprimez le code dans le module et placez celui ci-dessous dans votre feuille 1 (click droite sur le nom de l'onglet Feuil1 --> choisir "Visualiser le code") et coller le code dans la fenêtre
Private Sub Worksheet_Change(ByVal Target As Range)
Dim couleur
Dim lig As Integer
If Not Intersect(Target, Range("B4:B" & Range("A" & Rows.Count).End(xlUp).Row)) Is Nothing Then
With Sheets("Feuil2")
On Error Resume Next
lig = .Range("B1:B" & .Range("B" & Rows.Count).End(xlUp).Row).Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole).Row
If lig = 0 And Target.Value <> "" Then MsgBox "couleur non trouvée"
couleur = Split(.Cells(lig, 3), ",")
Range("F" & Target.Row).Interior.Color = RGB(couleur(0), couleur(1), couleur(2))
On Error GoTo 0
End With
End If
If Target.Value = "" Then Target.Offset(, 4).Interior.Pattern = xlNone
End SubIl vous reste alors à remplir dans la colonne de la feuille 1 et la couleur sera affichée directement
Bonjour be.wilf & Dan,
Un autre code qui met à jour la couleur de toutes les cellules de la colonne F automatiquement soit quand on active la feuille Feuil1, soit quand on change une valeur de couleur en colonne B ou bien encore à l'ouverture du classeur.
Le code se trouve dans le module de Feuil1 et dans le module de ThisWorkbook (pour l'ouverture du fichier)
Code de Feuil1:
Public Sub Worksheet_Activate()
Dim der&, x, i&, s
Application.ScreenUpdating = False
With Me
der = .UsedRange.Row + .UsedRange.Rows.Count - 1
For Each x In .Range("b5:b" & der)
If IsNumeric(x) Then
.Cells(x.Row, "f").Interior.ColorIndex = xlColorIndexNone
i = Application.IfError(Application.Match(x, Feuil2.Columns(2), 0), 0)
If i > 0 Then
s = Split(Feuil2.Cells(i, "c"), ",")
.Cells(x.Row, "f").Interior.Color = RGB(s(0), s(1), s(2))
End If
End If
Next x
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Me.Columns(2), Target) Is Nothing Then Worksheet_Activate
End SubCode dans ThisWorkbook:
Private Sub Workbook_Open()
Feuil1.Worksheet_Activate
End Sub
Bonjour,
Merci beaucoup pour vos réponses.
Je teste tout ça.
Encore merci et bonne journée,