Remplir certaines lignes en couleur

Bonjour, je vous explique mon problème :

J'ai un fichier excel qui a plusieurs ligne (environ 5000), avec pour colonne A des nom de fichiers, du type : "FICH0001" puis "FICH1545" par exemple etc, cependant il peut y avoir 3 lignes avec le même nom ou encore 5 ou 1 seul, ce n'est jamais la même chose et j'aimerai remplir de la même couleur 1 fiche sur 2 c'est à dire que si il y a 3 lignes pareil puis 1 différente puis 5 autres différentes j'aimerai avoir, les première ligne en rouge par exemple puis la ligne d'après en bleu puis les 5 d'après en rouge et ainsi de suite en ne gardant que 2 couleurs et en intervertissant à chaque nom différent.

Si je ne suis pas claire hésitez pas à me demander.

Cordialement

Zapsalis

Bonjour,

Un exemple avec une colonne ajoutée (qui peut être masquée) Colonne F (Filtre) dans l'exemple

12zapsalis.xlsx (15.06 Ko)

Bonjour M12,

Merci pour ta réponse, cependant je veux faire cela en vba, et sans rajouter de colonne comme tu as fait. Je crée en fait un tableau avec tous les noms de mes fiches puis il y un bouton mise à jour qui me permet de mettre à jour mon tableau en fonction qu'il y est des nouvelles fiches ou certaines qui ne sont plus la. Et donc je veux mettre mon code à la fin qui regarde mon tableau et rempli les lignes en couleurs.

Bonjour Zapsalis, M12, le forum,

Un truc du genre....

9couleur.xlsm (18.54 Ko)

source : http://boisgontierjacques.free.fr/pages_site/Doublons.htm

[EDIT] en voyant la proposition de M12, je constate que je suis hors sujet,

Cordialement,

Bonjour,

Non pas vraiment , je vous joins un classeur pour vous montrer ce que je voudrais (je l'ai fait à la main pas en vba).
J'aimerai que lorsque je clique sur le bouton ça me mette toutes les lignes de mon tableau dans ce même style la.

16test-couleur.xlsx (8.75 Ko)

Bonjour Zapsalis, le forum,

Après avoir pas mal galéré, voici une proposition,

Je me suis largement inspiré d'un code de Yvouille (que je salue,)

Lien : Yvouille

Sub test()
  Dim Première_Ligne As Integer, Dernière_Ligne As Integer, j As Integer

  Application.ScreenUpdating = False

   i = Range("A" & Rows.Count).End(xlUp).Row '.........définit la dernière ligne de la colonne A
   Range("A1:F" & i).Interior.ColorIndex = 3 '.........couleur de la plage de A à F en rouge
   Range("A1").Activate '..............................on démarre en A1

Retour:
    j = j + 1 '........................................on incrémente la ligne de 1

    Première_Ligne = ActiveCell.Row '..................définit la première ligne du bloc de cellule

    Do Until ActiveCell.Offset(1, 0) <> ActiveCell '...boucle tant que cellule du dessous<>cellule active
        If ActiveCell = "" Then Exit Sub '.............sort de la procédure si cellule active est vide
        ActiveCell.Offset(1, 0).Activate '.............active la cellule du dessous
    Loop

    Dernière_Ligne = ActiveCell.Row '..................définit la dernière ligne du bloc de cellules

    If j Mod 2 <> 0 Then '.............................alterne couleur rouge une fois sur deux
         Range(Cells(Première_Ligne, 1), Cells(Dernière_Ligne, 6)).Interior.ColorIndex = 8 '..couleur bleu
    End If

    ActiveCell.Offset(1, 0).Activate '..................active la cellule du dessous

    GoTo Retour '.......................................on retourne au début de la macro pour relancer une boucle
End Sub

[EDIT] Petit bémol, si tu as plusieurs lignes vides consécutives, tu n'obtiendras pas le rendu souhaité,

Cordialement,

Bonjour Zapsalis, M12, Xorsankukai,

En retour ton fichier pour ton besoin.

Les cellules vides gardent leur couleur.

L' exemple est fait sur la colonne C.

Code ci-dessous

Sub ZapColor()
Application.ScreenUpdating = False
'Dernière ligne utilisée
Der = Range("C" & Rows.Count).End(xlUp).Row
Range("C1").Interior.Color = vbRed: Flag = 0
'Boucle de colorisation
For C = 1 To Der
If Cells(C + 1, "C") = "" Then GoTo Fin
If Cells(C + 1, "C") = Cells(C, "C") Then Cells(C + 1, "C").Interior.Color = Cells(C, "C").Interior.Color _
Else Flag = Not Flag: Cells(C + 1, "C").Interior.Color = Choose(Abs(Flag) + 1, vbRed, vbCyan)
Fin:
Next C
Application.ScreenUpdating = True
End Sub

Re,

@ X Cellus: alors là, chapeau,

Je me suis pris la tête tout le matin avec plusieurs essais de boucles imbriquées ! Sans parvenir à gérer les cellules vides,

Peux-tu m'expliquer

Choose(Abs(Flag) + 1, vbRed, vbCyan)

et l'utilisation de Flag ?

Au départ, Flag=0 et le demeure tant que C+1=C ?
Dès que C+1<> C :

Else Flag = Not Flag

valeur de Flag à ce moment ?

En te remerciant,

Cordialement,

A nouveau,

@ Xorsankukai,

J'aurais dû comme toi préciser plus.

Choose(Abs(Flag) + 1, vbRed, vbCyan)

Pour le code ci-dessus. Au départ Flag assimilable à un booléan vaut 0. En fait le choix couleur Rouge qui est celle de la 1ière cellule de la colonne.

Tant que la cellule supérieure est identique à la cellule en cours alors elle garde la couleur de celle-ci. Sinon le Not Flag inverse la valeur du Flag. Celui passe à -1.

Et le choix (choose) sera donc par l'Abs = 1. En lui ajoutant 1 cela vaut deux et c'est la couleur vbCyan qui est ciblée pour la cellule supérieure.

Au prochain tour soit les cellules comparées sont indentiques et le Flag ne change pas. Sinon il change et passe à 0. Et là c'est la couleur vbRed qui sera choisi car 0 + 1=1.

Re,

X Cellus,

Un grand merci pour tes explications, , je pense avoir compris le principe.

Cela va m'être bien utile et m'évitera bien des prises de tête à l'avenir,

A bientôt sur le forum,

Amicalement,

Suite,

Super, Xorsankukai,

Je t'évite l'aspirine les matins studieux.

A plus aussi et merci pour tes appréciations.

Amicalement.

Bonjour,

Merci beaucoup à vous : X Cellus, Xorsankukai, pour votre aide.

Je n'avais malheureusement pas pu vous répondre avant.

Le corde marche effectivement parfaitement et je m'en sert actuellement.

Encore merci.

Zapsalis.

Rechercher des sujets similaires à "remplir certaines lignes couleur"