Mise en forme conditionnelle avec formule

C@thy

XLDnaute Barbatruc
Bonjour le fofo,

j'ai réussi à faire une mfc qui me repère les lignes dont la colonne E contient plusieurs fois une chaine de caractères (nommée chaine) dans la même cellule. Je colore en jaune la colonne B, jusque là c'est parfait... (exemple joint)

mais, C@thy étant toujours C@thy (on ne change pas les rayures du zèbre...:rolleyes:), il m'en faut encore un peu plus:eek:,
à savoir que j'aimerais mettre aussi en jaune les autres valeurs de la colonne B qui sont égales à la valeur mise en jaune quelle que soit la valeur de la colonne A... (donc tous les codes identiques en B à celui peint en jaune)...

Est-ce possible???

Question subsidiaire, liée :

il va me falloir refaire cette opération pour plusieurs chaines de caractères différentes, ne vaut-il pas mieux écrire une ch'tite macro qui demanderait la chaîne à chaque fois???*

Un très grand Merci pour votre aide.

Bises​
 

Pièces jointes

  • mfc test.xlsx
    9.9 KB · Affichages: 128
Dernière édition:

job75

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Re,

Il est peut-être bon que je précise une chose, si l'on n'a pas bien compris.

La formule de la MFC :

Code:
=OU(($B1=$B$1:$B$12)*ESTNUM(CHERCHE($I$1&"*"&$I$1;$E$1:$E$12)))
est une formule matricielle.

Mais dans une MFC (comme dans un nom défini) pas besoin de valider pas Ctrl+Maj+Entrée :rolleyes:

A+
 

herve62

XLDnaute Barbatruc
Supporter XLD
Re : ise en forme conditionnelle avec formule

Je joins ce que j'ai commencé à faire
Dans mon appli cela servait à contrôler et compter des dates dans des cellules de couleurs , en formules à la main ???
il aurait fallu ...euh !!!! donc il fallait passer par VBA ( et comme j'aime bien )
en Debug ce que j'ai remarqué c'est dans la fonction CouleurMFC ,
Select Case LoMFC.Operator qui provoque une erreur 1004 ( j'ai oté Resume next)
dans l'autre fichier ca va ; mais je ne maîtrise pas totalement cette fonction
Là je cherchais à mettre en jaune une case en blanc SI elle avait le même contenu qu'une en jaune
 

Pièces jointes

  • Test_MFC.xls
    43 KB · Affichages: 99
  • Test_MFC.xls
    43 KB · Affichages: 102
  • Test_MFC.xls
    43 KB · Affichages: 103

job75

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Re,

Une solution VBA pour ceux qui aiment ça :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B:B,E:E,I1]) Is Nothing Then Exit Sub
[B:B].Interior.ColorIndex = xlNone 'RAZ
If [I1] = "" Then Exit Sub
Dim P As Range, x$, c1 As Range, y, c2 As Range
Set P = Range("B1", Range("B" & Rows.Count).End(xlUp))
x = "*" & [I1] & "*" & [I1] & "*"
Application.ScreenUpdating = False
For Each c1 In P
  If Cells(c1.Row, 5) Like x Then
    y = c1
    For Each c2 In P
      If c2 = y Then c2.Interior.ColorIndex = 6 'jaune
    Next
  End If
Next
End Sub
Fichier joint.

A+
 

Pièces jointes

  • mfc test par VBA(1).xlsm
    19 KB · Affichages: 44

TooFatBoy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Il est peut-être bon que je précise une chose, si l'on n'a pas bien compris.

La formule de la MFC :

Code:
=OU(($B1=$B$1:$B$12)*ESTNUM(CHERCHE($I$1&"*"&$I$1;$E$1:$E$12)))
est une formule matricielle.

Mais dans une MFC (comme dans un nom défini) pas besoin de valider pas Ctrl+Maj+Entrée :rolleyes:
Merci, je ne savais pas ça. :)



Quant au fonctionnement de OU sur une matrice, testez donc :

=OU({0;0;0;0}) => =OU({FAUX;FAUX;FAUX;FAUX}) => FAUX

=OU({0;0;1;0}) => =OU({FAUX;FAUX;VRAI;FAUX}) => VRAI
Ce qui est plutôt logique vu qu'un OU est un +, de même qu'un ET est un *.



Merci pour toutes ces informations.
 
Dernière édition:

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Merci Gérard.
En fait, c'est exactement la même chose mais... en plus long...:):):)

Du coup, effectivement la macro devient inutile.

Ce que j'imaginais c'est un userform qui demande d'entrer une chaine de caractères et qui demande la couleur
du coup on peut boucler jusqu'à plus soif (en fait jusqu'à ce qu'on sorte par le bouton FIN)
imaginons : saisissez la chaine et choisissez la couleur.
Voulez-vous recommencer oui non? et on aurait plein de chaines avec des couleurs différentes.
Mais je pense qu'on peut aussi faire plein de cellules dans la feuille et plein de mfc pour chacune des chaines dans ces cellules...non?

C@thy
 

job75

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Re C@thy,

Mais je pense qu'on peut aussi faire plein de cellules dans la feuille et plein de mfc pour chacune des chaines dans ces cellules...non?

Oui on peut utiliser plusieurs cellules I1 I2 I3... pilotant des conditions MFC de couleurs différentes.

Mais par MFC ou par macro il y a alors problème si plusieurs conditions sont VRAI sur une même cellule.

A+
 

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

OK compris. Il n'y a pas plusieurs codes différents dans la même cellule.

J'ai essayé de mettre une couleur (du vert) en J1 et de modifier la macro pour qu'au lieu de la couleur 6 il mette la couleur de J1 mais... j'ai toujours du jaune...:rolleyes:

C@thy
 

job75

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Re,

Une macro très simple pour modifier la couleur de la MFC :

Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Address <> "$K$1" Then Exit Sub
Cancel = True
[B1].FormatConditions(1).Interior.Color = Target.Interior.Color
End Sub
Fichier (2).

A+
 

Pièces jointes

  • mfc test(2).xlsm
    17.5 KB · Affichages: 38

C@thy

XLDnaute Barbatruc
Re : ise en forme conditionnelle avec formule

Coucou,

j'ai avancé sur le problème :

j'ai 60000 lignes sur mon fichier (et + par la suite) et quand j'applique la mfc, ça raaaaaame....
ensuite dans une colonne vide je mets la formule de la MFC et j'obtiens VRAI ou FAUX et je fais un filtre sur VRAI et....
ça raaaaaame....

donc je pense que la macro est une meilleure solution...

Bizz

C@thy
 

Discussions similaires

Réponses
12
Affichages
158

Statistiques des forums

Discussions
311 723
Messages
2 081 934
Membres
101 844
dernier inscrit
pktla