Alternance de couleur en fonction de la valeur d'une cellule

27test-macro.xlsx (33.49 Ko)

Bonjour à tous

J'utilise un CRM pour gérer mes données clients, mais je suis amenée régulièrement à faire des exports sous excel de ces données. Les exports qui me sont faits sont pas très sexy, et je dois systématiquement revoir la mise en forme pour les rendre plus pratiques et pouvoir les imprimer facilement.

J'ai eu l'idée de créer une macro pour la remise en forme, et cela fonctionne bien, mais je bute sur un point. Je voudrais créer une alternance de 2 couleurs en fonction des données saisies dans ma colonne A. Tant que la valeur est identique à la cellule du dessous, alors on conserve la même couleur.

Je cherche désespérément dans la mise en forme conditionnelle mais je ne trouve pas.

Merci pour votre aide : )

Bonjour,

Pourquoi s'arracher les cheveux avec une MFC, alors qu'il y a un code VBA qui tourne ?

Une boucle sur la colonne, si valeur cellule = première donnée alors couleur une sinon couleur deux...

@ bientôt

LouReeD

Bonjour

LouReeD a raison...

Mettre sous forme de tableau...

50mfc-alternee.xlsx (29.57 Ko)

Bonjour,

merci pour vos retours, du coup, comment je rajoute ça dans ma macro ?

Bonjour Lorounette, Bonjour LouReeD, Chris

En suivant l'avis de LouReeD, voici un exemple donné en mai

Sub colorer()
Dim depuis As Range, jusque As Range

    blanchir
    nbcol = Cells(1, Columns.Count).End(xlToLeft).Column
    Set depuis = Cells(2, 1): Set jusque = Cells(2, nbcol)
    ancien = Cells(2, 1): n = 1: couleur = 33
    For i = 3 To Cells(Rows.Count, 1).End(xlUp).Row + 1
        nouveau = Cells(i, 1)
        Set jusque = Cells(i, nbcol)
        If nouveau = ancien Then
            n = n + 1
        Else
            Range(depuis, jusque.Offset(-1, 0)).Interior.ColorIndex = couleur
            couleur = IIf(couleur = 40, 33, couleur + 1) ' de index 33 à 40
            Set depuis = Cells(i, 1)
            n = 1
        End If
        ancien = nouveau
    Next

End Sub
Sub blanchir()
    With Cells.Interior
        .Pattern = xlNone
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End Sub

Bonjour,

merci pour vos retours, du coup, comment je rajoute ça dans ma macro ?

tu glisses le module que je t'ai proposé dans ton fichier, et picetou !

il faut quand même actionner la macro !

25test-macro.xlsm (34.61 Ko)

Autre solution très proche de celle de Chris :

MFC

=OU(LIGNE()=2;$A2<>$A1)

Euh non, marche pas...

Oups !

=OU(LIGNE()<=2;$A1<>$A1048576)
15test-macro.xlsx (29.50 Ko)

Re

Non pas plus, sauf si j'ai mal interprété la demande : j'ai compris que le but est de colorer par groupe de numéros identiques

Oui en effet ça marche un peu mais dès qu'il y a une ligne seule....

Enfin c'est ce que j'ai vu lors de tests rapide avant de patler de VBA.

@ bientôt

LouReeD

RE

Ma formule de MFC est plus tordue mais fonctionne.

le code de Steelson suit bien la logique d'alternance (un peu plus arlequin )

Re

Non pas plus, sauf si j'ai mal interprété la demande : j'ai compris que le but est de colorer par groupe de numéros identiques

en fait, dans ma solution plus simple en formule : je "masque" les répétitions, donc seules les nouvelles valeurs s'affichent sur la première ligne du groupe, c'est une autre proposition sinon je ne serais pas intervenu

mais j'aime bien ta solution Chris (pour les données volumineuses cela peut entraîner un peu de latence peut-être)

D'accord, il n'y a pas de mise en couleur d'une même couleur pour une même valeur, seule les premières valeurs sont Visibles, donc s'il y a une couleur de fond, à la suite d'une répétition des deux valeurs on se trouve avec un pavé coloré contenant les deux valeurs ?

Donc le VBA reste la solution...

Mai jj'aurais du m'abstenir d'ajouter ce message car il n'apporte rien de nouveau au sujet, désolé...

@ bientôt

LouReeD

Mai jj'aurais du m'abstenir d'ajouter ce message car il n'apporte rien de nouveau au sujet, désolé...

non non non non c'est une bonne remarque ! j'aurais dû être plus explicite !

en fait c'est tiré d'un autre sujet où il s'agissait de faire de la fusion de cellules qui n'en est pas ! https://www.excel-pratique.com/fr/telechargements/doc-excel/fusionner-mfc-excel-no474 mais ici je m'étais lamentablement planté dans ma première réponse !

Je connais votre sujet/application fusion qui n'en est pas une... Mais dans le cas demandé s'il y a une couleur de cellule ça ne marche pas, enfin je pense, non ?

Le 1 en bleu, le 2 en bleu, mais s'il y a 1-2-1-2-1 alors il y aura du bleu partout puisque la mise en forme affiche la nouvelle donnée, la donnée changeante, du coup une rotation des chiffres provoque une nouvelle donnée, donc une MFC, donc tout est bleu... Il faut donc du VBA...

Mais pas de soucis, "on se connait", non ?

@ bientôt

LouReeD

Donc ... autre solution en "pseudo-"fusion de cellules

11test-macro.xlsx (29.48 Ko)
capture d ecran 16

Par rapport à mon fichier joint :

24test-macro.xlsm (47.71 Ko)

je préfère la version de Stellson qui est plus propre que mes couleurs, mais après il faut peut être choisir d'autre couleur...

@ bientôt

LouReeD

Rechercher des sujets similaires à "alternance couleur fonction valeur"