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!

4 réponses

  1. 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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
    2. 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
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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