Mise en forme conditionnelle Excell 2003

Résolu/Fermé
anso - 9 mars 2009 à 10:35
 anso - 9 mars 2009 à 11:53
Bonjour,

Voici mon problème: j'aimerais surligner des maximums et des minimums relatifs et absolus dans mon tableau.
Pour ce faire, je demande de surligner en bleu le maximum de différents sous-groupes (et en rouge le minimum). Puis, j'aimerais souligner et mettre en gras le maximum et le minumum absolu (c'est-à-dire pour l'ensemble du tableau).

Le problème est que cela ne veut pas se faire simultanément (j'ai soit tous les max et min relatifs soit le max absolu, mais jamais les deux ensembles).

Je ne sais pas si j'ai été claire, mais en code VBA (le but est de faire une macro que je puisse utiliser pour différents tableaux de même format), voici ce que ça donne:

Sub Maxmin ( )

Range("D8:G10").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D8=MAX($D$8:$G$10)"
Selection.FormatConditions(1).Interior.ColorIndex = 23
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D8=MIN($D$8:$G$10)"
Selection.FormatConditions(2).Interior.ColorIndex = 17

Range("D13:G15").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D13=MAX($D$13:$G$15)"
Selection.FormatConditions(1).Interior.ColorIndex = 23
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D13=MIN($D$13:$G$15)"
Selection.FormatConditions(2).Interior.ColorIndex = 17

Range("D18:G20").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D18=MAX($D$18:$G$20)"
Selection.FormatConditions(1).Interior.ColorIndex = 23
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D18=MIN($D$18:$G$20)"
Selection.FormatConditions(2).Interior.ColorIndex = 17

Range("D23:G25").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D23=MAX($D$23:$G$25)"
Selection.FormatConditions(1).Interior.ColorIndex = 23
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D23=MIN($D$23:$G$25)"
Selection.FormatConditions(2).Interior.ColorIndex = 17

Range("D28:G30").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D28=MAX($D$28:$G$30)"
Selection.FormatConditions(1).Interior.ColorIndex = 23
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D28=MIN($D$28:$G$30)"
Selection.FormatConditions(2).Interior.ColorIndex = 17

Range("D33:G35").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D33=MAX($D$33:$G$35)"
Selection.FormatConditions(1).Interior.ColorIndex = 23
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D33=MIN($D$33:$G$35)"
Selection.FormatConditions(2).Interior.ColorIndex = 17

Range("D38:G40").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D38=MAX($D$38:$G$40)"
Selection.FormatConditions(1).Interior.ColorIndex = 23
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D38=MIN($D$38:$G$40)"
Selection.FormatConditions(2).Interior.ColorIndex = 17

Range("D43:G45").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D43=MAX($D$43:$G$45)"
Selection.FormatConditions(1).Interior.ColorIndex = 23
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D43=MIN($D$43:$G$45)"
Selection.FormatConditions(2).Interior.ColorIndex = 17

Range("D48:G50").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D48=MAX($D$48:$G$50)"
Selection.FormatConditions(1).Interior.ColorIndex = 23
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D48=MIN($D$48:$G$50)"
Selection.FormatConditions(2).Interior.ColorIndex = 17

' Maxmin absolu Macro

Range("D8:G50").Select
Selection.FormatConditions.Delete
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=D8=MAX($D$8:$G$50)"
With Selection.FormatConditions(1).Font
.Bold = True
.Italic = False
.Underline = xlUnderlineStyleDouble
End With
Selection.FormatConditions(1).Interior.ColorIndex = 23
End Sub

Encore merci de votre aide!

Anso

3 réponses

wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 243
9 mars 2009 à 10:43
Bonjour

je ne sais pas si j'ai tout compris, tu cherches des mini maxi sur des plages courtes en un mini maxi sur la totalité de la plage
ce qui fait 4 Format différents Bleu ou rouge, Bleu Gras ou Rouge Gras, avec les format conditionnels je ne crois pas que cela soit possible un fichier avec des exemples est nécessaire pour comprendre avec si possible le résultat escompté..
0
Bonjour,

tu as parfaitement compris. On peut supprimer la condition min absolu afin de ne plus avoir que trois formats, mais je reste avec le problème de ne pas pouvoir exécuter les autres conditions simultanément.

Comment je fais pour vous envoyer mon fichier Excell? (Désolée, mais l'informatique et moi...!)

Merci pour ta réponse.

anso
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 243
9 mars 2009 à 11:01
re:

il y a une autre solution, puisque tu passes par macro, autant tout gérer par macro c'est beaucoup plus simple et provoquer, non pas une MFC mais une Mise ne Forme de la cellule à l'aide de la macro

pour envoyer le fichier tu vase sur ce site : https://www.cjoint.com/
tu cliques le bouton Choisissez un fichier
tu cherches to fichier à joindre et tu le valides
en dessous, creer le lien cjoint
il travaille et t'affiche une nouvelle fenetre avec un lien que tu postes dans ta réponse

@ te lire
0
Voici le lien, j'espère que ça va marcher!

https://www.cjoint.com/?dlleXitmk4

Comme tu le verras dans le fichier, j'ai appliqué la mise en forme uniquement sur la première partie du tableau.
(et le max absolu, qui ne s'affiche pas, se trouve en D43).

Par ailleurs, je ne tiens pas absolument à travailler avec un mise en forme conditionnelle. Si il existe un autre moyen pour y arriver, c'est bon pour moi!

Encore merci pour l'aide!

anso
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 243
9 mars 2009 à 11:36
re:

les MFc etant plus rapide qu'une macro, on va faire les MFC en relatif et la macro pour l'absolu
on va se compliquer un peu les choser pour se les faciliter par la suite

dans ton fichier, tu sélectionnes toutes ta feuille : MFC : Supprimer cocher 1, 2, 3 et valider
tu supprimes ensuite la ligne 52 et 53 qui sont vides (pour aligner les 2 tableaux avec les n° de ligne)

ensuite on crée une plage nommée glissante qui se positionnera en fonction de la ligne
Menu Insertion / Nom / Définir
le nom : maplage
fais référence à : mettre la formule suivante : =DECALER(Feuil1!$D$8;ENT((LIGNE()-8)/5)*5;0;3;5)
tu valides
tu selectionnes ensuite ta plage D8:H51
1ere MFC : la formule : =Min(maplage)=D8
2eme MFC : la formule : =Max(maplage)=D8

si tu as supprimé les 2 lignes vides que je t'ai indiquées, ces formules en MFC fonctionneront pour le 2eme tableau

maintenant la macro : pour le Mini et Maxi Absolu
Sub macro1()
    Dim cel As Range
    Range("D8:H51").Font.Bold = False
    For Each cel In Range("D8:H51")
        If cel = Application.WorksheetFunction.Max(Range("D8:H51")) Then
            cel.Font.Bold = True
        End If
        If cel = Application.WorksheetFunction.Min(Range("D8:H51")) Then
            cel.Font.Bold = True
        End If
    Next
End Sub

je n'ai pas fait le 2ème tableau mais il n'y a que les plages à adapter

ton fichier en retour : https://www.cjoint.com/?dllLgxXI3X
0
C'est parfait, merci beaucoup!
0