IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Assombrir une couleur de fonte vbCyan en VBA [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Octobre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2014
    Messages : 15
    Par défaut Assombrir une couleur de fonte vbCyan en VBA
    Bonjour à tous,
    Je souhaite assombrir ma fonte de caractère que j'ai décrite ainsi dans mon objet .Font :
    .color = vbCyan (et non .color = RGB(0, 255, 255) pour des raisons de meilleure compatibilité des couleurs avec le logiciel qui récupère mon tableau (InDesign))
    Comment faire pour assombrir ma fonte ?
    Pour assombrir le fond d'une cellule j'utilise TintAndShade mais ça ne produit pas d'effet sur un objet .Font
    Merci d'avance !

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Comment faire pour ne pas confondre deux forums: Excel et Macros et VBA Excel

    Et puis dans l'aide de VBA, ils disent ceci:

    Référence du développeur Excel
    Font.Color, propriété
    Cette propriété renvoie ou définit la couleur principale de l'objet, comme l'indique la section des remarques dans le tableau suivant. Utilisez la fonction RVB pour créer une valeur de couleur. Type de données Variant en lecture-écriture.
    Syntaxe

    expression.Color

    expression Expression qui renvoie un objet Font.

    Remarques


    Objet Couleur
    Border Couleur de la bordure.
    Borders Couleur des 4 bordures d'une plage. Si elles ne sont pas toutes de la même couleur, la propriété Color renvoie 0 (zéro).
    Font Couleur de la police de caractères.
    Interior Couleur ombrée de la cellule ou couleur de remplissage de l'objet dessin.
    Tab Couleur de l'onglet.


    Exemple


    Cet exemple montre comment définir la couleur des étiquettes de graduation de l'axe des ordonnées du graphique « Chart1 ».

    Visual Basic pour Applications
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Charts("Chart1").Axes(xlValue).TickLabels.Font.Color = _
        RGB(0, 255, 0)
    et aussi:

    RGB, fonction
    Voir aussi Exemple Particularités

    Renvoie un entier de type Long représentant le code RGB.

    Syntaxe

    RGB(red, green, blue)

    La syntaxe de la fonction RGB comprend les arguments nommés suivants :

    Élément Description
    red De type Variant (Integer). Nombre compris entre 0 et 255 inclus et qui définit la composante rouge de la couleur.
    green De type Variant (Integer). Nombre compris entre 0 et 255 inclus et qui définit la composante verte de la couleur.
    blue De type Variant (Integer). Nombre compris entre 0 et 255 inclus et qui définit la composante bleue de la couleur.



    Remarques

    Avec les méthodes et propriétés d'application acceptant une définition de couleur, il est nécessaire d'utiliser un nombre représentant un code de couleur RGB dans les définitions. Les codes de couleur RGB définissent l'intensité relative du rouge, du vert et du bleu pour afficher les couleurs correspondantes.

    Si un argument de la fonction RGB dépasse 255, la valeur prise en compte est 255.

    Le tableau suivant contient la liste de certaines couleurs standard en précisant leurs composantes rouge, verte et bleue :

    Couleur Composante rouge Composante verte Composante bleue
    Noir 0 0 0
    Bleu 0 0 255
    Vert 0 255 0
    Cyan 0 255 255
    Rouge 255 0 0
    Magenta 255 0 255
    Jaune 255 255 0
    Blanc 255 255 255


    Les valeurs des couleurs RVB renvoyées par cette fonction sont incompatibles avec celles qui sont utilisées par le système d'exploitation Macintosh. Elles sont exploitables dans le cadre des applications Microsoft destinées au Macintosh, mais ne le sont pas si vous souhaitez transmettre directement des changements de couleur au système d'exploitation Macintosh
    et aussi:

    RGB, fonction, exemple
    Cet exemple montre comment la fonction RGB permet de renvoyer un nombre entier représentant une valeur de couleur RGB. Elle est utilisée avec les propriétés et les méthodes d'application qui prennent en charge une définition de couleur. L'objet MyObject et sa propriété sont indiqués à titre d'illustration uniquement. Si l'objet MyObject n'existe pas ou s'il n'est pas doté d'une propriété Color, une erreur se produit.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim RED, I, RGBValue, MyObject
    Red = RGB(255, 0, 0)    ' Renvoie la valeur correspondant à Red.
    I = 75    ' Initialise le décalage.
    RGBValue = RGB(I, 64 + I, 128 + I)    ' Similaire à RGB(75, 139, 203).
    MyObject.Color = RGB(255, 0, 0)    ' Définit la propriété Color de
        ' MyObject avec la valeur Red.
    Comme si aider devait impliquer l'obligation de chercher à la place des autres.

  3. #3
    Membre averti
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Octobre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2014
    Messages : 15
    Par défaut
    Tu expliques comment mettre une couleur sur une fonte mais ce n'est pas ma question. Ma question est "comment l'assombrir".
    Si j'indique ma couleur Cyan par .Color = RGB(0, 255, 255), dans un objet .Font, je peux assombrir mon Cyan en diminuant en même temps le vert et le Bleu.
    Par ex .Color = RGB (0, 150, 150).
    Mais je souhaite adresser la couleur de ma fonte directement en Cyan (.Color = vbCyan) et c'est dans ce cas de paramétrage par vbCyan que je ne sais pas assombrir.
    On peut assombrir un fond de cellule par TintAndShade (=-0.5 par ex) mais cette propriété ne fonctionne pas dans un objet .Font.
    Il doit exister une autre propriété mais je ne la connais pas.

  4. #4
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Est-ce que ta couleur est systématiquement cyan ou est-ce que ça peut être une autre couleur (yellow, red, etc.) ?
    Parce que si c'est cyan, de toute façon, une fois assombri, ça ne sera plus du cyan, quelle que soit la méthode utilisée.

    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Sub Sombre()
     
    Dim yColor As Long
    Dim yRed As Integer
    Dim yGreen As Integer
    Dim yBlue As Integer
    Dim yCoef As Double
     
    yCoef = 2.5
     
    Cells(1, 1).Font.Color = vbCyan
     
    yColor = Cells(1, 1).Font.Color
     
    yRed = yColor Mod 256
    yColor = (yColor - yRed) / 256
    yGreen = yColor - yRed Mod 256
    yBlue = (yColor - yGreen) / 256
     
    Cells(1, 1).Font.Color = RGB(yRed / yCoef, yGreen / yCoef, yBlue / yCoef)
     
    End Sub
    yCoef étant le facteur d'assombrissement

    Cela dit, si j'en crois l'aide VBA d'Excel, la propriété TintAndShade fait également partie des membres de l'objet Font, du moins dans mon Excel 2007...

    Font.Propriété TintAndShade
    Renvoie ou définit un Single qui éclaircit ou assombrit une couleur.

    Syntaxe
    expression.TintAndShade
    expression Variable représentant un objet Font.

    Remarques
    Vous pouvez entrer un nombre compris entre -1 (le plus sombre) et 1 (le plus clair) pour la propriété TintAndShade, 0 (zéro) étant neutre.

  5. #5
    Membre averti
    Homme Profil pro
    Rédacteur technique
    Inscrit en
    Octobre 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Rédacteur technique
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Octobre 2014
    Messages : 15
    Par défaut Tint AndShade avec l'objet Font
    Merci pour ta réponse.

    Pour ce qui est du Cyan pur, c'est vrai qu'en l'assombrissant on ajoute la couleur Noir, mais ceci ne me pose pas de pb.
    Ce que je ne veux pas c'est avoir autre chose que du Cyan et du Noir.

    Le Cyan pur s'obtient par RGB(0, 255, 255) et pour y mélanger du Noir on peut diminuer en même temps les 2 valeurs : par ex RGB=(0, 150, 150)
    Mais à l'arrivée chez l'imprimeur (après Import dans InDesign et copie PDF HD) l'imprimeur trouve un peu de jaune... mystère...

    Je voudrais donc imposer dans ma fonte la couleur Cyan en faisant .Color=vbCyan puis on fonçant par TintAndShade
    Ca marche bien pour les fonds de cellules (objet Interior) mais pas pour l'objet Font... pourtant comme tu le dis la doc en ligne VBA donne cette propriété dans l'objet Font.....
    Voici mon code, qui n'assombrit pas la fonte ... pourquoi ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Cells(3, 2).Value = "ESSAI TINT"
    Cells(3, 2).Font.Name = "Arial"
    Cells(3, 2).Font.Size = 20
    Cells(3, 2).Font.Color = vbCyan
    Cells(3, 2).Font.TintAndShade = -0.5

  6. #6
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par assumel Voir le message
    Le Cyan pur s'obtient par RGB(0, 255, 255) et pour y mélanger du Noir on peut diminuer en même temps les 2 valeurs : par ex RGB=(0, 150, 150)
    Mais à l'arrivée chez l'imprimeur (après Import dans InDesign et copie PDF HD) l'imprimeur trouve un peu de jaune... mystère...
    Le cyan n'est pas une couleur de base en RGB qui, comme son nom l'indique, code les couleur d'après le rouge, le vert et le bleu, comme il est d'usage sur les supports noirs (écrans informatiques, entre autre).

    Par contre, les logiciels d'imprimerie codent généralement les couleurs en palette soustractive (Cyan, jaune, magenta, noir) comme il est d'usage sur les supports blancs (le papier, entre autre).
    Le vert est traduit en cyan+jaune, le bleu est traduit en cyan+rouge. Donc, le cyan RGB est traduit pour l'impression en cyan+jaune+rouge.

    Il est malheureusement fréquent que la conversion opérée entre les deux par le logiciel choisi ne soit pas parfaite.
    C'est la raison pour laquelle, quand on travail avec un imprimeur et qu'on est soucieux d'obtenir un rendu très fisèle, il vaut mieux enregistrer les images en TIF plutôt qu'en PNG (je n'ose même pas parler du JPG qui est une horreur à plusieurs égards).

    Je pense donc que ton problème ne vient pas du fait d'utiliser xlCyan ou RGB dans Excel mais de la conversion entre ton travail et le logiciel utilisé pour l'impression par ton imprimeur.

    Le conseil que je peux te donner c'est, si tu en a la possibilité, de ne pas passer par Excel mais par un logiciel pouvant travailler avec le même format que ton imprimeur pour mieux contrôler la qualité finale.

    Je voudrais donc imposer dans ma fonte la couleur Cyan en faisant .Color=vbCyan puis on fonçant par TintAndShade
    Que tu écrive xlCyan ou RGB(0,255,255), d'un point de vue Excel, c'est strictement pareil.
    Si tu veux t'en convaincre, essaye cette macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If RGB(0,255,255)=xlCyan then
       debug.Print "Identique"
    Else
       debug.Print "Différent"
    End If
    Donc, que tu assombrisses la couleur de ta font avec TintAndShade ou en faisant RGB(0,x,x) (x étant une valeur entre 1 et 254), c'est exactement pareil. Au final, Excel codera la couleur en RGB, quelle que soit la méthode employée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Eclaircir / Assombrir une couleur
    Par MiJack dans le forum Langage
    Réponses: 11
    Dernier message: 21/11/2012, 10h08
  2. Problème pour mettre une couleur de font dans un fieldset
    Par sophie_44 dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 03/11/2010, 08h56
  3. Réponses: 5
    Dernier message: 24/03/2008, 19h49
  4. [VBA] Donner une couleur à une case
    Par ickyknox dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/03/2008, 13h44
  5. [VBA-E toutes versions] Faire un surlignage dans une couleur définie
    Par guidav dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 07/11/2006, 21h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo