Etendre une macro à plusieurs lignes et onglets

PA -  
 PA -
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

PA
 
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 24281 Date d'inscription   Statut Contributeur Dernière intervention   1 585
 
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
PA
 
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 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 585
 
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
PA
 
Ca marche nickel!
Merci beaucoup!!
0
yg_be Messages postés 24281 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 585
 
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