Filtrer avec les couleurs mais aussi 3 lignes au dessus

Bonjour à toutes et à tous,

Une partie de la question est dans le titre mais je vais un peu développer.

J'ai une page contenant plus de 5000 lignes (les prochaines pages vont faire vers les 20.000 lignes)
Je fais un tri croissant dans un premier temps afin de déterminer les résultats qui me conviennent et que je met en vert.

Le souci est que cette ligne fait partie d'un bloc de 4 lignes (la ligne en vert et 3 lignes au dessus)

J'aimerais que les 3 lignes du dessus soit également en vert.

Ci-joint un fichier exemple (parce que je sens que c'est pas très clair :) :) :)

1 - Tri de la colonne Net Profit afin de sélectionner certaines des plus grosses valeurs et je les mets en vert.
2 - Tri de la colonne A afin de remettre toutes les données dans l'ordre (chaque donnée est un bloc de 4 lignes)

Est-il possible de mettre en vert les 3 lignes précédent chaque ligne verte afin de faciliter un second tri par la suite ?
Dans le fichier joint en exemple, la L4 est verte donc il faudrait que L1:3 soient vertes également, idem pour les L17:19 puisque L20 verte.
Bien entendu, le prochain fichier, ça pourra être la L8 qui est verte et pas la L4

11wags-vert-01.xlsx (12.03 Ko)

Je vous remercie d'avance pour votre aide et vous souhaite un bon week end.

Bonjour,

Une proposition de mise en forme conditionnelle, en supposant que ce soit les valeurs positives qui t'intéressent, à adapter sinon :

=INDIRECT("B"&PLAFOND(LIGNE()-2;4)+2)>0

Bonjour oyobrans,

Je te remercie pour ta réponse et cette idée.

En fait ce ne sont PAS QUE les valeurs positives qui m'intéressent. Il y a d'autres facteurs, c'est pour cela que je fais la première analyse "à la main" et que les résultats qui m'intéressent, je les mets en vert. Comme j'utilise le filtre, je n'ai que les données de la 4eme ligne du bloc de données.
C'est ensuite en triant la colonne A de 1 à XXX que je retrouve l'ordre des blocs et que je peux donc mettre en vert les 3 autres lignes du bloc.
Mais à la main, quand il y a +/- 75 lignes vertes par 5000 lignes de données, c'est vite casse pied et quand il y aura 20.000 lignes, j'ose à peine imaginer.

Je ne connais pas INDIRECT, j'ai donc regardé sur le support de Office mais même la définition me rend perplexe ;)

Dans ma petite tête, je me suis dit, une macro qui détecte les lignes vertes et qui lors qu'elle rencontre une ligne verte met les 3 lignes du dessus en vert et continue ensuite vers le bas de la feuille.

Maintenant l'idée d'une colonne avec un calcul / fonction, cela me convient aussi.

Je suis content tant que ça me met les bonnes lignes en vert ;)

Merci beaucoup pour vos idées, remarques et aides.

Bonne journée.

Public Sub vert()
    Dim derLigne As Long, i As Long
    derLigne = Cells(Cells.Rows.Count, 2).End(xlUp).Row
    Debug.Print derLigne
    For i = derLigne To 6 Step -4
        If Cells(i, 2).Interior.Color = RGB(0, 176, 80) Then
            Range(Cells(i - 3, 1), Cells(i - 1, 15)).Interior.Color = RGB(0, 176, 80)
        End If
    Next i
End Sub

Merci beaucoup,

Ca fonctionne parfaitement.

Petite question quand même pour ne pas finir totalement idiot ;)

derLigne to 6
Pourquoi 6 ?

Cells(i -1, 15
Pourquoi -15 ?

Merci ;)

6 parce que c'est logiquement sur la ligne 6 que se trouverait ta première valeur à tester (les lignes 3, 4 et 5 étant les trois premières d'un bloc de 4).

15, c'est le numéro de la colonne O, en gros, si une cellule de la colonne B est en vert, on prend le bloc de A à O sur les trois lignes au-dessus, et on colore.

À noter que les variables sont déclarées en Long, mais que des Integer suffisent pour 20 000 lignes, c'est au cas où.

Cordialement.

Bonjour oyobrans,

Je te remercie pour toutes ces explications et surtout pour le code qui correspond parfaitement à mes besoins.

Bonne journée.

Rechercher des sujets similaires à "filtrer couleurs aussi lignes dessus"