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 Sub

Ensuite 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 Sub

Il 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 Sub

Code 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,

Rechercher des sujets similaires à "coloriser indication teinte"