Question Formule

Steph -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  3. Steph
     
    Merci à tous les deux pour vos réponses, je vous fais un retour au plus vite !

    Bonne soirée à vous
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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?
      0
  4. Steph
     
    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.
    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      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
      0
      1. Steph > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
         
        Merci beaucoup pour votre aide à tous les deux
        0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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.
      0
      1. Steph > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Par défaut toute la colonne C est vide pour que justement elle soit remplie qu'avec une valeur renseignée par la colonne B
        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Steph
         
        alors tu peux faire cela par formule.
        0