Mise en forme conditionnelle par recherche partielle

osiris150

XLDnaute Occasionnel
Bonjour à tous,

J'ai un petit problème pour faire afficher de manière conditionnelle certaines cellules en couleurs. Je vous explique :

Dans le fichier que je vous ai joint, il y a un onglet "EXEMPLE" qui montre ce que je souhaiterais. En fait j'ai une feuille qui s'appelle "Agences" dans laquelle il y a des codes postaux en colonne "A" . J'ai une deuxième feuilles qui s'appelle "Chargement" et qui regroupe des codes postaux en colonne "B".
Je voudrais en fait que tous ceux qui commencent par les deux même premiers chiffres qui sont dans la feuille "Agences" s'affichent en couleurs. Mais il faudrait une couleur différente à chaque fois. Dans la feuille "Agences" il y a 13 codes postaux donc 13 couleurs différentes possible.

Voilà, en espérant que je me suis bien exprimé.
Je vous remercie par avance de votre aide.
Cordialement
Nicolas
 

osiris150

XLDnaute Occasionnel
Re : Mise en forme conditionnelle par recherche partielle

bonjour Dugenou,

En fait ce n'est pas tant la mise en forme de couleurs approprement dite qui me gênerait mais plutôt la recherche partielle.
Donc si quelqu'un avait une solution ça serait très sympa.
Nicolas
 

Dugenou

XLDnaute Barbatruc
Re : Mise en forme conditionnelle par recherche partielle

Bonjour,

la recherche partielle : GAUCHE(b5;2) te donne les deux caractères de gauche de la cellule B5
pour être sur de prendre les deux de gauche sur 5 caractères (Aahh les cp en 01...) : GAUCHE(TEXTE(b5;"00000");2)
Pour la mise en forme : au lieu de prendre "la valeur est", il faut choisir : "la formule est" là tu entres =GAUCHE(TEXTE(b5;"00000");2)="35" et tu choisi ton format.

Cordialement
 

klin89

XLDnaute Accro
Re : Mise en forme conditionnelle par recherche partielle

Bonsoir le forum,
Bonsoir osiris150,

Une autre approche :

VB:
Sub Mise_en_Forme()
  Set mondico = CreateObject("Scripting.Dictionary")
  For Each c In Range("B5", [B65000].End(xlUp))
    If Not IsEmpty(c) Then
      mondico.Item(Left(c.Value, 2)) = mondico.Item(Left(c.Value, 2)) + 1
    End If
  Next c
  For Each c In Range("b5", [B65000].End(xlUp))
    If mondico.Item(Left(c.Value, 2)) > 1 Then
      c.Font.ColorIndex = Application.Match(Left(c.Value, 2), mondico.keys, 0) + 2
      c.Offset(0, 3).Font.ColorIndex = Application.Match(Left(c.Value, 2), mondico.keys, 0) + 2
    End If
  Next c
End Sub

Klin89
 

klin89

XLDnaute Accro
Re : Mise en forme conditionnelle par recherche partielle

re osiris150,

Je reprends :

Dans la feuille "Agences" , figurent 13 codes postaux représentant 10 préfixes différents (les 2 premiers chiffres)
Dans la feuille "chargement" colonne B, tu souhaites colorier les codes postaux dont les préfixes sont identiques mais avec une couleur différente pour chaque préfixe (donc 10 couleurs)
De plus, un code postal (préfixe) n'apparaissant qu'une seul fois ne doit pas être mise en forme.

Ici tu choisis tes couleurs pour chaque préfixe .
A tester.

VB:
Sub Mise_en_Forme()
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range("B5", [B65000].End(xlUp))
  If Len(c) = 5 Then
    mondico.Item(Left(c.Value, 2)) = mondico.Item(Left(c.Value, 2)) + 1
  End If
Next c
For Each c In Range("b5", [B65000].End(xlUp))
  c.Font.ColorIndex = 1
  c.Offset(0, 3).Font.ColorIndex = 1
  If Len(c) = 5 Then
    If mondico.Item(Left(c.Value, 2)) > 1 Then
      Select Case Left(c.Value, 2)
       'Ici préfixe du code postal concerné
        Case 14 'Calvados
          c.Font.ColorIndex = 27
          c.Offset(0, 3).Font.ColorIndex = 27
        Case 29 'Finistère
          c.Font.ColorIndex = 5
          c.Offset(0, 3).Font.ColorIndex = 5
        Case 35
          c.Font.ColorIndex = 3 'rouge
          c.Offset(0, 3).Font.ColorIndex = 3
        Case 37
          c.Font.ColorIndex = 7
          c.Offset(0, 3).Font.ColorIndex = 7
        Case 44
          c.Font.ColorIndex = 8
          c.Offset(0, 3).Font.ColorIndex = 8
        Case 49
          c.Font.ColorIndex = 42 'vert
          c.Offset(0, 3).Font.ColorIndex = 42
        Case 56
          c.Font.ColorIndex = 10
          c.Offset(0, 3).Font.ColorIndex = 10
        Case 72
          c.Font.ColorIndex = 11
          c.Offset(0, 3).Font.ColorIndex = 11
        Case 85
          c.Font.ColorIndex = 12
          c.Offset(0, 3).Font.ColorIndex = 12
        Case 86
          c.Font.ColorIndex = 13
          c.Offset(0, 3).Font.ColorIndex = 13
      End Select
    End If
  End If
Next c
End Sub

Klin89
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 205
Messages
2 086 199
Membres
103 156
dernier inscrit
Ludo94130