Mise en forme conditionnel pour différencier des code articles

Bonjour à tous,

Je suis à la recherche d'une mise en forme conditionnelle pour une colonne d'un tableau Excel.

Je m'explique : j'ai aujourd'hui un tableau avec énormément de références, environ 2400 ligne, et j'aimerais pouvoir les différencier avec des couleurs. Je pense que 10 couleurs suffiront au maximum.

je ne sais pas si le plus simple et une macro ou une formule de mise en forme conditionnel

Merci à tous :)

Bonjour,

En l'état actuel des informations données, le plus simple c'est une baguette magique.

L'autre solution serait une boule de cristal, pour essayer de deviner quel type de données tu as et selon quel(s) critère(s) tu veux les différencier. Mais à titre perso je crois plus en la baguette magique qu'en la boule de cristal.

Bonjour Augusto, le forum,

Hello 21Formatic ,

Vois si ceci peut t'aider...à adapter...

15classeur1.xlsm (18.91 Ko)

Cordialement,

Hello xorsankukai,

Merci beaucoup de ton aide, c'est exactement ce que je cherche, il faut juste que l'adapte pour la colonne D à la place de la A,

Avec cela j'intégrerai le bouton sur ma feuille Excel directement.

Bonjour à tous,

Juste en passant, @xorsankukai il faut prendre l'habitude de placer Option Explicit en entête de module.

Cela permetra d'éviter de déclarer dico As Object et d'utiliser mondico plus bas, ici cela n'a pas de conséquence mais sur un autre code cela peut être différent. idem pour nocoul qui n'est pas définit.

Sub Colorier_ref()
 Dim c As Range  '.....déclaration de c(cellule)
 Dim couleurs  '.......déclaration du tableau couleurs
 Dim dico As Object '..déclare le dictionnaire dico

 ' Ce code colore chaque groupe
 ' les couleurs choisies sont toutes des couleurs claires pour permettre _
   de lire facilement les données malgré les fonds des cellules coloriés

 couleurs = Array(4, 8, 15, 17, 19, 20, 22, 24, 26, 27, 28, 33, 34, 35, 36, _
            37, 38, 39, 40, 42, 43, 44, 45, 46, , 48, 50) 'tableau contenant les couleurs

  With Sheets("Feuil1") '..............................agit sur cette feuille uniquement
   Set mondico = CreateObject("Scripting.Dictionary") 'définit le dictionnaire

   Application.ScreenUpdating = False 'désactive le rafraichissment de l'écran

   For Each c In .ListObjects(1).ListColumns(1).DataBodyRange 'boucle sur chaque cellule de la colonne A
    If c <> "" Then mondico.Item(c.Value) = mondico.Item(c.Value) + 1 'si c <> vide, on l'ajoute au dico
   Next c

   For Each c In .ListObjects(1).ListColumns(1).DataBodyRange 'boucle sur chaque cellule de la colonne A
   'si c <>"" ,on définit la couleur en fonction de la correspondance de c dans le tableau de couleurs
    If c <> "" Then nocoul = (Application.Match(c.Value, mondico.keys, 0)) Mod UBound(couleurs)
     c.EntireRow.Resize(, 5).Interior.ColorIndex = couleurs(nocoul) 'on colorie les cellules (5 colonnes, à adapter)
     'le changement de couleur s'effectuera lorsque la valeur en colonne A changera _
       si vide, on conserve la couleur
   Next c
  End With
End Sub

@Periera sais-tu adapter le code pour que cela prenne en compte la colonne "D" ?

Bonjour Jean-Paul,

Non du tout, je souhaiterais ajouter un bouton sur ma feuille directement.

c'est pour la colonne C, je viens de relire que je m'était tromper dans ma demande du dessus...

Cordialement.

Re,

Non du tout, je souhaiterais ajouter un bouton sur ma feuille directement.

@xorsankukai t'a donné un bon début que tu pourras adapter au fichier, le mieux serait de nous fournir ce fichier anonymisé, afin que l'on puisse adapter au mieux le code.

Jean-Paul,

Voici le fichier vierge, je souhaiterais intégrer le bouton sur la feuille "stock Par Région".

Merci à toi. :)

Re,


Bonjour Jean-Paul, merci pour tes remarques, je ne pratique plus guère, je suis un peu rouillé et loin d'être un pro


@Augusto, évite les MP, tu te prives de réponses plus pertinentes que la mienne, néanmoins voici une proposition de code pour le fichier que tu m'as posté:

Option Explicit

Sub Colorier_ref()
 Dim c As Range  '......déclaration de c(cellule)
 Dim couleurs  '........déclaration du tableau couleurs
 Dim mondico As Object 'déclare le dictionnaire dico
 Dim nocoul
 Dim dl As Long
 ' Ce code colore chaque groupe
 ' les couleurs choisies sont toutes des couleurs claires pour permettre _
   de lire facilement les données malgré les fonds des cellules coloriés

 couleurs = Array(4, 8, 15, 17, 19, 20, 22, 24, 26, 27, 28, 33, 34, 35, 36, _
            37, 38, 39, 40, 42, 43, 44, 45, 46, , 48, 50) 'tableau contenant les couleurs

  With Sheets("Stock Par Région") '..............................agit sur cette feuille uniquement
   dl = .Range("A" & Rows.Count).End(xlUp).Row '.................dernière ligne de la feuille colonne A
   Set mondico = CreateObject("Scripting.Dictionary") '..........définit le dictionnaire
MsgBox dl
   Application.ScreenUpdating = False '..........................désactive le rafraichissment de l'écran

   For Each c In .Range("C4:C" & dl) '...........................boucle sur chaque cellule de la colonne C
    If c <> "" Then mondico.Item(c.Value) = mondico.Item(c.Value) + 1 'si c <> vide, on l'ajoute au dico
   Next c

   For Each c In .Range("C4:C" & dl) 'boucle sur chaque cellule de la colonne C
   'si c <>"" ,on définit la couleur en fonction de la correspondance de c dans le tableau de couleurs
    If c <> "" Then nocoul = (Application.Match(c.Value, mondico.keys, 0)) Mod UBound(couleurs)
     c.EntireRow.Resize(, 7).Interior.ColorIndex = couleurs(nocoul) 'on colorie les cellules (7 colonnes, à adapter)
     'le changement de couleur s'effectuera lorsque la valeur en colonne D changera si vide, on conserve la couleur
   Next c
  End With
End Sub

Cordialement,

Merci beaucoup Cela fonctionne parfaitement..

Merci à tous

Rechercher des sujets similaires à "mise forme conditionnel differencier code articles"