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 :

Mise en forme conditionnelle des cellules


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 10
    Par défaut Mise en forme conditionnelle des cellules
    Bonjour,

    Je voudrais à l'aide d'une macro remplir d'une couleur (random) les cellules identiques pour améliorer la lisibilité de mes données.

    En gros, mon fichier est une liste de client qui recense leurs actions , donc ils peuvent apparaitre plusieurs fois. La colonne A contient leur ID unique, et c'est dans cette colonne que je veux trier dans l'ordre croissant (c'est fait), puis colorier les cases d'une couleur différente pour chaque ID.

    D'habitude j'essaie d'enregistrer une macro pour ensuite exploiter le code généré, mais j'avoue que là je sèche un peu.

    Merci d'avance

  2. #2
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2021
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2021
    Messages : 10
    Par défaut
    J'ai trouvé une solution dans un forum en anglais:

    https://www.ozgrid.com/forum/index.p...ows-by-groups/

  3. #3
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à toi, Bonjour au Forum,

    (Désolé pour cette absence. Débordé)

    Le code, au demeurant effectif, date de 2012.

    Si l'on considère, en 2021, travailler avec des tables de données (Tableaux Structurés)

    Sauf erreur, ou du moins sur Office 2016, les références structurées ne peuvent pas intégrer une formule relative à une mise en forme conditionnelle.

    La gestion peut s'effectuer selon le processus suivant:

    2 Tableaux
    1 - les données
    2 - les composants couleurs (Byte) Rouge (Red), Vert (Green) et Bleu (Blue) propres à chaque clé (ici le nom)

    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
    Option Explicit
     
    Public Sub Couleurs_tablo()
     
    Dim c As Range
    Dim n As Long, eq As Long
    Dim lerouge As Byte, levert As Byte, lebleu As Byte
     
    n = 0
     
    With Range("T_Données").ListObject
            .DataBodyRange.Interior.Color = RGB(255, 255, 255)
            For Each c In .ListColumns("nom").DataBodyRange
                    n = n + 1
                    eq = Evaluate("=IFERROR(MATCH(""" & c.Value & """,T_Couleurs[nom],0),0)")
                    If eq > 0 Then
                            lerouge = Range("T_Couleurs[rouge]")(eq).Value
                            levert = Range("T_Couleurs[vert]")(eq).Value
                            lebleu = Range("T_Couleurs[bleu]")(eq).Value
                            .ListRows(n).Range.Interior.Color = RGB(lerouge, levert, lebleu)
                    End If
            Next c
    End With
     
    End Sub
    Illustration:

    Nom : Couleurs_20210528.JPG
Affichages : 196
Taille : 33,2 Ko

    Au demeurant, la gestion de ces mises en formes serait facilitée par l'information directe de chaque composant au sein du tableau utilitaire (Par exemple, en remplaçant 35 par 249 pour le composant rouge de michel)

    Pour information, les composants couleurs sont des nombres entiers avec pour bornes 0 et 255.
    Soit 256 valeurs possibles (2 puissance 8)
    La fonction RGB (pour Red Green Blue) renvoie un entier Long
    De mémoire
    RGB = R*(256^0) + G*(256^1) + B*(256^2)

  4. #4
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 023
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 023
    Par défaut
    Pour compléter les explications de Marcel :
    "Chaque couleur est constituée d'un indice rouge, vert, bleu compris entre 0 et 255, l'équivalent de nos couleurs
    primaires en peinture.
    Cela permet de représenter une palette de 16 777 216 couleurs, allant du noir (0, 0, 0) au blanc (255, 255, 255).
    Le numéro d'une couleur est obtenu par la formule : rouge + (vert x 256) + (bleu x 256²).
    Inversement chaque indice peut être retrouvé d'après le numéro d'une couleur par la formule : rouge = Int(Couleur
    Mod 256) ; vert = Int((Couleur Mod 65536) / 256) ; bleu = Int(Couleur / 65536).
    Ainsi la couleur 525 571 (3, 5, 8) est très proche de la couleur 0 (0, 0, 0) car leurs indices sont proches. Ce n'est pas intuitif lorsque l'on compare l'écart entre leurs numéros de couleur. C'est plus causant en exprimant la couleur 525 571 en pourcentage : elle est composée de 1,18 % de rouge, 1,96 % de vert, 3,14 % de bleu. Pour l'œil humain cela ressemble bigrement à du noir.
    Inversement, la couleur 255 (255, 0, 0) est un rouge vif, très différent du noir (0, 0, 0) numéro 0."

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    Un tutoriel intéressant a été rédigé par Michel.

    De plus, le fichier joint comporte une fonction qui retourne les équivalences RGB - Héxa

    Notamment, le survol de la souris sur un document fait apparaître les composantes de chaque couleur et sa valeur Héxa.

    Cet utilitaire, que j'utilise encore aujourd'hui, permet par exemple de respecter les chartes graphiques d'une société.

    Bonne semaine à tous.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 10/06/2014, 12h18
  2. Mise en forme conditionnelle si cellule égale 0
    Par Phixidor dans le forum Excel
    Réponses: 5
    Dernier message: 03/03/2013, 23h18
  3. Réponses: 3
    Dernier message: 11/02/2012, 09h46
  4. [XL-2007] Mise en forme conditionnelle de cellules
    Par Fred4345 dans le forum Excel
    Réponses: 9
    Dernier message: 08/02/2012, 22h59
  5. Mise en forme conditionnelle des données d'un graphique
    Par Lost_in_VBA dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/07/2011, 13h44

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