Etendre une macro à plusieurs lignes et onglets
PA
-
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!
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
-
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...-
-
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)
-
-
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 -
-
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