Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 METTRE UNE FORME A DES CELLULES EN FONCTION DU NOMBRE DE REPETITIONS

MGN

XLDnaute Nouveau
Bonjour,
Je souhaite savoir comment faire pour identifier et mettre une forme a des cellules qui se suivent un certain nombre de fois (ex 4) et qui ont la même valeur.
Exp :
la france est présente 4 fois mais pas à suivre, mais l'espagne est présente 5 fois, dont 4 à suivre. Je souhaite mettre de fond rouge les 4 cases espagne qui se suivent.

Avez vous une solution ?

ABCDEFGHIJ
francefrancefranceespagneespagneespagneespagnefranceallemagneespagne
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @MGN, bienvenue sur XLD ,

Comme aucun fichier n'a été fourni, j'ai pondu un code qui n'est ni optimisé, ni sans doute adapté à votre cas réel.

  • on calcule le nombre d'élément de la séquence la plus longue
  • puis on colore toutes les séquences ayant ce nombre d'éléments
  • on alterne les couleurs
  • cliquer sur le bouton Hop!
Le code est dans le module de la feuille "Feuil1".

VB:
Sub colorer()
Dim xrg As Range, t, max, ref, n&, j&, plage As Range, coul
   Set xrg = Range("a1:j1"): t = xrg.Value
   xrg.Interior.ColorIndex = xlColorIndexAutomatic
   max = 0: ref = t(1, 1): n = 1
   For j = 2 To UBound(t, 2)
      If t(1, j) = ref Then
         n = n + 1
      Else
         If n > max Then max = n
         n = 1: ref = t(1, j)
      End If
   Next j
   If n > max Then max = n

   n = 0
   Do
      Set plage = xrg.Offset(, n).Resize(, max)
      If Application.CountIf(plage, plage(1, 1)) = max Then
         plage.Interior.Color = IIf(coul Mod 2 = 0, vbYellow, vbGreen): coul = coul + 1
         n = n + max
      Else
         n = n + 1
      End If
      If n > xrg.Count - 1 Then Exit Do
   Loop
End Sub
 

Pièces jointes

  • MGN - couleur séquence- v1.xlsm
    17.6 KB · Affichages: 7

job75

XLDnaute Barbatruc
Bonjour MGN, mapomme,

Une solution très simple dans le fichier joint :
VB:
Sub Serie_max()
Dim P As Range, ncol%, i%, j%, Q As Range, maxi%, R As Range
Set P = Rows(1).Cells 'ligne à adapter
ncol = Cells(P.Row, Columns.Count).End(xlToLeft).Column + 1 '1 colonne de plus
For i = 1 To ncol - 1
    If P(i) <> "" Then
        For j = i To ncol
            If P(j) <> P(i) Then
                Set Q = Range(P(i), P(j - 1))
                If Q.Count > maxi Then maxi = Q.Count: Set R = Q
                Exit For
            End If
        Next j
    End If
Next i
'---restitution---
Application.ScreenUpdating = False
P.Interior.ColorIndex = xlNone 'RAZ
R.Interior.ColorIndex = 6 'jaune
End Sub
A+
 

Pièces jointes

  • Série max(1).xlsm
    17.2 KB · Affichages: 3

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour @job75 ,

En fait, si j'ai bien compris, le demandeur souhaite:
  • saisir la taille des séquences à formater
  • formater toutes les séquences ayant cette taille
  • quand une séquence a été formatée, on passe à la cellule qui suit la séquence formatée et on réexamine (je crois)

Une autre question du demandeur: comment faire pour mettre le code VBA dans son classeur ?
N'aurais pas tu quelque chose de tout fait et disponible à ce propos ou un lien qui présente comment faire ?
 
Réactions: MGN

MGN

XLDnaute Nouveau
J'aimerai si possible pouvoir changer la taille de la séquence. Peux-tu appliquer cela a plusieurs ligne d'une meme feuille. mais que cela prenne en compte ligne par ligne
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re @MGN,

Il nous faut absolument votre fichier de travail.
Pas le fichier dans sa totalité, mais un extrait reflétant exactement la structure de votre fichier réel. Et bien sûr sans données personnelles pour respecter le RGPD)

Je sentais bien que pour une ligne, ce ne serait pas suffisant.

Quand à un tuto explicatif, je recherche...
 
Réactions: MGN

MGN

XLDnaute Nouveau
 

Pièces jointes

  • DOCUMENT MGN.xlsx
    22.6 KB · Affichages: 1

MGN

XLDnaute Nouveau
@mapomme voici le document , sans informations personnelles
 

Pièces jointes

  • DOCUMENT MGN.xlsx
    22.6 KB · Affichages: 2

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…