Question Formule

Fermé
Steph - 21 oct. 2020 à 15:56
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 - 22 oct. 2020 à 14:26
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

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
21 oct. 2020 à 16:37
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
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
21 oct. 2020 à 16:40
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
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
21 oct. 2020 à 23:19
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
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
22 oct. 2020 à 10:02
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
Steph > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
22 oct. 2020 à 10:25
Merci beaucoup pour votre aide à tous les deux
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
22 oct. 2020 à 13:19
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
Steph > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
22 oct. 2020 à 13:56
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
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Steph
22 oct. 2020 à 14:26
alors tu peux faire cela par formule.
0