Une astuce rapide: la palette Excel a deux lignes de couleurs qui sont rarement utilisées et peuvent généralement être réglés sur des valeurs personnalisées sans modifications visibles sur les feuilles des autres peuples.
Voici le code pour créer un ensemble raisonnable de 'tons doux' des couleurs qui sont beaucoup moins offensive que les paramètres par défaut:
Public Sub SetPalePalette(Optional wbk As Excel.Workbook)
' This subroutine creates a custom palette of pale tones which you can use for controls, headings and dialogues
'
' ** THIS CODE IS IN THE PUBLIC DOMAIN **
' Nigel Heffernan http://Excellerando.Blogspot.com
' The Excel color palette has two hidden rows which are rarely used:
' Row 1: colors 17 to 24
' Row 2: colors 25 to 32 - USED BY SetGrayPalette in this workbook
'
' Code to capture existing Screen Updating settting and, if necessary,
' temporarily suspend updating while this procedure generates irritating
' flickers onscreen... and restore screen updating on exit if required.
Dim bScreenUpdating As Boolean
bScreenUpdating = Application.ScreenUpdating
If bScreenUpdating = True Then
Application.ScreenUpdating = False
End If
'If Application.ScreenUpdating <> bScreenUpdating Then
' Application.ScreenUpdating = bScreenUpdating
'End If
If wbk Is Nothing Then
Set wbk = ThisWorkbook
End If
With wbk
.Colors(17) = &HFFFFD0 ' pale cyan
.Colors(18) = &HD8FFD8 ' pale green.
.Colors(19) = &HD0FFFF ' pale yellow
.Colors(20) = &HC8E8FF ' pale orange
.Colors(21) = &HDBDBFF ' pale pink
.Colors(22) = &HFFE0FF ' pale magenta
.Colors(23) = &HFFE8E8 ' lavender
.Colors(24) = &HFFF0F0 ' paler lavender
End With
Si Application.ScreenUpdating <> bScreenUpdating Puis
Application.ScreenUpdating = bScreenUpdating
End If
End Sub
Sous SetGreyPalette publique()
'Ce sous-programme crée une palette personnalisée de greyshades que vous pouvez utiliser pour les contrôles, les titres et les dialogues
' ** CE CODE eST DANS LE DOMAINE PUBLIC **
'Nigel Heffernan http://Excellerando.Blogspot.com
' La palette de couleurs Excel a deux lignes cachées qui sont rarement utilisées:
'Ligne 1: couleurs 17 à 24' - UTILISÉ PAR SetPalePalette dans ce classeur
'Row 2: couleurs 25 à 32
' Code pour capturer existant Mise à jour de l'écran settting et, le cas échéant,
"suspendre temporairement la mise à jour alors que ce procédure génère irritant
'scintille à l'écran ... n'oubliez pas de restaurer la mise à jour de l'écran à la sortie!
Dim bScreenUpdating As Boolean
bScreenUpdating = Application.ScreenUpdating
Si bScreenUpdating = True Then
Application.ScreenUpdating = False End If
'Si Application.ScreenUpdating <> bScreenUpdating Ensuite
' Application.ScreenUpdating = bScreenUpdating
'Fin Si
Avec ThisWorkbook
.colors (25) = &
HF0F0F0 .colors (26) = &
HE8E8E8 .colors (27) = &
HE0E0E0 .colors (28) = &
HD8D8D8 .colors (29) = &
HD0D0D0. couleurs (30) = & HC8C8C8
'& HC0C0C0' & HC0C0C0 Skipped - c'est le 25% de gris régulier dans la palette principale
.colors (31) = & note 'HB8B8B8 que les lacunes deviennent plus larges: l'oeil humain est plus sensible
.Couleurs (32) = & HA8A8A8 ' aux changements de gris clairs, donc ce sera perçu comme une échelle linéaire
End With
« La colonne de droite de la palette par défaut Excel spécifie les grays suivants:
» Couleurs (56) = & H333333
'couleurs (16) = &
H808080' couleurs (48) = &
H969696 'couleurs (15) = & HC0C0C0 la valeur par défaut '25% de gris '
' Cela devrait être modifiée pour améliorer la couleur « écart 'et faire les couleurs facilement-distinguuishab le:
Avec ThisWorkbook
.colors (56) = &
H505050 .colors (16) = &
H707070 .colors (48) = &
H989898 '.Couleurs (15) = & HC0C0C0
End Avec
Si Application.ScreenUpdating <> bScreenUpdating Alors
Application.ScreenUpdating = bScreenUpdating
End If
End Sub
Vous pouvez choisir écrire une fonction 'CaptureColors' et 'ReinstateColors' pour les événements Open() et BeforeClose() de chaque classeur ... Ou même pour chaque travail heet active et désactive l'événement. J'ai un code qui traîne quelque part qui crée un dégradé de couleur «thermique» pour les diagrammes 3D, ce qui vous permet de passer du rouge «froid» au rouge «chaud» en trente-deux étapes. Ceci est plus difficile que vous ne le pensez: un gradient de couleurs qui sera perçu comme des «intervalles égaux» par le système visuel humain (qui fonctionne sur une échelle logarithmique d'intensité et qui a des pondérations non linéaires pour le rouge, le vert et le bleu) prend du temps à construire - et vous devez utiliser VBA pour forcer MS Chart à utiliser les couleurs que vous spécifiez, dans l'ordre que vous avez spécifié.
Vous pouvez * mettre à jour la palette avec vos couleurs, mais vous devriez généralement éviter de le faire. Un problème est que copier et coller dans un classeur différent avec une palette différente vous donnera différentes couleurs. Pour cette raison, il est généralement préférable de coller à la palette par défaut. – Joe
Je voulais dire contre ... whoops, merci Joe. – LeppyR64