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 :

palette de couleur pastel aléatoire RGB


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Homme Profil pro
    R&D laboratoire
    Inscrit en
    Janvier 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : R&D laboratoire
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2008
    Messages : 83
    Points : 157
    Points
    157
    Par défaut palette de couleur pastel aléatoire RGB
    Bonjour,
    j'aurais besoin de disposer d'une palette de 20-30 couleurs pastel très claires distinctes pour visualiser des échantillons. Paramétrer chacune de ces teintes en redéfinissant les valeurs RGB à partir d'une des 56 couleurs existantes est laborieux et peut tomber sur une couleur utilisée par ailleurs dans le fichier.

    D'où l'idée de générer ces teintes de manière aléatoire pour les appliquer directement à des cellules. Mon problème est que mon code n'applique pas les valeurs RGB indiquées, même quand on rentre des valeurs numériques, et se raccroche aux couleurs standards de la palette d'excel.

    Est-ce que mon idée de départ est réalisable?
    D'avance merci, Serge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 0 To 100
      Range("A1").Offset(i, 0).FormulaR1C1 = 160 + CInt(Rnd * 95)
      Range("B1").Offset(i, 0).FormulaR1C1 = 160 + CInt(Rnd * 95)
      Range("C1").Offset(i, 0).FormulaR1C1 = 160 + CInt(Rnd * 95)
     
      red = CInt(Range("A1").Offset(i, 0).Value)
      green = CInt(Range("B1").Offset(i, 0).Value)
      blue = CInt(Range("C1").Offset(i, 0).Value)
      Range("F1").Offset(i, 0).Interior.Color = RGB(red, green, blue)
    Next

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Voir http://www.mvps.org/dmcritchie/excel/colors.htm ou passer à Excel 2007 ( 16 millions de couleurs )

  3. #3
    Membre habitué
    Homme Profil pro
    R&D laboratoire
    Inscrit en
    Janvier 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : R&D laboratoire
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2008
    Messages : 83
    Points : 157
    Points
    157
    Par défaut
    Merci pour ton aide, j'avais déjà eu accès à ce document très riche, mais l'ambiguité n'est pas levée: dans ce document apparaît le code suivant qui laisse penser qu'on peut directement paramétrer la couleur d'une plage, alors qu'en cours d'application on revient à des couleurs standards dont le code RGB n'a rien à voir avec la demande.
    Je n'ai malheureusement pas encore accès à Excel 2007 dans mon entreprise.
    Si quelqu'un a déjà été confronté à ce problème, toute suggestion sera bienvenue!
    Serge,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.Interior.Color = RGB(200, 250, 200)

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Tu peux tester ceci stp
    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
    23
    24
    25
    26
    27
    28
    Sub test()
    Dim L As Single, T As Single, H As Single, W As Single, i As Integer
     
    For i = 1 To 100
        With Range("H" & i)
            L = .Left
            T = .Top
            W = .Width
            H = .Height
        End With
     
        Range("A" & i) = 160 + CInt(Rnd * 95)
        Range("B" & i) = 160 + CInt(Rnd * 95)
        Range("C" & i) = 160 + CInt(Rnd * 95)
     
        red = CInt(Range("A" & i).Value)
        green = CInt(Range("B" & i).Value)
        blue = CInt(Range("C" & i).Value)
     
        With ActiveSheet.Shapes.AddShape(msoShapeRectangle, L, T, W, H)
        .Fill.ForeColor.RGB = RGB(red, green, blue)
        .Line.Visible = msoFalse
        End With
     
        Range("F" & i).Interior.Color = RGB(red, green, blue)
    Next
     
    End Sub
    Tu constateras une différence entre la colonne F et H.
    Dans la colonne F la couleur directement insérée dans la cellule
    Dans la colonne H la couleur est insérée dans une forme, la forme acceptant une palette de couleur plus élaborée qu'une cellule.

    Etant daltonien......peux-tu me dire si tu obtiens les couleurs souhaitées ?
    LES FAQ OFFICE - LES COURS OFFICE - LES COURS EXCEL - LES LIVRES OFFICE - SOURCES VBA - ATELIER BRICOLAGE VBA

    Lorsque votre problème est solutionné, pensez à le signaler en cliquant sur le bouton au bas de la discussion.

  5. #5
    Membre habitué
    Homme Profil pro
    R&D laboratoire
    Inscrit en
    Janvier 2008
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : R&D laboratoire
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2008
    Messages : 83
    Points : 157
    Points
    157
    Par défaut
    Merci à tous deux pour votre aide; j'ai maintenant accès à une multitude de nuances qui ravissent l'aquarelliste que je suis.

    Pour mon application, ces couleurs devraient concerner plusieurs milliers de cellules. Les cellules contiennent chacune l'identification d'un échantillon et une couleur caractérisant les échantillons subissant un même traitement. Comme je ne vois pas très bien comment concilier cette exigence avec l'utilisation de shapes, il me semble que le mieux est de recenser les couleurs les plus dégueu de la palette excel pour leur affecter quelques unes de ces ravissantes teintes fraîches obtenues avec le code ci-dessus...à moins que quelqu'un n'ait une autre idée lumineuse à ce stade de la réflexion?.
    Encore merci, Serge

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

Discussions similaires

  1. [VBA-E] boite de dialogue palette de couleur
    Par virginie2 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 02/04/2017, 15h20
  2. Réponses: 2
    Dernier message: 14/06/2005, 14h36
  3. [MFC] Utilisation d'une palette de couleur
    Par Kevgeii dans le forum MFC
    Réponses: 2
    Dernier message: 01/06/2005, 17h35
  4. [VB.NET] Brush avec couleur définie en RGB
    Par jennings dans le forum Windows Forms
    Réponses: 7
    Dernier message: 31/12/2004, 08h41

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