Question Formule

Bonjour,

Je cherche à l'aide d'une formule ou de vba (je n'ai pas réussi à le faire avec une formule).

Ma demande concerne la condition suivante :

Si couleur dans la colonne A = (255,192,0) alors copier la valeur de la cellule colorisé au même endroit dans la colonne B ( exemple A26 = 120 dans B26 = 120)

Merci d'avance pour votre aide.

Configuration: Windows / Edge 18.17763

4 réponses

  1. Modérateur
    Bonjour,

    Tu peux écrire une fonction VBA qui te retourne la couleur au format RGB puis faire une formule "SI" dans ton excel pour obtenir ce que tu souhaites.

    Niveau fonction VBA, tu pourrais utiliser, par exemple
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '   Function            Color
    '   Purpose             Determine the Background Color Of a Cell
    '   @Param rng          Range to Determine Background Color of
    '   @Param formatType   Default Value = 0
    '                       0   Integer
    '                       1   Hex
    '                       2   RGB
    '                       3   Excel Color Index
    '   Usage               Color(A1)      -->   9507341
    '                       Color(A1, 0)   -->   9507341
    '                       Color(A1, 1)   -->   91120D
    '                       Color(A1, 2)   -->   13, 18, 145
    '                       Color(A1, 3)   -->   6
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Function Color(rng As Range, Optional formatType As Integer = 0)     As Variant
        Dim colorVal As Variant
        colorVal = Cells(rng.Row, rng.Column).Interior.Color
        Select Case formatType
            Case 1
                Color = Hex(colorVal)
            Case 2
                Color = (colorVal Mod 256) & ", " & ((colorVal \ 256) Mod 256) & ", " & (colorVal \ 65536)
            Case 3
                Color = Cells(rng.Row, rng.Column).Interior.ColorIndex
            Case Else
                Color = colorVal
        End Select
    End Function
    

    1. Contributeur
      bonjour, un exemple:
      Option Explicit
      
      Private Sub cola()
      Dim fl As Worksheet, cl As Range, col As Range
      Set fl = ThisWorkbook.Sheets("Steph")
      Set col = Intersect(fl.Columns("a"), fl.UsedRange)
      For Each cl In col
          If cl.Font.Color = RGB(255, 192, 0) Then
              cl.Offset(, 1) = cl
          End If
      Next cl
      End Sub
      
      1. Merci à tous les deux pour vos réponses, je vous fais un retour au plus vite !

        Bonne soirée à vous
        1. Contributeur
          tu n'as pas précisé deux choses:
          1) est-ce bien la couleur du texte dans la cellule A qui t'intéresse?
          2) que doit-il se passer en colonne B si la couleur en colonne A n'est pas celle que tu cherches?
      2. Bonjour,

        Il s'agit de la couleur de la cellule et non du texte, excusez moi pour ce manque de précision.
        Pour résumer j'ai mis des conditions en fonction de valeur présente en colonne A et B.
        Si les conditions (que j'ai fixé avec des formules Excel) sont ok alors les cellules en question se colorisent avec le code couleur que j'ai fixé plus haut.

        Ma demande concernait le cas ou si justement des cellules des colonnes A et B sont colorisés dans la couleur 255, 192, 0 alors sur la même ligne en colonne C, on trouverait la valeur présente en colonne B.

        J'espère m'être bien exprimé….

        Merci encore pour votre aide.
        1. Modérateur
          le code que je t'ai donné devrait donc te permettre de faire cela...
          par exemple, si dans une cellule excel tu fais une formule du genre

          =Color(A1, 2)

          tu devrais obtenir la couleur de la cellule.

          De là, il n'est pas difficile de rajouter un IF sur la condition que tu souhaites
        2. Contributeur
          et sinon, que trouve-t-on en C? faut-il préserver la valeur s'y trouvant (ce qui impose du VBA), ou fait-il y mettre une valeur déterminée, ce qui peut se faire par formule.
        3. @yg_bePar défaut toute la colonne C est vide pour que justement elle soit remplie qu'avec une valeur renseignée par la colonne B
        4. Contributeur
          @Stephalors tu peux faire cela par formule.