Etendre une macro à plusieurs lignes et onglets

Fermé
PA - Modifié le 5 juin 2017 à 15:50
 PA - 6 juin 2017 à 09:50
Bonjour,

J'ai un fichier avec beaucoup d'onglets et je souhaite que sur chacun des onglets, pour chaque ligne de la colonne H à la colonne T, la cellule ayant la valeur la plus faible se colore en vert, celle du milieu en orange et la plus élevée en rouge.

Avec l'aide de l'enregistreur de macro j'ai réussi à avoir le code pour 1 ligne mais je n'arrive pas à l'implémenter sur chaque ligne et chaque onglet (sauf le dernier) de mon fichier

Voici ce que j'ai:
Sub Macro3()
'
'
'

Range("$H5:$T5").Select
Selection.FormatConditions.AddColorScale ColorScaleType:=3
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
xlConditionValueLowestValue
With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
.Color = 8109667
.TintAndShade = 0
End With
Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
xlConditionValuePercentile
Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
.Color = 8711167
.TintAndShade = 0
End With
Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
xlConditionValueHighestValue
With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
.Color = 7039480
.TintAndShade = 0
End With
Next
End Sub

Merci d'avance pour votre aide!

A voir également:

4 réponses

Merci pour ce retour rapide!
Cela marche pour toutes les lignes H5:T5 de chaque onglet mais pas pour toutes les lignes du tableau délimité par les colonnes H:T de chaque onglet...
0
yg_be Messages postés 23401 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 décembre 2024 1 557
5 juin 2017 à 18:06
comment déterminer la première et la dernière ligne du tableau?
y-a-t'il une colonne qui contient des données sur chaque ligne du tableau?
0
La première ligne du tableau sera toujours la 5 et je ne sais pas s'il y a besoin d'identifier la dernière ligne car s'il n'y a pas de valeur, la case restera blanche. cependant, j'ai déjà utilisé la fonction suivante pour déterminer la dernière ligne:
dernligne = Sheets(Name).Range("A36000").End(xlUp).Row

Les colonnes contiennent soit du texte soit des nombres (comparatif de prix)
0
yg_be Messages postés 23401 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 décembre 2024 Ambassadeur 1 557
5 juin 2017 à 18:30
et ainsi?
Option Explicit

Sub Macro3()
'
'
'
Dim fichier As Workbook
Dim onglet As Worksheet
Dim dernligne As Long
Dim ligne As Long

Set fichier = ActiveWorkbook
For Each onglet In fichier.Sheets
    onglet.Select
    dernligne = onglet.Range("H36000").End(xlUp).Row
    For ligne = 5 To dernligne
        onglet.Range("H" & CStr(ligne) & ":T" & CStr(ligne)).Select
        Selection.FormatConditions.AddColorScale ColorScaleType:=3
        Selection.FormatConditions(Selection.FormatConditions.Count). _
            SetFirstPriority
        Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
        xlConditionValueLowestValue
        With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
        .Color = 8109667
        .TintAndShade = 0
        End With
        Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
        xlConditionValuePercentile
        Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
        With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
        .Color = 8711167
        .TintAndShade = 0
        End With
        Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
        xlConditionValueHighestValue
        With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
        .Color = 7039480
        .TintAndShade = 0
        End With
    Next ligne
Next onglet
End Sub
0
Ca marche nickel!
Merci beaucoup!!
0
yg_be Messages postés 23401 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 décembre 2024 Ambassadeur 1 557
5 juin 2017 à 16:54
bonjour, voici ce que je propose:
Option Explicit

Sub Macro3()
'
'
'
Dim fichier As Workbook
Dim onglet As Worksheet
Set fichier = ActiveWorkbook

For Each onglet In fichier.Sheets
    onglet.Select
    onglet.Range("$H5:$T5").Select
    Selection.FormatConditions.AddColorScale ColorScaleType:=3
    Selection.FormatConditions(Selection.FormatConditions.Count). _
        SetFirstPriority
    Selection.FormatConditions(1).ColorScaleCriteria(1).Type = _
    xlConditionValueLowestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(1).FormatColor
    .Color = 8109667
    .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(2).Type = _
    xlConditionValuePercentile
    Selection.FormatConditions(1).ColorScaleCriteria(2).Value = 50
    With Selection.FormatConditions(1).ColorScaleCriteria(2).FormatColor
    .Color = 8711167
    .TintAndShade = 0
    End With
    Selection.FormatConditions(1).ColorScaleCriteria(3).Type = _
    xlConditionValueHighestValue
    With Selection.FormatConditions(1).ColorScaleCriteria(3).FormatColor
    .Color = 7039480
    .TintAndShade = 0
    End With
Next onglet
End Sub
-1