Changer la couleur de fond en fonction de la valeur
Bonsoir,
Je travaille actuellement sur un fichier Excel, qui est un export depuis un logiciel de CAO/DAO (Revit).
Ce fichier possède plusieurs feuilles en fonction des catégories de nomenclature exportée.
Je souhaite modifier la couleur de fond lorsque la valeur de la case est égale à PUHT, Total HT, PUHT (m²) ou PUHT (m3).
Je vous mets le code que j'ai commencé à réaliser :
Sub PUHT_Total()
For i = 3 To Worksheets.Count
For j = 1 To 20
If Sheets(i).Cells(1, j).Value = "PUHT" Or Sheets(i).Cells(1, j).Value = "Total HT" Or Sheets(i).Cells(1, j).Value = "PUHT (m²)" Or Sheets(i).Cells(1, j).Value = "PUHT (m3)" Then
Cells(1, j).Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
End If
Next j
Next i
End SubCe code s’exécute en cliquant sur le bouton "TEST" sur la première feuille nommé "00_Parametre".
Le code est censé partir à partir de la 3ème feuille de la case A1 jusqu’à A20.
S'il rencontre l'une des "Valeurs cible" la case ce colore en vert sinon il ne se passe rien et il passe à la case suivante.
S'il arrive au bout de la boucle il passe à la feuille suivante.
Malheureusement ce code ne fonctionne pas et me colore des cases dans la feuille "00_Parametres" ou lieu de parcourir l'ensemble des feuilles.
Je vous remercie par avance si vous pouvez me venir en aide.
Bonjour,
Cells(1, j).Select
With Selection.Interior- .Select est à éviter tant que c'est possible, ça ralenti pour rien.
- surtout tu n'indiques pas la feuille de travail.
With Sheets(i).Cells(1, j).InteriorEt tu peux imbriquer des With pour alléger le code :
Sub PUHT_Total()
For i = 3 To Worksheets.Count
With Sheets(i)
For j = 1 To 20
With .Cells(1, j)
If .Value = "PUHT" Or .Value = "Total HT" Or .Value = "PUHT (m²)" Or .Value = "PUHT (m3)" Then
With .Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorAccent6
.TintAndShade = 0.799981688894314
.PatternTintAndShade = 0
End With
End If
End With
Next j
End With
Next i
End SubEt si tu n'as pas d'autres "PUHT xx" :
If Left(.Value, 4) = "PUHT" Or .Value = "Total HT" Then suffit
eric
Bonsoir, je vous remercie pour cette aide précieuse je regarde dès demain et vous tient au courant si j'ai quelques problèmes.
Au premier abord cette solution me paraît convenir je vais me pencher dessus pour en comprendre un maximum. Le mieux c'est de comprendre ce que l'on copie pour pouvoir réutiliser certaines astuces plus tard...
Non testé, je n'ai pas ouvert ton fichier.
Possibles retouches en vue... Ca te fera apprendre aussi
eric