On m'a donné une feuille et j'essaie de faire correspondre un bleu très foncé qu'ils ont sélectionné.

Lorsque je clique sur le triangle à côté de "l'icône de remplissage" dans la bande d'accueil pour faire apparaître le sélecteur de couleur, je peux voir que la couleur est la deuxième en partant du bas dans la troisième colonne, les bleus. Il s'appelle "Bleu foncé, texte 2, 25% plus foncé".

J'aimerais faire cela en VBA et utiliser des termes anglais pour plus de clarté. J'ai essayé diverses pages Web qui répertorient les noms de couleurs VBA, mais ce n'est pas là. Y a-t-il un moyen de sélectionner cela sans recourir à RVB numérique ou similaire?

2
Maury Markowitz 23 mai 2018 à 18:13

3 réponses

Meilleure réponse

Je pense que vous devez utiliser les propriétés:

   .ThemeColor = xlThemeColorAccent5 'name of the theme
   .TintAndShade = 0.25 'darkness (1 - no dark; -1 - max dark)
2
Pspl 23 mai 2018 à 15:50
Sub DemoThemecolors()
   Dim rng As Range
   Dim n As Integer, m As Integer
   Dim arrNames
   Dim arrDescriptions
   Dim arrValues
   arrNames = Array("xlThemeColorAccent1", "xlThemeColorAccent2", "xlThemeColorAccent3", "xlThemeColorAccent4", "xlThemeColorAccent5", "xlThemeColorAccent6", _
                    "xlThemeColorDark1", "xlThemeColorDark2", "xlThemeColorFollowedHyperlink", "xlThemeColorHyperlink", "xlThemeColorLight1", "xlThemeColorLight2")
   arrDescriptions = Array("Accent1", "Accent2", "Accent3", "Accent4", "Accent5", "Accent6", "Dark1", "Dark2", "Followed hyperlink", "Hyperlink", "Light1", "Light2")
   arrValues = Array(5, 6, 7, 8, 9, 10, 1, 3, 12, 11, 2, 4)

   ActiveWorkbook.Worksheets.Add
   Set rng = Cells(2, 7)
   rng(0, 4).Value = "TintAndShade"
   rng(1, 4).Value = 0
   For m = 1 To 9
      rng(1, m + 4).Value = 0.1 * m
   Next m
   rng(1, 1) = "ThemeColor Name"
   rng(1, 2).Value = "Value"
   rng(1, 3).Value = "Description"

   For n = 1 To 12
      rng(n + 1, 1).Value = arrNames(n)
      rng(n + 1, 2).Value = arrValues(n)
      rng(n + 1, 3).Value = arrDescriptions(n)
      rng(n + 1, 4).Interior.ThemeColor = arrValues(n)
      For m = 1 To 9
         With rng(n + 1, m + 4).Interior
            .ThemeColor = arrValues(n)
            .TintAndShade = 0.1 * m
         End With
      Next m
   Next n
    Range("G1:S2").Font.Bold = True
    Columns("G:I").EntireColumn.AutoFit
End Sub

Au cas où vous vous demandez pourquoi tous les thèmes intégrés affichent des couleurs sombres pour Light1 / 2 et des couleurs claires pour Dark1 / 2 - C'est probablement un bogue, ou comme MS l'appellerait; c'est une "fonctionnalité" dans Excel et aussi dans Word. Dans Powerpoint, c'est vice versa, plus ce que vous attendez.

1
user3279536 19 déc. 2018 à 10:32

Cochez ceci pour voir la couleur des styles:

Sub TestMe()

    Dim st As Style
    Dim cnt As Long: cnt = 1

    For Each st In ThisWorkbook.Styles
        Cells(cnt, 1).Interior.ColorIndex = cnt
        Cells(cnt, 2) = cnt
        Cells(cnt, 3) = st.Name
        Cells(cnt, 4) = st.NameLocal
        cnt = cnt + 1
    Next st

End Sub

Renvoyant ceci:

enter image description here

Si vous souhaitez utiliser un style spécifique pour une sélection spécifique:

selection.interior.colorindex = ThisWorkbook.Styles("40 % - Akzent3").Interior.ColorIndex
2
Vityata 23 mai 2018 à 15:23