MFC pour colorier des ensembles de cellules égales

Bonjour le Forum,

Je soumets un problème apparemment assez simple mais dont je ne trouve pas la solution tout seul ni en cherchant sur le forum.

Pour améliorer la lisibilité, je souhaite créer une MFC qui applique un fond de couleur à des blocs de cellules égales et consécutives dans une colonne (voir fichier joint). Ça je sais faire.

La difficulté, c’est que je voudrais que cette couleur s'applique à 1 bloc de cellule(s) égale(s) sur 2, sinon, Excel va colorier différents blocs consécutifs dans la même couleur, et je n’aurai rien gagné.

J’ai trouvé une solution avec une colonne cachée, où je compare la valeur de la cellule concernée avec celle qui précède et celle qui suit. Mais comme je déplace souvent des lignes, les formules se dérèglent et ça ne marche plus.

Quelqu’un saurait-il m’aider siouplé ?

Merci !

35classeur1.xlsx (8.97 Ko)

Bonjour,

Perso je ne voie que le VBA pour votre cas...

Mais là désolé je n'ai pas le temps, mais je reste en contact pour voir si quelqu'un si atèle...

@ bientôt

LouReeD

Bonjour, gloub, LouRed,le forum,

Un fichier à tester

Amicalement

Pierrot

34classeur1-cp01.xlsm (26.60 Ko)

Bonjour,

Merci beaucoup. Moyennant une petite bidouille dans le code (écriture des adresses de cellules en style A1 plutôt que L1C1), ça marche !

Une question : est-il possible d'exécuter la macro automatiquement (à chaque modification de la feuille concernée) plutôt que de devoir la lancer par un bouton ?

Merci !

Si je puis me permettre, j'avais compris une couleur et du blanc par intermittence... non ?

Et avec cette solution il ne faudrait pas que Lyons se retrouve derrière Lille... sinon même couleur...

J'aurais vu plutôt une boucle indéfinie qui s'arrête à la première cellule vide,

sinon un teste de valeur de la cellule active avec la suivante,

si c'est égal alors la suivante prend index couleur de la cellule active, on incrémente numéro de ligne pour tester cellule suivante

sinon ce n'est pas égal alors

si l'index couleur de la cellule active = rouge alors couleur index cellule suivante = blanc

sinon couleur index cellule suivante = rouge

on incrémente numéro de ligne pour tester cellule suivante

Vous voyez ce que je veux dire ?

@ bientôt

LouReeD

Un peu comme le fichier joint, sauf qu'à la place du rouge c'est du vert...

@ bientôt

LouReeD

23mfc-loureed.xlsm (27.60 Ko)

Bonsoir,

Ça marche nickel, merci beaucoup !

Reste donc ma question subsidiaire : y a-t-il un moyen pour que la macro se lance toute seule (sans bouton) quand un élément de la feuille change ?

PS : (réponse à ta précédente réponse) c'est vrai, c'était ça ma demande initiale (colorier 1 bloc sur 2), mais c'était relativement secondaire, et je ne voulais pas me comporter en client exigeant.

Bonjour,

Vous savez, même les célibataires sur certains site sont exigent, alors ...

Il faudrait mettre la macro sur une procédure événementielle de la feuille : change.

Dès qu'une valeur d'une cellule de la feuille change elle est lancée, mais là je n'ai pas le temps

Ce soir peut-être

@ bientôt

LouReeD

Bonjour,

Il faudrait mettre la macro sur une procédure événementielle de la feuille : change.

这是中国人!(*)

(*) c'est du chinois !

Bonjour à tous,

un essai en MFC :

heu non, il manque qq chose

eric

Edit : ça devrait être bon :

=SI(B4="";0;MOD(SOMMEPROD(--($B$4:B4<>$B$3:B3));2))

eric

22classeur1.xlsx (10.78 Ko)

Bonjour,

Merci eriiic,

Bravo pour ton habileté pour obtenir une MFC sans utiliser de cellules cachées !

Ça marche, mais on retombe sur le problème que j'avais eu avec le même genre de solution : dès que je déplace une ligne (je le fais avec une macro), les formules se dérèglent et la MFC ne marche plus.

Par ailleurs, une question : pourquoi y a-t-il 2 signes moins ( -- ) dans ta formule ?

dès que je déplace une ligne (je le fais avec une macro)

Puisque tu as déjà du vba et bien remet la MFC en vba à la fin de ce code.

pourquoi y a-t-il 2 signes moins ( -- ) dans ta formule ?

Convertir en numérique une matrice de vrai, faux pour en faire la somme.

Vu que c'est suivi d'un mod(), ici j'aurais pu en mettre qu'un seul. Inutile de restaurer le signe.

eric

Re-

Merci pour tes réponses.

J'ai du VBA qui me sert à déplacer une sélection vers le haut ou vers le bas.

(pour ceux que ça intéresse : https://forum.excel-pratique.com/post239974.html#p239974 )

Mais je m'en sers dans toutes mes feuilles, y compris celles ou je n'ai pas besoin ou envie de cette MFC, donc je préfère éviter de mélanger les 2 codes.

Bravo eriiic !!!! Je vous reconnais bien là...

@ bientôt

LouReeD

Merci loureed, mais tu peux me tutoyer

A tester, mettre sur la feuille concernée :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim pl As Range
    If Target.Columns.Count = Columns.Count Then
        'déplacement de lignes, reconstruire MFC sur :
        Set pl = Intersect(Columns("B"), Target.Resize(Target.Rows.Count + 1))
    End If
End Sub

eric

Je peux ? mais VOUS savez très bien que je ne peux pas...

Ceci dit c'est comme vous voulez alors dès ce soir je vais vous vouvoyer...

@ bientôt

LouReeD

Rechercher des sujets similaires à "mfc colorier ensembles egales"