Conditionner le format dans une mise en forme conditionnelle ...

Fermé
AlexLeBelge - 3 juin 2021 à 10:45
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 - 3 juin 2021 à 12:57
Bonjour,

Je pense que ce je cherche à faire n'est pas possible mais voyons si quelqu'un connais une astuce sympa ... :p

Admettons par exemple qu'on utilise une simple mise en forme conditionnelle pour colorier les cellules qui contiennent une valeur supérieure ou égale à 1 dans une plage (disons pour l'exemple B1:E5).
Ce que j'aimerais c'est que le format de la mise en forme conditionnelle (couleur de police, couleur de fond, ...) soit pilotée par les cellules A1:A5 (soit que ce soit une copie de la mise en forme soit qu'on y écrive par une chaine de caractère le code couleur à appliquer. L'objectif serait de pouvoir (sans dupliquer la règle et sans aller la modifier à chaque fois) changer la couleur à posteriori .... Des idées ? :D


Configuration: Windows / Firefox 89.0

2 réponses

Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078
Modifié le 3 juin 2021 à 11:04
Bonjour,

Si j'ai bien compris, c'est tout a fait possible mais avec un part de VBA si tu as quelques connaissances

0
Salut Mike.
Quelle est ta solution avec VBA ?
Si c'est simple et élégant pourquoi pas ... après j'avais l'intention de donner la main sur le fichier à d'autres personnes qui aurons peut être du mal si il faut aller remettre le nez dans une macro ^^.
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078
Modifié le 3 juin 2021 à 11:34
Re,

Dans l'exemple en pièce jointe, j'ai créé la plage des couleurs A2:A8 Couleurs
et créé un Champ nommé Couleurs avec cette formule
=DECALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A$1:$A$8))


pour que la mise en forme s'efface si la cellule est vide j'ai créé une MFC toute simple =B2=""
format/Remplissage/Acune couleur
la plage de travail Ma_Plage B2:J17

la part BVA dans les propriétés de la feuille (clic droit sur l'onglet/Visualiser le code)
Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect([Ma_Plage], Target) Is Nothing Then
   On Error Resume Next
   Target.Interior.ColorIndex = [Couleurs].Find(Target, LookAt:=xlWhole).Interior.ColorIndex
   Target.Font.ColorIndex = [Couleurs].Find(Target, LookAt:=xlWhole).Font.ColorIndex
   Target.Font.Bold = [Couleurs].Find(Target, LookAt:=xlWhole).Font.Bold 'Inclus le gras
  End If
End Sub 


en fonction de la saisie dans ta plage de travail, la MFC dupliquera les critères des cellules A2:A8
https://www.cjoint.com/c/KFdjHR3yiCF
0
Sympa !
Merci pour ton temps je vais partir de ça pour essayer d'aboutir à ce que je veux faire. ;)
En effet, ce n'est pas encore tout à fait ça.
Si tu changes la mise en forme d'une de tes cellules dans la plage "couleurs" ça ne va pas actualiser la mise en forme de ce qui a déjà était fait. Par ailleurs si tu inscris des "*" ou des "??" ça se met sur la mise en forme jaune (ça franchement c'est juste pour le faire remarquer : ça ne me pose aucun problème) ;).
0
Mike-31 Messages postés 18318 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 26 avril 2024 5 078 > AlexLeBelge
3 juin 2021 à 12:57
Re,

tu peux remplacer le code VBA par une boucle

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For Each cellule In Range("B2:J17")
On Error Resume Next
   cellule.Interior.ColorIndex = [Couleurs].Find(cellule, LookAt:=xlWhole).Interior.ColorIndex
   cellule.Font.ColorIndex = [Couleurs].Find(cellule, LookAt:=xlWhole).Font.ColorIndex
   cellule.Font.Bold = [Couleurs].Find(cellule, LookAt:=xlWhole).Font.Bold
    Next
End Sub
0